Matlab 中补丁的意外出现顺序/视觉堆叠

Unexpected order of appearance / visual stacking of patches in Matlab

我的 MATLAB GUIDE 应用程序似乎有关于 3D 补丁渲染的问题。遗憾的是,我无法在另一个 GUIDE 实例中或仅在 Matlab 图形中重现该问题。

当绘制包含面孔的 3D 面片时(从给定的视点来看,面孔会相互遮挡)。通过面看不到轴的网格线,但通过另一个面可以看到被遮挡面的边缘。 下图显示了我的两个矩形问题:第二个矩形的边缘不应该通过第一个矩形可见!我尝试更改 FaceColor 和我能找到的所有 "Alpha"-Properties,但没有任何帮助。

Example of the obscured face beeing seen through the other one

边缘可见性错误 - 您看不到对象后面的网格线,但每个边缘都是可见的,就好像您可以看到它的内部一样。

此外,当绘制多个面片时,无论从哪个角度看,最后定义的面片都会显示在其他面片的前面。下图显示了这一点。

视觉堆叠错误 - 通常应该可以看到左边的柱子,因为它在架子前面。

通常情况下,在 3D 情况下,如果一个对象在另一个对象的前面被看到,则它更接近观察者的点。然后,当你将对象的视角改变 180 度时,另一个应该在前面,因为它现在更近了。这不会发生在我在 Matlab 应用程序中的图形中。

谷歌搜索让我相信,这个问题可能与渲染器有关,或者是隐藏表面的问题 Removal/Z-Buffer/....
在执行补丁命令之前,我尝试将渲染器切换到 z-buffer、painters 并返回到 opengl,但老实说,我没有看到任何区别,也不知道我是否做对了。

请帮我解决这个问题,遗憾的是我无法将我的代码追溯到它第一次出现的那一刻。也许它只是像渲染器这样的设置?还是图形中补丁的视觉堆叠?

Mathworks-Support-Team 迅速帮助我解决了这个问题:

The behavior which you describe is expected if you have set the 'SortMethod' of your axes to 'childorder' instead of the default setting 'depth'. Please check what this property has been set to in your GUIDE GUI. See the following to learn more about that property:

http://www.mathworks.com/help/releases/R2017b/matlab/ref/matlab.graphics.axis.axes-properties.html#property_d119e55686

You may access the same page locally by typing the following at the MATLAB prompt:

web([docroot, '/matlab/ref/matlab.graphics.axis.axes-properties.html#property_d119e55686'])

我不知道这个 属性 在我的应用程序中是如何改变的,但我很感激它可以通过在 GUIDE 中更改这个 属性 轻松修复。希望这对某人有所帮助!