Importar tres.js en la aplicación reaccionar

Este artículo describe principalmente cómo importar tres.js en la aplicación de reacción y crear ejemplos de demostración.

Representaciones:
inserte la descripción de la imagen aquí

Primero, descargue los tres paquetes a través de npm:
npm i tres --guardar
Luego modifique el componente de inicio en función de lo anterior de la siguiente manera:

import React from 'react';
import * as THREE from 'three';
class Home extends React.Component {
    
    
    // constructor(props) {
    
    
    //     super(props)
    // }
    render() {
    
    
        return (
            <div id='container'></div>
        )
    }
    componentDidMount() {
    
    
        console.log('home componentDidMount')
        const container = document.getElementById('container') //容器
        if(container.childNodes.length > 0){
    
     //清空容器
            let node = document.getElementsByTagName('canvas')[0]
            container.removeChild(node)
        }
        var scene = new THREE.Scene();
        
        /** camera 摄像机视锥体
         *  fov 摄像机视锥体垂直视野角度。
         *  aspect 摄像机视锥体长宽比。
         *  near 摄像机视锥体近端面。
         *  far 摄像机视锥体远端面。
         */
        var camera = new THREE.PerspectiveCamera( 75, 600/300, 0.1, 1000 );
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize( 600, 300 );
        
        //生成的渲染的实例, 这个要放到对应的dom容器里面
        container.appendChild(renderer.domElement);
        /** BoxGeometry 四边形的原始几何类
         * width — X轴上面的宽度,默认值为1。
         * height — Y轴上面的高度,默认值为1。
         * depth — Z轴上面的深度,默认值为1
         */
        var geometry = new THREE.BoxGeometry( 1, 1, 1 );
        
        // 材质
        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();
    }
}
export default Home;
  

Supongo que te gusta

Origin blog.csdn.net/qq_35517283/article/details/129736973
Recomendado
Clasificación