Javascript 如何在不设置其z坐标的情况下为三个.js对象指定z索引?
我正在使用Three.js渲染许多按层排列的2D对象(Javascript 如何在不设置其z坐标的情况下为三个.js对象指定z索引?,javascript,three.js,2d,z-index,Javascript,Three.js,2d,Z Index,我正在使用Three.js渲染许多按层排列的2D对象(Three.PlaneGeometry)。所有这些都应在同一平面上对齐,但有些对象“在前面”或“挡住”其他对象的视线。换句话说,我想模拟CSSz-index属性,但不实际使用z维度,因为这会导致透视问题 Three.js是否有此功能?您需要使用polygonOffset()1)您可以使用对象。renderOrder: 2) 您可以使用ortographic camera并将2D画布渲染为3D对象的纹理: 3) 将renderOrder和渲
Three.PlaneGeometry
)。所有这些都应在同一平面上对齐,但有些对象“在前面”或“挡住”其他对象的视线。换句话说,我想模拟CSSz-index
属性,但不实际使用z
维度,因为这会导致透视问题
Three.js是否有此功能?您需要使用polygonOffset()1)您可以使用
对象。renderOrder
:
2) 您可以使用ortographic camera并将2D画布渲染为3D对象的纹理:
3) 将renderOrder和渲染合并到纹理:
您可以设置网格的
渲染器,但材质。深度测试应首先设置为false
body.material.depthTest = false;
body.renderOrder = 1;
如果你设置了z维,然后使用一个透视相机?@Ale_32:这是一个解决方案,但我需要一个透视相机还有其他原因。用户将能够在3D空间中移动,2D画布应该看起来像一幅平面画。很好的小提琴。但如果我稍微旋转一下相机,它实际上就不起作用了。我会看到所有三个方块的“混合”,而不是一个在另一个前面。但是renderroder
解决方案如果有效的话将是完美的。是的,这就是为什么我提到了第二个选项,可以组合使用:渲染到纹理。我明白了。老实说,这是相当先进的,而且对于我试图解决的问题来说似乎有点过分了。感觉它可能会在将来引起混乱。(虽然,如果没有其他解决方案,我可以考虑。)你能告诉我如何使用这个属性来实现我的目标吗?从文件上看不清楚。(更好的是,也许您可以根据stdob的fiddle在他的答案中创建一个jsiddle。)更新:我想我找到了它(),而且它似乎很有效!如果你能详细说明一下你的答案,我会接受的。谢谢你的样品是正确的。需要使用负值将对象拉近视图。在我的项目中,我对polygonOffsetFactor和polygonOffsetUnit属性都使用了负值。尝试查找opengl资源以了解更多有关此技术的信息。