【问题标题】:Unexpected three.js rendering order in r61 vs. r58r61 与 r58 中出现意外的 three.js 渲染顺序
【发布时间】:2013-10-04 19:11:20
【问题描述】:

以下说明了我想为两个平面几何获得的渲染顺序:

http://jsfiddle.net/Axy2F/8/

这在 r58 下可以正常工作,但在 r61 下,无论我如何构建场景图,红色方块都会被遮挡。我不清楚这是否是 r61 中的错误,或者我是否在 r58 中做错了事情,只是碰巧起作用了。

我是否正确地假设 behind.add(child) 应该足以让红色方块在场景图中的靛蓝“下方”出现,并因此呈现在它上面?

如果不是,通过控制场景图的构造(适用于 r61)来建立渲染顺序的正确方法是什么?我想避免明确设置renderDepth。请注意,将 rendered.sortObjects 设置为 false 没有帮助。

【问题讨论】:

    标签: three.js rendering


    【解决方案1】:

    前面的物体是离相机最近的物体。作为一个孩子与它无关。

    您的两个对象的位置为( 0, 0, 0 ),因此它们与相机的距离相同。

    这将导致 z-fighting,CanvasRendererWebGLRenderer 更糟糕。

    更改子元素的位置以将其呈现在前面。例如,

    child.position.z = 1;
    

    仅供参考,r.61 的决胜局规则与 r.58 不同。这就是 r.61 中渲染不同的原因。

    【讨论】:

    • 我的印象是,当有“z-fighting”时,场景图的结构很重要。至少,文档讨论了将事物添加到场景中的顺序。我认为这是指收容结构。但似乎 z 碰撞本质上具有非确定性行为,所以我必须重新考虑我想要做什么。感谢您的澄清。
    猜你喜欢
    • 2016-08-08
    • 2016-09-03
    • 2014-12-18
    • 2019-11-07
    • 2013-04-21
    • 2022-11-04
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    相关资源
    最近更新 更多