BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

Matrix3.getNormalMatrix()

Matrix3.getNormalMatrix() 方法用于获取转置矩阵的逆矩阵,该逆矩阵用于对法向量进行变换以进行正常的照明计算。

语法

matrix3.getNormalMatrix( matrix4 )

参数

  • matrix4 - 必须是 THREE.Matrix4 类型,用于将逆转置矩阵与矩形矩阵相乘以获得用于变换法向量的最终矩阵。

返回值

  • Matrix3 - 返回一个新的 THREE.Matrix3 类型矩阵,表示转置矩阵的逆矩阵。

示例

// 创建一个 THREE.Matrix4 类型矩形矩阵
const matrix4 = new THREE.Matrix4().makeRotationY( 2.5 );

// 获取逆转置矩阵并将其与矩形矩阵相乘以获得最终变换矩阵
const normalMatrix = new THREE.Matrix3().getNormalMatrix( matrix4 );

// 使用变换矩阵对法向量进行变换
const normal = new THREE.Vector3( 0, 0, 1 ).applyMatrix3( normalMatrix );

注意事项

  • 该方法不会修改原始 Matrix3 实例,而是返回一个新的矩阵。
  • 该方法仅适用于非缩放矩阵。如果使用缩放矩阵进行此操作,则可能会导致不正确的计算结果。