在三个js中为网格组创建视口的最佳方法/实践是什么?
在我的情况下,我有THREE.Group
个THREE.Mesh
个实例。我的目标是为该组创建视口,其中网格将可见。
我看到的一个解决方案是使用局部剪切平面。 threejs example
但是我担心我必须为每个THREE.Mesh
材料分配剪裁平面,而不是为THREE.Group
设置一次剪裁平面。
另外,当我移动或旋转THREE.Group
时,我需要重新修剪剪裁平面。
答案 0 :(得分:0)
您可以查看模板缓冲区:
有或没有threejs,原则是相同的。
Three.js没有模板抽象,除非它们最近已经实施。这意味着没有"魔法"说transparent
的属性管理着一大堆webgl状态,你必须亲自管理它。这意味着您必须获取webgl上下文并手动对其执行webgl操作。
有很多方法可以做到这一点。
var myScreenSpaceQuad = new THREE.Mesh( new THREE.PlaneBufferGeometry(2,2,1,1), myQuadShaderMaterial )
var scene1 = new THREE.Scene()
var scene2 = new THREE.Scene()
var sceneMask = new THREE.Scene()
sceneMask.add(myScreenSpaceQuad)
//...
myRenderFunction(){
//gl stencil op
//...
myRenderer.render(myCamera, sceneMask)
//more stencil
//...
myRenderer.render(myCamera, scene1)
//some more stencil...
myRenderer.render(myCamera, scene2)
}
我会尝试写一个有效的例子。对于屏幕空间四元组,您可以查看this。