我很努力将控件添加到在现有画布中呈现的基本three.js场景中。 HTML代码与ID =视口的一个canvas元素:如何将three.js控件添加到现有画布中
<canvas id="viewport" width="640" height="480"></canvas>
这是我的Javascript代码(不工作):
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(50, 640/480, 1, 1000);
camera.position.y = 150;
camera.position.z = 500;
camera.lookAt(scene.position);
var renderer = new THREE.WebGLRenderer({canvas: viewport, antialias:true});
renderer.setSize(640, 480);
renderer.setClearColor (0xd3d3d3, 1);
var controls = new THREE.OrbitControls(camera, viewport);
mesh = new THREE.Mesh(
new THREE.BoxGeometry(200, 200, 200, 1, 1, 1),
new THREE.MeshBasicMaterial({color : 0xff0000, wireframe: true})
);
scene.add(mesh);
function render() {
//mesh.rotation.y += 0.01;
renderer.render(scene, camera);
}
(function animate() {
requestAnimationFrame(animate);
controls.update();
render();
})();
正如你所看到的,我连接到我的现有画布这里(和它的工作原理):
var renderer = new THREE.WebGLRenderer({canvas: viewport, antialias:true});
当我旋转网格手动(https://codepen.io/anon/pen/rGpqRX),但是当我尝试添加控件,它只是呈现黑屏它呈现完美的罚款。为什么?
函数无限循环渲染 – pokeybit
尝试'var controls = new THREE.OrbitControls(camera,renderer.domElement);' – prisoner849
@ prisoner849在发布我的问题之前,我试过了renderer.domElement。它不会工作,因为在我的html中没有domElement这样的东西。 – Kaneda422