我可以映射一个" OBJ"具有现有R包的网格文件?

时间:2014-04-15 19:34:22

标签: r 3d mesh

在我深入到一个充满流沙的兔子洞之前,这里是OBJ文件中的一部分文本(在这种情况下是737架飞机)

v -1.684813 -4.962262 2.184269
v -1.684813 -4.672744 2.090231
v -1.684813 -4.469102 1.864027
v -1.684813 -4.405789 1.566230
v -1.684813 -4.499885 1.276771
v -1.684813 -4.726089 1.073071
g engines
f 13 2 1
f 13 14 2
f 14 3 2
f 14 15 3
f 15 4 3
f 15 16 4
f 16 5 4
f 16 17 5
f 17 6 5
g main_body
f 1362 1380 1378
f 1362 1364 1380
f 1360 1362 1378
f 1320 1364 1362

等等其他几个组件 编辑 - 现在(愚蠢的我)我在维基百科和其他地方找到了OBJ文件定义,至少我知道v x y z是顶点坐标,f a b c标识构建该部分的顶点。所以我想我的问题可以简化为:是否有人编写了与OBJ或其他3D库兼容的rgl特定翻译器?

1 个答案:

答案 0 :(得分:2)

mdsumner是正确的。对于那些可能关心的人,这是基本的步骤。

1)将每个元素(例如,"引擎")分解为单独的数组。 2)构建与coords.3d兼容的x,y,z顶点矩阵(参见rgl文档) 读取每个引擎中引用的顶点数字'行和从" v"中检索坐标集。顶点坐标集。 3)绘制它。

对于具有896行的元素(即组成该项目的896个三角形),

trieng<-matrix(nrow=896*3,ncol=3)
for (j in 1:896) {
    trieng[(1+3*(j-1)):(3+3*(j-1)),1:3] <- v737[engine737[j,1:3],1:3]
    }

我已从我的数据矩阵中删除了第一列(包含&#34; v&#34;,&#34; f&#34;)。