给定3D中的2个非交叉多边形,两者都可以通过视图光线Oz看到,确定哪一个在前面

问题描述 投票:0回答:2

我正在构建一个简单的3D模型来绘制3D立方体。在该模型中,在A前面的C前面的B前面没有像A这样的特殊循环情况,或者A的一部分在B的前面但是B的一部分在A的前面。

现在给出2个在3D中不相交的多边形,视图方向上的两个都是可见的(或部分可见的)是Oz。确定哪一个在前面?显然,我无法使用minZ或maxZ。这是一个反例:enter image description here

algorithm math graphics 3d render
2个回答
1
投票

可以在您的情况下定义:

包含给定面的平面定义了两个半空间。如果它的所有四个点都在与眼睛相同的半平面中,则另一个面在前面。

请注意,除非您的模型具有非常特殊/强大的属性,否则没有简单/明显的标准。


0
投票

在存在解决方案的情况下,这是相对简单的:投影中的长方体(右矩形棱柱)位于前面iff(当且仅当如此)其每个可见面都显示为完整的平行四边形。

在上面的例子中,红色长方体在前面;两个绿色面被遮挡(不是平行四边形)。

© www.soinside.com 2019 - 2024. All rights reserved.