3d 根据切割角度拆分三维模型

3d 根据切割角度拆分三维模型,3d,real-time,polygon,mathematical-optimization,math,3d,Real Time,Polygon,Mathematical Optimization,Math,在3D Max Studio中,我回忆起有一个功能(对不起,我记不起该功能的名称)可以将3D模型一分为二。例如,你创建一个球体,然后在中间切割它,留下2个半球。那么,人体呢?想象一个武士在腹部切割一个敌人,现在敌人的模型将变成两个模型:一个是从头部到腹部的上部,另一个是从腹部到脚的下部。此外,为了防止玩家看到切割模型内部,还必须在两个模型中放置一个额外的多边形。(最好是在这个多边形中添加血液纹理,让人觉得这是体内的血液)对不起,如果我的解释不好,你明白我想说什么吗 在3D Max Studio中

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

在3D Max Studio中,我们可以执行上述操作。现在,就3D编程而言,如果我想实现这样的目标,我必须做什么?当然,一种廉价的方法是预先制作切割模型,但这并不现实

我正在寻找一种方法,将一个模型根据切割角度实时切割成两个。这可能吗?

这被称为在任何计算机图形文本中剪裁多边形的标准算法。

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

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

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

ax + by + cz + d
…如果结果大于0,则点位于一侧,如果结果小于0,则点位于另一侧

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

/\ / \ --------------- (cut) /\ /\ / \ / \ / \/ \ ------------ /\ / \ ---------------(截止) /\ /\ / \ / \ / \/ \ ------------ (注意,线下只需要两个三角形-我不是艺术家:)

然后,如果将实体模型一分为二,并且需要在已创建的孔上“补片”,则需要(或)将分割平面上的点连接到该孔。这并不总是容易的,特别是如果多边形不是