5

是否有任何算法可以将图像投影到非平坦(变形)表面上?

它不会变形太多。它是一个真正的玻璃表面,上面覆盖着优质、耐用的描图纸。我有它的 3 维模型。如何用投影仪对其进行纹理化? 投影

我想用 C\C++\C# 为 Windows 编写一个程序,它能够使用投影仪对 3 维模型给出的任何表面进行纹理化。

我需要一个算法或包含算法的开源库。

4

3 回答 3

3

是的,有一个算法。除非您真的想自己实现它,否则让现有的 3D 图形实现为您完成这项工作可能更容易——OpenGL 和 DirectX 都可以让您将纹理应用到 3D 模型的表面。NeHe 教程包括一个使用 OpenGL 的基本思想示例

于 2010-02-18T15:45:24.857 回答
1

完全不清楚标准纹理库将使用什么算法,而且它可能不是真正的投影,所以如果准确性很重要,你很多人需要自己做这件事(或者对给定的特定算法使用哪些特定算法进行一些研究图书馆)。

基本算法很简单。基本上,您只需要找到从投影点发出的线与您的表面相交的位置。更详细地说:

  1. 决定你的投影点
  2. 确定从您的投影点发出的一堆线,这将为您提供在弯曲表面上所需的分辨率
  3. 确定这些线与您的表面相交的位置(确切的方法将取决于您的表面表示)
  4. 假设您的平面图像放置在投影点和翘曲表面之间的某个位置,并找到线与平面的交点,并将该值分配给翘曲表面上的位置。

另一方面,如果您的表面是用数学方法描述的,则可能有一个简单的方程式,例如,如果您将平面映射到球体,就会出现这种情况。

于 2010-02-18T17:12:47.613 回答
0

它被称为图像失真校正。

于 2010-02-19T13:16:37.700 回答