在三个js中为一组网格创建视区的最佳方法/实践是什么?
在我的例子中,我有很多THREE.Mesh
实例的THREE.Group
。我的目标是为这个组创建视口,在那里网格将是可见的。
我看到的一种解决方案是使用局部剪裁平面。threejs example
但我担心的是,我必须为每个THREE.Mesh
材质指定剪裁平面,而不是为THREE.Group
设置一次。
另外,当我移动或旋转THREE.Group
时,我需要重新剪切剪裁平面。
发布于 2017-08-30 04:14:38
您可以查看模板缓冲区:
不管有没有the,原则都是一样的。
Three.js没有模板抽象,除非它们是最近实现的。这意味着transparent
没有“神奇”的属性来管理幕后的一堆状态,你必须自己来管理它。这意味着您必须获取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。
https://stackoverflow.com/questions/45941893
复制相似问题