有没有算法将图像投影到非平面上?

时间:2010-02-18 13:26:37

标签: algorithm model 3d projector geometry-surface

是否有将图像投影到非平坦(变形)表面的算法?

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

我想在C \ C ++ \ C#for Windows中编写一个程序,它可以使用投影仪对三维模型给出的任何表面进行纹理化。

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

标准纹理库将使用什么算法并不清楚,它可能不是真正的投影,所以如果准确性很重要,那么你需要自己做很多事情(或者对正在使用的具体算法进行一些研究)对于给定的图书馆。)

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

  1. 决定投射点
  2. 决定从你的投影点发出的一串线,这些线将为你在扭曲的表面上提供所需的分辨率
  3. 确定这些线与曲面相交的位置(确切的方法取决于曲面表示)
  4. 假设您的平面图像位于投影点和翘曲表面之间的某处,并找到该线与平面的交点,并将此值指定给翘曲表面上的位置。
  5. 另一方面,如果用数学方法描述曲面,可能会有一个简单的等式,例如,如果你将一个平面映射到一个球体。

答案 2 :(得分:0)

这称为图像失真校正。