matlab读入和保存obj文件

Posted 岁月神偷小拳拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab读入和保存obj文件相关的知识,希望对你有一定的参考价值。

1、使用matlab读取obj文件:

function [vertex,faces,normal] = read_obj(filename)

fid = fopen(filename);
if fid<0
    error(['Cannot open ' filename '.']);
end

frewind(fid);
a = fscanf(fid,'%c',1);
if strcmp(a, 'P')
    fscanf(fid,'%f',5);
    n_points=fscanf(fid,'%i',1);
    vertex=fscanf(fid,'%f',[3,n_points]);
    normal=fscanf(fid,'%f',[3,n_points]);
    n_faces=fscanf(fid,'%i',1);
    fscanf(fid,'%i',5+n_faces);
    faces=fscanf(fid,'%i',[3,n_faces])'+1;
    fclose(fid);
    return;
end

frewind(fid);
vertex = [];
faces = [];
while 1
    s = fgetl(fid);
    if ~ischar(s), 
        break;
    end
    if ~isempty(s) && strcmp(s(1), 'f')
        % face
        faces(:,end+1) = sscanf(s(3:end), '%d %d %d');
    end
    if ~isempty(s) && strcmp(s(1), 'v')
        % vertex
        vertex(:,end+1) = sscanf(s(3:end), '%f %f %f');
    end
end
fclose(fid);

2、使用matlab保存obj文件:

function obj_write(filename,vertices,faces )
fid=fopen(filename,'w');  
[x,y]=size(vertices);  
 for i=1:x
    fprintf(fid,'v ');
    for j=1:y-1  
        fprintf(fid,'%f ',vertices(i,j));  
    end  
    fprintf(fid,'%f\\r\\n',vertices(i,y));%每一行回车\\n  
    %fprintf(fid,'\\n');%每一行回车\\n  
 end 

fprintf(fid,'\\n');%每一行回车\\n  

[x,y]=size(faces);  
  
 for i=1:x
    fprintf(fid,'f ');
    for j=1:y-1  
        fprintf(fid,'%d ',faces(i,j));  
    end  
    fprintf(fid,'%d\\r\\n',faces(i,y));%每一行回车\\n  
    %fprintf(fid,'\\n');%每一行回车\\n  
end   
fclose(fid);  
end

以上是关于matlab读入和保存obj文件的主要内容,如果未能解决你的问题,请参考以下文章

R:帮助将特定的 .mat 文件读入 R

matlab2010怎么在fig图中插入竖立的文本框

MATLAB中文件的读写和数据的导入导出

matlab图像显示及保存

关于MATLAB读入图像的像素值出错问题(解决过程中发现:保存了假的.png图像)

关于MATLAB读入图像的像素值出错问题(解决过程中发现:保存了假的.png图像)