代码之家  ›  专栏  ›  技术社区  ›  Timothy Baldridge

物理逼真的贴花

  •  5
  • Timothy Baldridge  · 技术社区  · 14 年前

    我正在为我工作的公司开发可视化引擎。我们为飞机外部制作贴花。因此,我们希望能够在我们支持的飞机上看到我们的贴花。

    这就是问题所在:在现实生活中,如果我把贴花贴在飞机的外部,我会选择一个固定位置(比如说,在机身左侧的中心),然后从那里开始计算,让贴花在飞机的机身上缠绕。现在,当然,我们正在将一个二维贴花“图像”映射到一个三维表面,这样当它包裹在飞机的蒙皮上时会有一些变形,但这是预期的,并在原始设计中考虑到了。

    不过,我一直在尝试用3D来复制这个。我尝试了以下方法:

    紫外线映射-拆解像我们所拥有的那样复杂的模型将会非常困难,而且看起来有点过分。飞机的侧面接近平面,因此一个简单的“贴花投影”方法似乎会更好地工作。

    立方体映射-这变得非常接近,非常接近,然而,随着贴花在飞机侧面的脸上摆动,在某个点上,模型顶部的脸将开始映射到立方体映射的顶部……然后我们得到剪切……

    有什么想法吗?解决这个问题的最好方法是什么,我现在还没有在OpenGL和DirectX上进行设置,所以这两者的答案都可以。

    4 回复  |  直到 10 年前
        1
  •  5
  •   Goz    14 年前

    也许我遗漏了一些明显的东西……但你不能只用 projective texture mapping? .

    当然,缺点是,当项目和曲面法线之间的角度接近90度时,可能会过度扭曲。

    除此之外,为什么紫外线拆解计划如此糟糕?如果模型的纹理没有扭曲,这将是一个非常简单的解决方案。微软提供了一个非常有用的拆解工具。 here .

        2
  •  1
  •   Reed Copsey    14 年前

    我建议使用 cylindrical texture map . 如果你不想在一条边上绘制地图(例如:在机翼上绘制等),这应该会很好地工作。对于机身上的贴花,这应该是完美的,并且非常容易实现。

        3
  •  1
  •   user1097185    10 年前

    你想要的是一个匹配测地线距离的紫外线坐标。 测地线距离基本上是表面上的距离,而不是欧几里得距离,欧几里得距离是两点之间的最短距离(如果需要,可以通过模型)。 制作测地图的全局解决方案相当复杂。 然而,在本地可能更容易…

    因为你在一个或多或少平坦或至少有点弯曲的表面上使用贴花,而没有真正的起重机和缺口,你可以应用一个简单的解决方案。 我不确定它是否能正常工作,但你已经自己想到了解决办法。

    您可以简单地在网格中取一个顶点,然后在计算测地距离和以这种方式计算UV的同时,从该顶点向所有附近的顶点进行*或行进。 它不会完全准确,但在您的情况下可能足够好。

    还有一些更强大的方法可以做到这一点,比如使用多维缩放进行展平。 如果你的表面的拓扑结构或多或少类似于一个平面,它会很好地工作。

    http://en.wikipedia.org/wiki/Multidimensional_scaling

        4
  •  0
  •   Michael Daum    14 年前

    我相信这种贴花布局的最新技术是RyanSchmidt的expmap坐标。虽然涉及到一些网格操作,但它们并不难实现。这里有一个到siggraph文件的链接: http://www.unknownroad.com/publications/ExpMapSIGGRAPH06.pdf