我从3d扫描仪的扫描中生成了一个.obj文件。但是,我不确定如何解释所有这些数据。我查看了维基百科并了解了.ibj文件的一般结构。我的目标是提取一些有关颜色的信息,我不知道该怎么做。 vt行中的数字代表什么,我如何使用它们来呈现颜色?我的最终目标是扫描一只脚并取消地板"部分"扫描。扫描脚时,地板也是扫描的一部分,我想忽视地板并集中在脚上。这是.obj文件的一小部分:
答案 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。有很多偏差所以没有一个例子很难进一步阐述(你的例子只显示了顶点表的开头)。