【问题标题】:Splitting a 3D model with respect to angle of cut根据切割角度分割 3D 模型
【发布时间】:2010-10-15 04:34:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: 3d real-time polygon mathematical-optimization math


    【解决方案1】:

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

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

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

    ax + by + cz + d
    

    ..如果结果> 0,则点在一侧,如果结果

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

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

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

    然后,如果您将实体模型一分为二,并且需要“修补”已创建的孔,则需要将分割平面上的点 tessellate(或 triangulatecreate a new polygon 那里。这并不总是那么容易,特别是如果多边形不是convex

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-06
        • 2015-08-28
        • 2020-09-28
        • 2020-04-09
        • 2020-04-17
        • 2015-10-30
        相关资源
        最近更新 更多