javascript - Three.js - OrbitControls 不起作用

标签 javascript three.js

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

enter image description here

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

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);                  

};

    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();

最佳答案

您必须在应用程序中显式包含 OrbitControls。例如:

<!-- Import maps polyfill -->
<!-- Remove this when import maps will be widely supported -->
<script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script>
    
<script type="importmap">
    {
        "imports": {
            "three": "https://unpkg.com/three/build/three.module.js",
            "three/addons/": "https://unpkg.com/three/examples/jsm/"
        }
    }
</script>
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

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

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

以及何时使用

controls.update(); // required if controls.enableDamping = true, or if controls.autoRotate = true

https://github.com/mrdoob/three.js/blob/dev/examples/misc_controls_orbit.html

三.js r.147

关于javascript - Three.js - OrbitControls 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884527/

相关文章:

javascript - 待完成的高亮区域

javascript - IE 不更新下拉选择显示

javascript - Javascript 中的父目录文件路径在 Linux 中不起作用

javascript - 添加纹理到 ExtrudeGeometry

javascript - 场景中的工件 Three.js/editor

javascript - 可以在另一个窗口的上下文中调用 Javascript 方法吗?

javascript - 在 JavaScript 中将函数调用的结果存储为变量

javascript - 在 Three.js 中将 glTF 对象设置为不同的层时遇到问题

Three.js 着色器-纹理闪烁

javascript - 特定的 div 未在特定位置呈现