正交图片的自动纹理映射

时间:2012-03-23 13:08:13

标签: 3d textures texture-mapping

所以我在我的3D程序中建模了这个对象,我从真实世界中拍摄了这些物体的照片,从所有侧面以及顶视图和底视图,使用绿色屏幕进行分割,使用色度键控技术。

如果没有人为干预,您如何将这些正交图片应用于对象?也就是说,我不想通过使用photoshop自己构建纹理贴图,而是使用图片作为输入,让我的程序为我工作。

甚至可能吗?我知道会有重叠区域的接缝和空白区域,但这是我以后必须解决的第二个问题,如果我设法做第一个 部分:P

我想过立方体贴图但是我的对象必须是反射和镜面反射,有点像金属,旋转物体时反射会发生变化。

此外,我读到将网格划分为数吨小三角形,然后将其中的每一个颜色分别映射到相应图片中的投影颜色,但是如何找出照片中相应的像素?

1 个答案:

答案 0 :(得分:0)

我可以回答其中的一部分我相信。将网格划分为小三角形后,您需要计算这个小三角形投影到与您的照片匹配的视图的矩形上。所以你需要:

  1. 相机的位置和方向
  2. 对象的位置和方向
  3. 对于每个三角形,根据上述坐标计算透视投影
  4. 作为在软件中计算这些点的替代方法,也许您可​​以使用特殊的颜色映射,其中每个三角形都有特定的颜色,使用正确的选项(没有混合)在opengl中进行投影,然后获得opengl的位图。然后位图中的颜色将映射到三角形,以便您可以将图片中的位置映射到单个三角形。

    我意识到这只是一个部分答案,但希望它有用!

    - 编辑 - OpenGL可以使用截屏类截取自己的截图。如果您将其设置为无光照,只需使用glColor3f并将每个迷你三角形设置为其自己的颜色,则屏幕截图将是投影到3D对象的相机上。您为网格中的每个三角形使用单独的不同颜色。然后在屏幕截图中查找该颜色。

    所以:   1.关灯(调整颜色)   2.对于每个三角形网格:      - 将此三角形设置为任意但唯一的颜色   3.捕捉截图   4.对于每个三角形网格:      - 在屏幕截图中找到其颜色的x,y坐标。      - 使用x,y坐标查看照片并选择该网格的颜色      - 将三角形的颜色设置为您找到的颜色

    我不知道这是否足够好 - 显然它将取决于网格的大小。如果它太小,屏幕截图中将不会显示某些颜色。如果它太大,你就不会找到单独的像素颜色,而是你会找到照片的一部分,所以你必须使用该三角形的法线向量将该贴片转换为纹理以应用于该三角形