Skip to content

Mesh

Mesh用于创建一个网格模型,并将几何体与材质渲染在一起

网格模型Mesh其实就一个一个三角形(面)拼接构成。使用使用网格模型Mesh渲染几何体geometry,就是几何体所有顶点坐标三个为一组,构成一个三角形,多组顶点构成多个三角形,就可以用来模拟表示物体的表面。

Mesh类继承自Object3D

1.构造函数

js
const mesh = new THREE.Mesh( 
    geometry : BufferGeometry, 
    material : Material 
)

参数:

2.属性

共有属性请参见其基类Object3D

geometry

类型:BufferGeometry

BufferGeometry 的实例或者派生类,定义了物体的结构。

isMesh

类型:Boolean

只读,判断一个物体是否为Mesh

material

类型:Material

Material基类或者一个包含材质的数组派生而来的材质实例,定义了物体的外观。默认值是一个MeshBasicMaterial

morphTargetInfluences

类型:Array

一个包含有权重(值一般在0-1范围内)的数组,指定应用了多少变形。 默认情况下是未定义的,但是会被updateMorphTargets重置为一个空数组。

morphTargetDictionary

类型:Object

基于morphTarget.name属性的morphTargets字典。 默认情况下是未定义的,但是会被updateMorphTargets重建。

3.方法

共有方法参照其基类Object3D

clone()

返回这个Mesh对象及其子级的克隆。

js
clone(): Mesh

返回值:返回这个Mesh对象及其子级的克隆。

raycast()

在一条投射出去的Ray(射线)和这个网格之间产生交互。 Raycaster.intersectObject将会调用这个方法。

js
raycast(raycaster: Raycaster, intersects: Array): undefined

参数:

  • raycaster:这是一个 THREE.Raycaster 对象,它包含了射线的起点和方向。你可以通过这个对象获取射线的相关信息,比如起点、方向等。
  • intersects:这是一个数组,用于存储相交的结果。通常在这个数组中,你需要将每个相交的对象信息(例如,距离、法向量等)添加进去,以便于后续处理。

updateMorphTargets()

更新morphTargets,使其不对对象产生影响,重置morphTargetInfluences and morphTargetDictionary属性。

js
updateMorphTargets(): undefined

4.三角形正反面

空间中一个三角形有正反两面,那么Three.js的规则是如何区分正反面的?非常简单,你的眼睛(相机)对着三角形的一个面,如果三个顶点的顺序是逆时针方向,该面视为正面,如果三个顶点的顺序是顺时针方向,该面视为反面。

  • 正面:逆时针
  • 反面:顺时针

MIT Licensed