import { OrbitControls } from "./three.js-master/examples/jsm/controls/OrbitControls.js";
复制代码
使用轨道控制器OrbitControls ,注意传参要求,需要先创建了需要的内容再传才行,反之则则会报错:
Uncaught ReferenceError: Cannot access ‘camera’ before initialization
Uncaught ReferenceError: Cannot access ‘renderer’ before initialization
OrbitControls 官网文档链接:https://threejs.org/docs/index.html?q=Controls#examples/zh/controls/OrbitControls
const controls = new OrbitControls(camera,renderer.domElement);//本文示例
复制代码
完整代码
My first three.js app <script> { "imports": { "three": "./three.js-master/build/three.module.js" } } </script> <script> import * as THREE from "three"; import { OrbitControls } from "./three.js-master/examples/jsm/controls/OrbitControls.js";
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 ); document.body.appendChild( renderer.domElement ); const controls = new OrbitControls(camera,renderer.domElement);//创建控制器 const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); const cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; function animate() { requestAnimationFrame( animate ); cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render( scene, camera ); }; animate(); </script>