vue3引入three.js渲染3D模型图
warning:
这篇文章距离上次修改已过203天,其中的内容可能已经有所变动。
在Vue 3中引入Three.js来渲染3D模型图,你可以按照以下步骤操作:
- 安装Three.js:
npm install three
- 创建一个Vue组件,并在
mounted
生命周期钩子中初始化Three.js场景、相机、渲染器和3D模型:
<template>
<div ref="threeContainer"></div>
</template>
<script setup>
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
const threeContainer = ref(null);
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
threeContainer.value.appendChild(renderer.domElement);
let controls;
const loader = new GLTFLoader();
loader.load('path/to/your/model.glb', (gltf) => {
scene.add(gltf.scene);
gltf.scene.position.set(0, -2, 0);
animate();
}, undefined, (error) => {
console.error(error);
});
camera.position.z = 5;
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
controls && controls.update();
}
onMounted(() => {
controls = new OrbitControls(camera, renderer.domElement);
animate();
});
</script>
<style>
/* 确保Three.js渲染区域全屏 */
div {
width: 100vw;
height: 100vh;
overflow: hidden;
}
</style>
在这个例子中,我们创建了一个Vue组件,在组件挂载后,使用GLTFLoader
加载一个3D模型(.glb
格式),并将其添加到Three.js的场景中。我们还初始化了相机和渲染器,并使用OrbitControls
来允许用户通过鼠标滚轮和鼠标拖动来控制模型的视图。最后,我们在组件的mounted
生命周期钩子中启动动画循环。
请确保替换path/to/your/model.glb
为你的3D模型文件的实际路径。这个Vue组件可以被嵌入到你的Vue应用的任何页面中,以渲染3D模型。
评论已关闭