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/

10-16 14:21