我正在为我工作的公司开发可视化引擎。我们为飞机外部制作贴花。因此,我们希望能够在我们支持的飞机上可视化我们的贴花。
所以这就是问题所在:在现实生活中,如果我将贴花应用到飞机外部,我会选择一个锚定位置(让我们说在机身左侧的中心),然后从在那里,允许贴花在它认为合适时包裹在飞机机身周围。当然,现在我们正在将2d贴花“图像”映射到3d表面,因此当它包裹在飞机的皮肤周围时会有一些失真,但这是预期的,并且在原始设计中得到了解释。
但是,我试图在3d中重现这个问题。我尝试了以下方法:UV映射 - 展开一个像我们一样复杂的模型将是非常困难的,似乎有点矫枉过正。飞机的侧面接近平坦,因此似乎更简单的“贴花投影”方法会更好地工作
立方体贴图 - 这个贴近,非常接近,但是,当贴花正在晃动到飞机侧面的某些面上时,模型顶部的面将开始映射到顶部立方体图...然后我们得到剪切.....
有什么想法吗?什么是最好的解决方法,我现在还没有设置OpenGL与DirectX,所以两者的答案都可以正常工作。
答案 0 :(得分:5)
也许我错过了一些明显的东西..但你不能只使用projective texture mapping?。
当然,当项目与表面法线之间的角度接近90度时,缺点是可能过度翘曲。
除此之外,为什么紫外线会解开如此糟糕的计划?如果模型的纹理没有扭曲,那将是一个非常简单的解决方案。 Microsoft提供了一个非常有用的工具来解包here。
答案 1 :(得分:1)
我建议使用cylindrical texture map。如果你没有试图划过边缘(即:到机翼等),这应该可以很好地工作。对于机身上的贴花,这应该是完美的,并且实现起来非常简单。
答案 2 :(得分:1)
你想要的是一个匹配测地距离的紫外线坐标。 测地距离基本上是表面上的距离,而不是欧几里德距离,欧氏距离是两点之间的最短距离(如果需要则通过模型)。 制作测地地图的全球解决方案非常复杂。 但是,在当地它可能更容易......
由于您正在将贴花应用于或多或少平坦或至少有点弯曲而没有真正的起重机和凹口的表面,您可以应用一个简单的解决方案。 我不确定它是否能正常工作,但你自己已经考虑过这个解决方案了。
你可以简单地在你的网格物体中取一个顶点,然后用A *或从该顶点前进到所有附近的顶点,同时计算测地距离并以这种方式计算UV。 它不会完全准确,但在你的情况下它可能已经足够好了。
还有更强大的方法可以像使用多维缩放进行展平一样。 如果你的表面拓扑或多或少类似于一个平面,那么它将非常有效。
答案 3 :(得分:0)
我相信这种贴花贴片的最新技术水平是Ryan Schmidt的ExpMap坐标。涉及一些网格操作,但它们并不难实现。以下是SIGGRAPH论文的链接:http://www.unknownroad.com/publications/ExpMapSIGGRAPH06.pdf