Three.js 获取模型顶点数据
通过 Three.js 访问或获取模型的顶点数据,也就是获得模型绑定几何体的顶点数据,比如一个网格模型Mesh
,首先需要通过网格模型的几何体属性Mesh.geometry
访问模型对应的几何体,然后查看几何体几何体的类型,对于 Three.js 而言有两种几何体类型 Geometry
和 BufferGeometry
,一般来说Three.js加载外部stl、obj、fbx、GLTF等模型,解析后返回的模型对象所包含的几何体对象一般是缓冲类型几何体 BufferGeometry
。
访问几何体BufferGeometry
的顶点数据,可以通过.attributes
和.index
两个属性访问顶点数据,.index
属性是几何体的顶点索引数据,如果没有顶点索引数据就返回null
。除了顶点索引数据意外的数据都通过几何体BufferGeometry
的.attributes
属性实现,比如顶点位置坐标BufferGeometry.attributes.position
,顶点UV坐标BufferGeometry.attributes.uv
,顶点法向量BufferGeometry.attributes.normal
。
访问.index
、.position
、.uv
等属性,如果存在相应的顶点数据,返回的都是一个BufferAttribute
对象,BufferAttribute
对象.array
属性就是顶点数据构成的类型化数组,比如Float32Array
、Int16Array
// 访问网格模型第一个顶点位置的x坐标分量
mesh.geometry.attributes.position.getX(0)
// 访问网格模型第一个顶点位置的y坐标分量
mesh.geometry.attributes.position.getY(0)
// 访问网格模型第一个顶点位置的z坐标分量
mesh.geometry.attributes.position.getZ(0)
访问几何体 Geometry
的顶点数据,如果是顶点位置数据可以通过.vertices
属性实现,如果是访问纹理UV坐标通过.faceVertexUvs
属性实现,如果是顶点颜色数据,要具体具体分析,如果是点或线模型对象,可以通过 .colors
属性访问,如果是网格模型Mesh
需要访问三角形属性.faces
,.faces
属性也包含了网格模型中三角形顶点坐标数据,顶点坐标数据是通过顶点索引指向.vertices
属性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论