stl三维模型
基本所有的三维软件都支持导出.stl格式三维模型,stl三维模型不包含材质信息,你可以简单地把stl文件理解为几何体对象Geometry,本节课素材box.STL是一个立方体,
用记事本打开文件你可以看到里面的数据三个位置坐标和一个顶点法向量是一组数据,在第二章点线面的课程中讲解过三个顶点可以构成一个三角面,对于一个立方体而言需要至少12个三角面构成立方体的6个矩形平面。
stl文件数据结构
solid box //文件名字
//三角面1
facet normal 0 0 -1 //顶点法向量
outer loop
vertex 50 50 -50 //顶点位置
vertex 50 -50 -50 //顶点位置
vertex -50 50 -50 //顶点位置
endloop
endfacet
//三角面2
facet normal 0 0 -1 //顶点法向量
outer loop
vertex -50 50 -50 //顶点位置
vertex 50 -50 -50 //顶点位置
vertex -50 -50 -50 //顶点位置
endloop
endfacet
facet normal 0 1 0
.....
.....
//三角面12
facet normal -1 0 0
outer loop
vertex -50 -50 -50
vertex -50 50 50
vertex -50 50 -50
endloop
endfacet
endsolid
加载文件
可以在下载的STLLoader.js文件中找到FirstPersonControls.js控件,路径是three.js-master\examples\js\loaders。
加载文件
可以在下载的STLLoader.js文件中找到FirstPersonControls.js控件,路径是three.js-master\examples\js\loaders。
通过构造函数THREE.STLLoader()可以把.stl三维模型转化为网格模型的几何体对象Geometry,具体点说就是执行语句loader.load("box.STL", stlMesh),box.STL文件的几何数据转化为一个几何体对象,
几何体对象作为函数stlMesh()的参数使用,然后在stlMesh()函数中作为Mesh构造函数的参数来生成网格模型。
/**
* 加载stl立方体,生成网格模型
*/varloader =newTHREE.STLLoader();//创建stl模型加载器对象loader.load("box.STL",stlMesh);//加载stl完成后执行函数stlMesh()//stl加载完成后等待执行的函数functionstlMesh(stlGeometry) {varmaterial=newTHREE.MeshLambertMaterial({color:0x0000ff});//材质对象varmesh=newTHREE.Mesh(stlGeometry,material);//网格模型对象scene.add(mesh);//网格模型添加到场景中}