javascript - 如何在正交渲染中纠正不透明对象的排序顺序

标签 javascript three.js orthographic occlusion

在 THREE.js 中,当通过离轴正交相机查看立方体网格时,一旦相机旋转得足以使对象相互遮挡,则对象的渲染顺序似乎并不基于其位置在空间中,而不是它们被创建的顺序。

我尝试设置 THREE.WebGLRenderer( { antialias: true, sortObjects: false } ); 但这似乎无法解决问题。

这是一个动画 fiddle ,可以看到这种奇怪的埃舍尔式效果:http://jsfiddle.net/rfbvdmxn/2/

这是对象重叠之前的场景: off-axis orthographic rendering

当我继续向同一方向旋转相机并且对象重叠时,您可以看到最后面的对象(从相机的 Angular 来看)最终遮挡了最前面的对象:

enter image description here

这是怎么回事,更重要的是我该如何纠正这个问题?

最佳答案

问题在于您混合了 OrthographicCamera 的构造函数参数 topbottom。如果我更改两个参数的符号,排序看起来没问题。此外,MeshNormalMaterial 现在可以生成正确的视觉输出。

var camera = new THREE.OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, -1000, 2000);

演示:http://jsfiddle.net/rfbvdmxn/42/

关于javascript - 如何在正交渲染中纠正不透明对象的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056646/

相关文章:

javascript - 使用 gRPC-web 调用 google text to speech api

javascript - LABjs 有条件地加载脚本

javascript - 你如何检测 three.js 中粒子系统中的粒子悬停?

javascript - 我可以在目标面部相对坐标中获得射线碰撞位置 (X,Y) 吗?

OpenGL透视投影像素完美绘图

javascript - 返回javascript中正则表达式的每个匹配中第一个捕获的组?

javascript - 如何比较 Javascript 中的字符串数组?

javascript - 去除 collada 对象上的阴影

opengl-es - 无法在 OpenGL 中的 2D(正交)之上绘制 3D(视锥体)

java - 为什么示例作者对正交相机的宽度和高度进行硬编码?(LibGdx Zombie Bird 教程)