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

时间:2018-02-16 09:37:46

标签: matlab matlab-figure patch matlab-guide perspective

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

当绘制包含面部的3D贴片时(这会使给定视点中的彼此模糊不清)。通过面看不到轴的网格线,但是通过另一面可以看到模糊面的边缘。 下面的图像显示了我的两个矩形的问题:第一个矩形的边缘不应该是第一个!我尝试更改FaceColor和我能找到的所有“Alpha”属性,但没有任何帮助。

Example of the obscured face beeing seen through the other one

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

Edge Visibility Bug

此外,当绘制多个修补程序时,无论采用何种视角,最后定义的修补程序都会显示在其他修补程序的前面。下面的图像显示了这一点。

Visual Stacking Bug - 通常应该看到左侧的柱子,因为它位于架子的前面。

Visual Stacking Bug

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

谷歌搜索让我相信,这个问题可能与渲染器有关,或者是隐藏表面移除/ Z缓冲器/ ....的问题。 我尝试在执行patch-commands之前将渲染器切换到z-buffer,painters并返回opengl,但如果我说实话,我没有看到任何差异,也不知道我是否正确执行了。

请帮我解决这个问题,遗憾的是我无法将代码追溯到它出现的那一刻。也许它只是渲染器的一些设置?或者在图中可视化堆积补丁?

1 个答案:

答案 0 :(得分:0)

Mathworks-Support-Team在这个问题上迅速帮助了我:

  

如果您设置了' SortMethod',那么您所描述的行为是可取的。您的斧头到了#child;'而不是默认设置' depth'。请检查GUIDE GUI中已设置此属性的内容。请参阅以下内容以了解有关该属性的更多信息:

     

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

     

您可以通过在MATLAB提示符下键入以下内容来本地访问同一页面:

     

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

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