obj文件:如何用 matlab 打开 obj 文件
第一步:检查obj文本格式
将obj 文件用txt文本形式打开,看里面的格式是否利于用excel读取数据
因为这个obj文件比较小,行数没有超过excel最大行数,所以可以用excel打开
第二步:用 Blender 软件重新导出obj文件
Blender 软件选择“文件”->“导入”->“obj”,然后选择该obj文件
看到加载出这个obj文件后,就可以导出文件了:
在obj导出弹窗,选择存储位置和存储名称,选择包括在内的内容,包括顶点,法线和三角面
然后在相应位置会生成obj文件,可以右键选择用记事本打开
第三步:用excel 打开这个obj 文件
因为暂时还没有写代码去读取,所以将这个obj转换成txt,用excel处理,再将数据手动复制到matlab打开。
复制一个obj文件的副本,然后将副本的后缀改成txt形式
在同一个文件夹中,新建一个excel 表格,命名为 testBlender02.xlse ,然后打开
用excel,选择“文件”:
第二步,选择“打开”:
选择“浏览”
第四步,选择“所有文件”,然后选择 上一步生成的txt文件
图1是offce的excel的样式
图2是WPS的excel 的样式
在自动的弹窗中,选择分隔符号,选择下一步
Txt中主要是 空格 和 / 分隔数据的,所以需要勾选“空格”和 “/”,然后选择 “下一步”
即可成功打开。
如果数据行数超过excel表格的最大行数,会报错导致无法用excel打开
第四步:复制excel中的数据,传给matlab
首先打开matlab,将malab的路径改成 spherical-confromal-map-master 文件夹的路径:
在工作区的空白处,右键点击,选择 “清空工作区”
确保工作区是空的之后,再用右键,选择“新建” ,新建两个表格,分别命名为 v 和 f, 表示顶点和三角形面。
建立好f 和 v 两个表格后,打开v表格
同时打开上一步生成的 excel表格,在左上方单元格输入v的范围:B6:D12448, 然后按 “回车”
Excel 会自动选中需要的数据,右键选中“复制”,将这些数据,复制到 matlab 的 v表格中。
这是将v的数据复制过后的样子。
同样,把f的数据复制到matlab的f表格当中。注意 f 的格式,如果是 f # # # # # # # # #(有纹理坐标和法向量),那么只取第1,4,7列,如果 f # # # # # # (没有纹理坐标,只有法向量)只取第1,3,5列。详情可以参考obj文件(1):obj文件用txt打开并且了解v,f,vn,vt的含义
键盘按住 shift 键,鼠标左键选中工作区的 f 和 v。键盘再按 shift+s,跳出的保存弹窗,将文件命名为 6.3 carton2.mat ,然后点击 “保存”
第五步: 用matlab 打开3D模型
在左边文件栏,会出现保存好的文件,清空工作区后,再双击 6.3 carton2.mat ,可以看到工作区出现f和v表格
在左栏的“当前文件夹”中,右键点击,选择 “新建” -> “脚本”,命名为 openOBJ.mat
双击打开openOBJ.mat, 输入:
%% 这是一段打开 obj 文件的代码
load('6.3 carton2.mat')
patch('Faces',f,'Vertices',v,'FaceColor',[0.6,1,1],'LineWidth',0.5);
点击运行,在命令窗口中显示 openOBJ, 然后有弹窗是 输入的obj模型的网格图
然后可以根据下图来转动 figure 1 的3D模型