Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不设置其z坐标的情况下为三个.js对象指定z索引?_Javascript_Three.js_2d_Z Index - Fatal编程技术网

Javascript 如何在不设置其z坐标的情况下为三个.js对象指定z索引?

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.js渲染许多按层排列的2D对象(
Three.PlaneGeometry
)。所有这些都应在同一平面上对齐,但有些对象“在前面”或“挡住”其他对象的视线。换句话说,我想模拟CSS
z-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资源以了解更多有关此技术的信息。