你能分享三个场景之间的网格吗?

时间:2012-08-01 15:49:31

标签: javascript three.js

是否可以在场景之间共享网格物体或几何体?

我有多个场景应该相同,大,网格,但当我尝试在它们之间共享网格时,我得到WebGL上下文错误。我怀疑在网格或几何体添加到场景时会在网格或几何体上设置一些变量,从而防止它们在另一个场景中重复使用。

编辑:

更具体地说,我正在尝试共享在不同场景之间加载了JSONLoader的几何体。即在这个例子中,'apps'是一个包含场景的应用程序数组:

var loader = new THREE.JSONLoader();
loader.load('obj/tree/tree.js', function(geometry) {
    apps.map(function(app) {
        var material = new THREE.MeshBasicMaterial({color: 0xff0000, opacity: 1.0}); 
        var mesh = new THREE.Mesh(geometry, geometry.materials[0]);
        app.scene.add(mesh);
    });
});

完整来源:https://github.com/bjnortier/three.js/blob/multiple_canvasses_with_json_loader/examples/webgl_multiple_canvases_grid.html

此示例生成WebGL错误:

WebGL:INVALID_OPERATION:useProgram:不是来自此上下文的对象
WebGL:INVALID_OPERATION:uniformMatrix4fv:位置不是来自当前程序
WebGL:INVALID_OPERATION:uniform3f:不适用于当前程序的位置
WebGL:INVALID_OPERATION:uniform1f:不适用于当前程序的位置
等...

1 个答案:

答案 0 :(得分:13)

您可以沿不同的场景共享几何体 您无法在不同的场景中共享网格 您不能沿着不同的渲染器(尚)共享几何/网格/场景。