Three.js - OrbitControls不起作用

Ram*_*elm 18 javascript three.js

如果我运行脚本,控制台会显示"THREE.OrbitControls不是构造函数".

在此输入图像描述

我错了什么?我使用了手册中的相同代码.

var controls;
    controls = new THREE.OrbitControls( camera );
    controls.addEventListener( 'change', render );

var render = function () {
    requestAnimationFrame( render );
    renderer.render(scene, camera);
                //Hier wird die Größe des Fensters manipuliert!
    renderer.setSize(window.innerWidth - 20, window.innerHeight - 20);                  
Run Code Online (Sandbox Code Playgroud)

};

    var animate = function () {
        requestAnimationFrame( animate );
        controls.update();                  
    };


var geometry1 = new THREE.BoxGeometry( 10, 10, 10);
var material = new THREE.MeshPhongMaterial( {specular: "#fdfb57", color: "#d8d613", emissive: "#6b6a0d", side: THREE.DoubleSide} );
var box = new THREE.Mesh(geometry1, material);


scene.add(box);   

camera.position.z = 50;


render();   
animate();
Run Code Online (Sandbox Code Playgroud)

Wes*_*ley 19

您必须明确包含OrbitControls在您的申请中.

<script src="js/controls/OrbitControls.js"></script>
Run Code Online (Sandbox Code Playgroud)

另外,请OrbitControls仔细阅读three.js 示例中的注释,以便了解何时使用

controls.addEventListener( 'change', render ); // add this only if there is no animation loop (requestAnimationFrame)
Run Code Online (Sandbox Code Playgroud)

何时使用

controls.update(); // required if controls.enableDamping = true, or if controls.autoRotate = true
Run Code Online (Sandbox Code Playgroud)

http://threejs.org/examples/misc_controls_orbit.html

three.js r.72

  • 是否有OrbitControls.js的CDN URL? (3认同)

Fra*_*fin 10

我在webpack构建three库时遇到了同样的问题

var THREE = require('three')
THREE.OrbitControls === undefined  // true
Run Code Online (Sandbox Code Playgroud)

解决方案,安装第三方轨道控制

npm install three-orbit-controls
Run Code Online (Sandbox Code Playgroud)

详情请访问:https://github.com/mattdesl/three-orbit-controls

然后将上面的代码片段更改为

var THREE = require('three')
var OrbitControls = require('three-orbit-controls')(THREE)
OrbitControls === undefined  // false
Run Code Online (Sandbox Code Playgroud)

好吧,不是最好的例子,但是当应用代替时THREE.OrbitControls,它工作得很好;)

  • 此软件包已合并到主要仓库,不再维护 - 当前文件为https://github.com/mrdoob/three.js/commits/master/examples/js/controls/OrbitControls.js (2认同)

小智 5

https://github.com/nicolaspanel/three-orbitcontrols-ts

npm install --save three-orbitcontrols-ts
import { OrbitControls } from 'three-orbitcontrols-ts'
Run Code Online (Sandbox Code Playgroud)

orbitcontrols 应该分开安装在角度,这个问题困扰了我几天。