【三维重建】之 matlab读取 .wrl 三维图像文件

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

在这里插入图片描述

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中的点集格式如下计算:

rx=getR(-pi/2,0);
points0=points*rx

ry=getR(-pi/2,1);
points1=points*ry

rz=getR(-pi/2,2)
points2=point*rz

猜你喜欢

转载自blog.csdn.net/yohnyang/article/details/126765446#comments_27620931