Skip to content
On this page

什么是 Three.js

Three.js 是基于原生 WebGL 封装运行的三维引擎,在所有 WebGL 引擎中,Three.js 是国内文资料最多、使用最广泛的三维引擎。

Three.js 资源

github 官方链接:https://github.com/mrdoob/three.js

官网:https://threejs.org/

中文官网:http://www.webgl3d.cn/Three.js/

B 站学习视频:https://www.bilibili.com/video/BV1Gg411X7FY

Three.js 简单上手

代码示例

html
<div ref="threeDom"></div>

<script setup>
    import { defineComponent, onMounted, ref } from "vue";
    import * as THREE from "three";
    import gsap from "gsap";
    import { OrbitControls } from 'three-orbitcontrols-ts';
    //获取canvas
    const threeDom = ref(null);
    //初始化方法
    function init(instance) {
    //获取对象的高度与宽度
    var height = instance.clientHeight + 400;
    var width = instance.clientWidth - 25;
    //创建场景
    const scene = new THREE.Scene();
    //创建一个摄像机
    const camera = new THREE.PerspectiveCamera(
        75,
        width / height,
        0.1,
        1000
    );
    camera.position.set(0, 0, 10);
    scene.add(camera);
    //创建一个物体
    const geometry = new THREE.BoxGeometry(1, 2, 3);
    const material = new THREE.MeshBasicMaterial({ color: 0xffff00 });
    const cube = new THREE.Mesh(geometry, material);
    scene.add(cube);
    //渲染器
    const reander = new THREE.WebGLRenderer();
    reander.setSize(width, height);
    //渲染器在canvas里面渲染
    instance.append(reander.domElement);
    //创建一个轨道
    const controls = new OrbitControls(camera, reander.domElement);
    controls.enableDamping = true;
    //创建坐标
    const axesHelper = new THREE.AxesHelper(5);
    scene.add(axesHelper);
    //gsap动画库
    gsap.to(cube.position, {
        x: 5,
        duration: 5,
        ease: "power1.inOut",
        repeat: 2,
        yoyo: true,
    });
    //渲染函数
    function render() {
        controls.update();
        reander.render(scene, camera);
        //js原生方法
        requestAnimationFrame(render);
    }
    render();
    }

    onMounted(() => {
        init(threeDom.value);
    });
</script>
<style scoped>
  #threeDom {
    height: 600px;
  }
</style>

Last updated: