从.obj 3d文件中提取相关信息

时间:2016-05-05 03:43:18

标签: graphics 3d file-format .obj wavefront

我从3d扫描仪的扫描中生成了一个.obj文件。但是,我不确定如何解释所有这些数据。我查看了维基百科并了解了.ibj文件的一般结构。我的目标是提取一些有关颜色的信息,我不知道该怎么做。 vt行中的数字代表什么,我如何使用它们来呈现颜色?我的最终目标是扫描一只脚并取消地板"部分"扫描。扫描脚时,地板也是扫描的一部分,我想忽视地板并集中在脚上。这是.obj文件的一小部分: .obj file

1 个答案:

答案 0 :(得分:1)

看起来像 Wavefront obj ASCII文件格式...所以谷歌稍微有点你会发现大量的描述。在你的例子中:

  • v x y z表示点坐标(顶点)[x,y,z]
  • vn nx,ny,nz表示最后一点(nx,ny,nz)
  • 的法线向量[x,y,z]
  • vt tx,ty表示纹理坐标[tx,ty]

顶点是多边形网格的点。 法线用于照明计算(阴影),因此如果您不使用它,则可以跳过它。 颜色存储在某些纹理图像中,您将其选择为[tx,ty]范围为tx,ty=<-1,+1><0,+1>的像素,因此您需要重新缩放到图像分辨率。

因此,您需要将所有这些数据读取到某个表格,然后找到包含面孔的部分(以f开头):

  • f v1,v2,v3表示具有3个顶点的渲染多边形,其中v1,v2,v3是表中顶点的索引。 注意索引从1 开始,因此对于 C ++ 样式数组,您需要将索引减1。

有很多偏差所以没有一个例子很难进一步阐述(你的例子只显示了顶点表的开头)。