Three.js + OrbitControls - Uncaught TypeError: Cannot read property 'addEventListener' of undefined
Three.js + OrbitControls - Uncaught TypeError: Cannot read property 'addEventListener' of undefined
我正在尝试在 THREE.js 中使用 OrbitControls
。如果我从下面删除行 let cameraControl = new OrbitControls(camera)
,就不会有错误。但是现在,我有“未捕获的类型错误:无法读取未定义的 属性 'addEventListener'”
我试图将 OrbitControls(camera)
更改为 THREE.OrbitControls(camera)
,然后出现“未捕获的类型错误:THREE.OrbitControls 不是构造函数”。
我试图通过在 "module"
之外使用 <script src=...></script>
而不是 import {OrbitControls} from ...;
来导入 OrbitControls.js
,但是它不起作用,我也尝试移动 let cameraControl = new OrbitControls(camera)
到其他线路,但也不起作用。
有什么解决办法吗?
<body>
<script type="module">
import * as THREE from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/build/three.module.js';
import {OrbitControls} from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
let scene, renderer, camera
let cube
function init() {
scene = new THREE.Scene()
renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 100)
let cameraControl = new OrbitControls(camera)
camera.position.set(10, 10, 10)
camera.lookAt(scene.position)
// cube
cube = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1))
scene.add(cube)
}
function render() {
requestAnimationFrame(render)
renderer.render(scene, camera)
}
init()
render()
</script>
</body>
let cameraControl = new OrbitControls(camera)
始终像这样创建控件:
let cameraControl = new OrbitControls(camera, renderer.domElement);
现在第二个参数是必须的。
我正在尝试在 THREE.js 中使用 OrbitControls
。如果我从下面删除行 let cameraControl = new OrbitControls(camera)
,就不会有错误。但是现在,我有“未捕获的类型错误:无法读取未定义的 属性 'addEventListener'”
我试图将 OrbitControls(camera)
更改为 THREE.OrbitControls(camera)
,然后出现“未捕获的类型错误:THREE.OrbitControls 不是构造函数”。
我试图通过在 "module"
之外使用 <script src=...></script>
而不是 import {OrbitControls} from ...;
来导入 OrbitControls.js
,但是它不起作用,我也尝试移动 let cameraControl = new OrbitControls(camera)
到其他线路,但也不起作用。
有什么解决办法吗?
<body>
<script type="module">
import * as THREE from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/build/three.module.js';
import {OrbitControls} from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
let scene, renderer, camera
let cube
function init() {
scene = new THREE.Scene()
renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 100)
let cameraControl = new OrbitControls(camera)
camera.position.set(10, 10, 10)
camera.lookAt(scene.position)
// cube
cube = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1))
scene.add(cube)
}
function render() {
requestAnimationFrame(render)
renderer.render(scene, camera)
}
init()
render()
</script>
</body>
let cameraControl = new OrbitControls(camera)
始终像这样创建控件:
let cameraControl = new OrbitControls(camera, renderer.domElement);
现在第二个参数是必须的。