在object picking from small three.js viewport中,我提供了一种从小(非全屏)画布中鼠标拾取对象的方法。
但是现在我想显示同一场景的N个不同视图,并且还能够进行对象拾取。
为避免复杂性:-
我宁愿不要在一个画布上有N个视口(根据http://webglsamples.googlecode.com/hg/multiple-views/multiple-views.html)
而且我更喜欢不进行画布复制(按照Display different scenes sharing resources on multiple canvases中gman的不错的方法)。
我正在考虑为每个世界对象创建多个三个网格对象(克隆),为每个场景创建一个克隆:renderer:canvas。
然后,我只需要使克隆的属性保持同步。
还有其他人这样做吗?我是否忽略了任何陷阱?
更新20151202
克隆方法可以正常工作,但最终我使用了答案中提到的多视口多渲染器解决方案(如下)。
如今,我使用一个全屏渲染器,并在一个场景中同时包含多个由多个摄像机提供的视口。
最佳答案
在完全相同的情况下,这对我有用。你能检查一下吗?
var obj = new THREE.Object3D();
function traverseChild( elem ) {
if(elem.children instanceof Array && elem.children.length > 0) {
for(var k in elem.children) {
traverseChild(elem.children[k]);
}
}
if (elem instanceof THREE.Mesh) {
var mesh = new THREE.Mesh(elem.geometry.clone(), elem.material.clone());
mesh.scale.copy(elem.scale);
mesh.rotation.copy(elem.rotation);
mesh.position.copy(elem.position);
obj.add(mesh);
}
}
traverseChild(target);
scene.add(obj);
关于javascript - THREE.js通过对象克隆实现对多个 Canvas 的多个 View 。陷阱?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18670724/