如何在几分钟内开始使用Vue和Three.js

243 阅读2分钟

大家好,我是itboy。

作为一个开发者,当你看到一些炫酷的效果时,但没有找到一个简单明了的步骤或无从下手时,这篇文章就是写给你的。

开始之前:

确保你已经安装16.0或更高版本的Node.js,熟悉命令行,并了解Vue的基础知识,以及使用项目脚手架工具create-vue

我们的步骤:

  • 创建一个Vue项目
  • 安装依赖Three.js
  • 为Three.js创建Vue组件
  • 导入使用具有Three.js的组件

创建一个Vue项目:

npm init vue@latest

这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示,如果不确定是否要开启某个功能,你可以直接按下回车键选择 No。

进入新创建的文件夹:

cd my-project

安装依赖项:

npm install
npm run dev
  • 如果一切正常,您可以导航到:http://localhost:5173/你会看到一个vue应用程序

安装Three.js:

npm i three

为Three.js创建Vue组件:

在src下components文件夹中创建Three.vue组件,在创建的文件中复制以下代码。

我们在组件里做了什么?

  • 导入Three.js
  • 创建场景
  • 初始化相机
  • 初始化渲染器
  • 使用ref作为Three.js场景的挂载点
  • 初始化立方体模型
  • 沿x/y轴旋转,实现运行动画
import * as THREE from "three";
import { onMounted, ref } from "vue";

let refContent = ref("null");

onMounted(() => {
  var scene = new THREE.Scene();
  var camera = new THREE.PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    1000
  );
  var renderer = new THREE.WebGLRenderer();
  renderer.setSize(window.innerWidth, window.innerHeight);
  // document.body.appendChild( renderer.domElement );
  // 使用ref作为Three.js场景的挂载点,而不是document.body
  refContent.value && refContent.value.appendChild(renderer.domElement);
  var geometry = new THREE.BoxGeometry(111);
  var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
  var cube = new THREE.Mesh(geometry, material);
  scene.add(cube);
  camera.position.z = 5;
  var animate = function () {
    requestAnimationFrame(animate);
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
    renderer.render(scene, camera);
  };
  animate();
});

导入使用具有Three.js的组件:

在打开文件:

/src/App.vue

导入您创建的组件,并在文件的顶部添加:

import Three from './Three';

在应用程序组件中使用您的组件:

<Three />

如果一切如预期,你应该在浏览器中看到以下内容:

感谢您的阅读