Rumah  >  Artikel  >  hujung hadapan web  >  Cara membuat grafik berputar 3D yang menarik menggunakan Vue dan Canvas

Cara membuat grafik berputar 3D yang menarik menggunakan Vue dan Canvas

WBOY
WBOYasal
2023-07-17 15:42:072381semak imbas

Cara mencipta grafik berputar 3D yang hebat menggunakan Vue dan Canvas

Pengenalan:
Vue dan Canvas ialah dua teknologi bahagian hadapan yang sangat berkuasa, masing-masing pandai mengendalikan pemaparan halaman dan lukisan. Artikel ini akan memperkenalkan cara menggabungkan Vue dan Canvas untuk mencipta kesan grafik berputar 3D yang hebat. Kami akan meneroka cara menggunakan Vue untuk membina struktur halaman asas, dan cara menggunakan Kanvas untuk mencapai kesan lukisan dan putaran grafik 3D. Dengan mempelajari artikel ini, anda akan dapat memahami cara menggunakan Vue dan Canvas untuk mencipta kesan dinamik 3D yang menakjubkan.

Teks:
1 Buat projek Vue dan bina struktur halaman asas
Pertama, kami perlu mencipta projek Vue Jika anda belum memasang Vue CLI, anda boleh memasangnya melalui arahan berikut:

npm install -g @vue/cli

Buat a. Projek Vue dan tukar kepada Direktori projek:

vue create 3d-rotation-graphic
cd 3d-rotation-graphic

Seterusnya, kita perlu memasang beberapa pakej pergantungan yang diperlukan, termasuk perpustakaan Three.js dan Canvas:

npm install three vue-canvas

Buat komponen Vue baharu RotationGraphic.vue dan tentukan asas di dalamnya Struktur halaman: RotationGraphic.vue,并在其中定义基本页面结构:

<template>
  <div>
    <canvas ref="canvas"></canvas>
  </div>
</template>

<script>
import Vue from 'vue';
import { CanvasRenderer } from 'vue-canvas';
import * as THREE from 'three';

Vue.use(CanvasRenderer);

export default {
  name: 'RotationGraphic',
  mounted() {
    this.init();
  },
  methods: {
    init() {
      const canvas = this.$refs.canvas;
      const renderer = new THREE.WebGLRenderer({ canvas });
      // 绘制代码将在下一节中添加
      this.animate();
    },
    animate() {
      // 更新画面的代码将在下一节中添加
    }
  }
};
</script>

<style scoped>
canvas {
  width: 100%;
  height: 100%;
}
</style>

以上代码定义了一个带有一个canvas元素的Vue组件RotationGraphic,并在mounted生命周期钩子中调用init方法来初始化和渲染图形。在下一节中,我们将添加绘制图形和更新画面的代码。

二、在Canvas中绘制3D图形
我们将使用Three.js库中的BoxGeometryMeshBasicMaterial来绘制一个简单的立方体。在init方法中添加以下代码来绘制图形:

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;

renderer.setSize(window.innerWidth, window.innerHeight);

以上代码创建了一个场景对象scene、一个摄像机对象camera和一个立方体对象cube,并将立方体添加到场景中。摄像机的位置被设置为(0, 0, 5),以便我们能够看到整个场景。最后,我们设置了渲染器的大小为窗口的宽度和高度。

三、实现画面的动态更新
为了实现图形的旋转效果,我们将在animate方法中更新立方体的旋转角度,并在每帧中重新渲染场景。使用下面的代码替换animate方法:

animate() {
  requestAnimationFrame(this.animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}

以上代码使用requestAnimationFrame方法在浏览器每一帧中调用animate方法。每一帧中,立方体的x和y方向的旋转角度都增加0.01弧度,并通过渲染器重新渲染场景。

四、在Vue应用中使用3D旋转图形组件
我们将使用RotationGraphic组件来演示3D旋转图形效果。在Vue项目的主组件中使用RotationGraphic组件,修改App.vue文件:

<template>
  <div id="app">
    <RotationGraphic/>
  </div>
</template>

<script>
import RotationGraphic from './components/RotationGraphic.vue';

export default {
  name: 'App',
  components: {
    RotationGraphic
  }
}
</script>

<style>
#app {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f5f5f5;
}
</style>

以上代码在页面中添加了一个id为app的元素,将RotationGraphic组件添加到其中。通过CSS样式我们将页面居中并设置背景颜色。

结论:
通过本文的学习,我们了解了如何结合Vue和Canvas来创建炫酷的3D旋转图形效果。我们在Vue项目中创建了一个名为RotationGraphicrrreee

Kod di atas mentakrifkan komponen Vue RotationGraphic dengan elemen kanvas dan memanggil initdalam mounted cangkuk kitaran hayat >Kaedah untuk memulakan dan menghasilkan grafik. Dalam bahagian seterusnya, kami akan menambah kod untuk melukis graf dan mengemas kini skrin.

2. Lukis grafik 3D dalam Kanvas🎜Kami akan menggunakan BoxGeometry dan MeshBasicMaterial dalam pustaka Three.js untuk melukis kiub ringkas. Tambahkan kod berikut dalam kaedah init untuk melukis grafik: 🎜rrreee🎜Kod di atas mencipta objek pemandangan adegan, objek kamera kamera dan objek Kiub kiub dan tambahkan kiub pada tempat kejadian. Kedudukan kamera ditetapkan kepada (0, 0, 5) supaya kita dapat melihat keseluruhan pemandangan. Akhir sekali, kami menetapkan saiz pemapar kepada lebar dan ketinggian tetingkap. 🎜🎜3 Realisasikan kemas kini dinamik gambar🎜Untuk mencapai kesan putaran grafik, kami akan mengemas kini sudut putaran kubus dalam kaedah animate dan memaparkan semula pemandangan dalam setiap bingkai. Gantikan kaedah animate dengan kod berikut: 🎜rrreee🎜Kod di atas menggunakan kaedah requestAnimationFrame untuk memanggil kaedah animate dalam setiap bingkai pelayar. Setiap bingkai, sudut putaran kubus dalam arah x dan y dinaikkan sebanyak 0.01 radian, dan pemandangan dipaparkan semula melalui pemapar. 🎜🎜4 Menggunakan komponen grafik putaran 3D dalam aplikasi Vue🎜Kami akan menggunakan komponen RotationGraphic untuk menunjukkan kesan grafik putaran 3D. Gunakan komponen RotationGraphic dalam komponen utama projek Vue dan ubah suai fail App.vue: 🎜rrreee🎜Kod di atas menambah id app ke elemen kod> halaman, tambahkan komponen <code>RotationGraphic padanya. Melalui gaya CSS kami memusatkan halaman dan menetapkan warna latar belakang. 🎜🎜Kesimpulan: 🎜Melalui kajian artikel ini, kami mempelajari cara menggabungkan Vue dan Canvas untuk mencipta kesan grafik berputar 3D yang hebat. Kami mencipta komponen bernama RotationGraphic dalam projek Vue, menggunakan Three.js untuk melukis kiub dan mencapai kesan putaran dengan mengemas kini sudut putaran dan pemapar. Saya berharap pengenalan dalam artikel ini dapat membantu anda memahami dan menggunakan teknologi Vue dan Canvas dengan lebih baik untuk mencipta kesan bahagian hadapan yang lebih menakjubkan. 🎜🎜Sampel kod: https://github.com/your-username/3d-rotation-graphic🎜

Atas ialah kandungan terperinci Cara membuat grafik berputar 3D yang menarik menggunakan Vue dan Canvas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn