以下是用Vue3 setup语法糖封装一个初始化three.js的组件的示例代码:

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

<script>
import { ref, onMounted } from 'vue';
import * as THREE from 'three';

export default {
  setup() {
    const container = ref(null);
    let scene, camera, renderer;

    onMounted(() => {
      // 初始化场景
      scene = new THREE.Scene();
      // 初始化相机
      camera = new THREE.PerspectiveCamera(75, container.value.clientWidth / container.value.clientHeight, 0.1, 1000);
      camera.position.z = 5;
      // 初始化渲染器
      renderer = new THREE.WebGLRenderer({ antialias: true });
      renderer.setSize(container.value.clientWidth, container.value.clientHeight);
      container.value.appendChild(renderer.domElement);

      // 添加一个立方体到场景中
      const geometry = new THREE.BoxGeometry();
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      const cube = new THREE.Mesh(geometry, material);
      scene.add(cube);

      // 渲染场景
      const animate = () => {
        requestAnimationFrame(animate);
        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;
        renderer.render(scene, camera);
      };
      animate();
    });

    return { container };
  },
};
</script>

该组件包含一个引用为“container”的div元素,用于在其中渲染three.js场景。在setup函数中,我们使用Vue3提供的ref和onMounted方法初始化了场景、相机、渲染器,并将渲染器的domElement添加到了container中。我们还添加了一个立方体到场景中,并使用requestAnimationFrame方法不断更新立方体的旋转角度并渲染场景。最后,我们将container引用返回,以便在模板中使用。

用vue3setup语法糖封装一个初始化threejs的组件

原文地址: http://www.cveoy.top/t/topic/bnlv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录