1

在 3D Max Studios 中,我记得有一个函数(我不记得函数的名称,抱歉)将 3D 模型一分为二。例如,您创建一个球体,然后在中间切割它,留下 2 个半球体。那么,人体呢?想象一个武士在腹部切开敌人,现在敌人的模型将变成2个模型:一个是从头到胃的上半部分,另一个是从胃到脚的下半部分。此外,为了防止玩家看到切割模型内部,还必须在两个模型中放置一个额外的多边形。(最好在这个多边形中添加血液纹理,给人一种这是体内血液的印象)对不起,如果我的解释很糟糕,你明白我想说什么吗?

在 3D Max Studios 中,我们可以做到以上。现在,在 3D 编程方面,如果我想实现这样的目标,我该怎么做?当然,一种便宜的方法是预先制作切割模型,但这并不现实。

我正在寻找一种将模型实时切割成两部分的方法。这可能吗?

4

2 回答 2

1

这称为裁剪,在任何计算机图形文本中都有用于裁剪多边形的标准算法。

于 2010-10-15T04:49:09.940 回答
1

您需要两个角度来表示 3 维中的“切割角度”。

在数学中使用点和法线可能更容易,定义一个将模型一分为二的平面

然后,您可以确定模型的哪些部分位于平面的一侧,哪些部分位于另一侧。只需将每个点插入您的平面方程,例如

ax + by + cz + d

..如果结果 > 0,则该点在一侧,如果结果 < 0,则在另一侧。

您可以检测与平面相交的三角形(因为一些顶点在一侧,一些在另一侧)并将它们分成多个三角形以保持“切割”笔直,例如

       /\
      / \
  -  -  -  -  -  -  - - (切)
    /\ /\
   / \ / \
  / \/ \
  ------------

(请注意,您只需要在线下方的两个三角形 - 我不是艺术家 :)

然后,如果您将实体模型一分为二,并且需要在创建的孔上“修补”,则需要对分割平面上的点进行细分(或三角化)以在那里创建一个新的多边形。这并不总是容易的,特别是如果多边形不是的。

于 2010-10-15T05:01:33.443 回答