matlab读取 .wrl 三维图像文件
1. wrl 文件
- wrl(虚拟现实语言): wrl文件是一种虚拟现实文本格式文件。也是VRML的场景模型文件的扩展名。
- wrl文件是纯ASCII文件,所以可以用文本编辑器打开和编辑。虽然这样,但是对于大型的3D文件。用纯手工的方法是不可取的。应该选择用三维软件(maya,max等)进行场景建模和输出。
- 可通过SolidWorks制作导出
- 可通过matlab打开可视化
例如scene.wrl 文件,其内容如下:
#VRML V2.0 utf8
Transform {
children [
DEF model1 Transform {
children [
DEF body1 Transform {
translation -1 0 0
children [
DEF shape1 Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 0.0
}
}
geometry Box {
size 1.5 1.5 1.5
}
}
]
}
]
}
DEF model2 Transform {
children [
DEF body2 Transform {
translation 1 0 0
children [
DEF shape2 Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 0.0
}
}
geometry Box {
size 1.5 1.5 1.5
}
}
]
}
]
}
]
}
2. matlab打开.wrl文件
%********************打开.wrl文件*************
vrsetpref('DefaultViewer', 'internalv5')
w = vrworld('scene.wrl');
open(w);
view(w);
3. matlab绘制wrl内的三维坐标点
txt格式打开.wrl文件,直接复制点集坐标到matlab代码中,并在每行坐标后边添加...
%绘制三维点
%%base_link
P=[ -0.075000 -0.100000 0.000000, -0.075000 -0.100000 0.570000, -0.075000 -0.075000 0.436008, -0.075000 -0.073559 0.421376, -0.075000 -0.073559 0.450639,...
-0.075000 -0.069291 0.407306, -0.075000 -0.069291 0.464709, -0.075000 -0.062360 0.394340, -0.075000 -0.062360 0.477675, -0.075000 -0.053033 0.382975,...
-0.075000 -0.053033 0.489041, -0.075000 -0.041668 0.373647, -0.075000 -0.041668 0.498368, -0.075000 -0.028701 0.366717, -0.075000 -0.028701 0.505299,...
-0.075000 -0.014632 0.362449, -0.075000 -0.014632 0.509567, -0.075000 0.000000 0.361008, -0.075000 0.000000 0.511008, -0.075000 0.014632 0.362449,...
-0.075000 0.014632 0.509567, -0.075000 0.028701 0.366717, -0.075000 0.028701 0.505299, -0.075000 0.041668 0.373647, -0.075000 0.041668 0.498368,...
-0.075000 0.053033 0.382975, -0.075000 0.053033 0.489041, -0.075000 0.062360 0.394340, -0.075000 0.062360 0.477675, -0.075000 0.069291 0.407306,...
-0.075000 0.069291 0.464709, -0.075000 0.073559 0.421376, -0.075000 0.073559 0.450639, -0.075000 0.075000 0.436008, -0.075000 0.100000 0.000000,...
-0.075000 0.100000 0.570000, -0.025000 -0.075000 0.436008, -0.025000 -0.073559 0.421376, -0.025000 -0.073559 0.450639, -0.025000 -0.069291 0.407306,...
-0.025000 -0.069291 0.464709, -0.025000 -0.062360 0.394340, -0.025000 -0.062360 0.477675, -0.025000 -0.053033 0.382975, -0.025000 -0.053033 0.489041,...
-0.025000 -0.041668 0.373647, -0.025000 -0.041668 0.498368, -0.025000 -0.028701 0.366717, -0.025000 -0.028701 0.505299, -0.025000 -0.014632 0.362449,...
-0.025000 -0.014632 0.509567, -0.025000 0.000000 0.361008, -0.025000 0.000000 0.436008, -0.025000 -0.000000 0.511008, -0.025000 0.014632 0.362449,...
-0.025000 0.014632 0.509567, -0.025000 0.028701 0.366717, -0.025000 0.028701 0.505299, -0.025000 0.041668 0.373647, -0.025000 0.041668 0.498368,...
-0.025000 0.053033 0.382975, -0.025000 0.053033 0.489041, -0.025000 0.062360 0.394340, -0.025000 0.062360 0.477675, -0.025000 0.069291 0.407306,...
-0.025000 0.069291 0.464709, -0.025000 0.073559 0.421376, -0.025000 0.073559 0.450639, -0.025000 0.075000 0.436008, 0.075000 -0.100000 0.000000,...
0.075000 -0.100000 0.570000, 0.075000 0.100000 0.000000, 0.075000 0.100000 0.570000 ]
i=1
while i<length(P)
scatter3(P(i),P(i+1),P(i+2));
hold on
i=i+3;
end
文章来源:https://www.toymoban.com/news/detail-585083.html
4. 对三维点进行空间旋转变换
%旋转矩阵:
%绕x\y\z轴旋转,输入弧度
function [R]=getR(a,flg)
R=[]
if(flg==0)
R=[ 1 0 0;
0 cos(a) -sin(a);
0 sin(a) cos(a)];
elseif(flg==1)
R=[ cos(a) 0 sin(a);
0 1 0 ;
-sin(a) 0 cos(a)];
elseif(flg==2)
R=[ cos(a) -sin(a) 0;
sin(a) cos(a) 0 ;
0 0 1];
end
end
接标题3中的点集格式如下计算:文章来源地址https://www.toymoban.com/news/detail-585083.html
rx=getR(-pi/2,0);
points0=points*rx
ry=getR(-pi/2,1);
points1=points*ry
rz=getR(-pi/2,2)
points2=point*rz
到了这里,关于【三维重建】之 matlab读取 .wrl 三维图像文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!