From 90aeab4fe7e1c352d0a35d9c57036d165dae57e8 Mon Sep 17 00:00:00 2001 From: Kodub <131988770+Kodub@users.noreply.github.com> Date: Fri, 3 Apr 2026 15:10:14 +0700 Subject: [PATCH 1/3] Manual: Remove reference to Matrix4.setRotationFromQuaternion() (#33320) --- manual/en/matrix-transformations.html | 2 +- manual/fr/matrix-transformations.html | 2 +- manual/zh/matrix-transformations.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manual/en/matrix-transformations.html b/manual/en/matrix-transformations.html index a65c3e8c28016e..54a83d8c15c9a0 100644 --- a/manual/en/matrix-transformations.html +++ b/manual/en/matrix-transformations.html @@ -57,7 +57,7 @@

Convenience properties and `matrixAutoUpdate`

  • Modify the object's matrix directly. The `Matrix4` class has various methods for modifying the matrix:
    -object.matrix.setRotationFromQuaternion( quaternion );
    +object.matrix.makeRotationFromQuaternion( quaternion );
     object.matrix.setPosition( start_position );
     object.matrixAutoUpdate = false;
     
    diff --git a/manual/fr/matrix-transformations.html b/manual/fr/matrix-transformations.html index 5b79d1773b8dc1..dd964fc69a000f 100644 --- a/manual/fr/matrix-transformations.html +++ b/manual/fr/matrix-transformations.html @@ -56,7 +56,7 @@

    Propriétés de commodité et `matrixAutoUpdate`

  • Modifiez la matrice de l'objet directement. La classe `Matrix4` dispose de différentes méthodes pour modifier la matrice :
    -object.matrix.setRotationFromQuaternion( quaternion );
    +object.matrix.makeRotationFromQuaternion( quaternion );
     object.matrix.setPosition( start_position );
     object.matrixAutoUpdate = false;
     
    diff --git a/manual/zh/matrix-transformations.html b/manual/zh/matrix-transformations.html index 5b9a443ee1efde..e4edecface076f 100644 --- a/manual/zh/matrix-transformations.html +++ b/manual/zh/matrix-transformations.html @@ -60,7 +60,7 @@

    便捷属性与 `matrixAutoUpdate`

  • 直接修改对象矩阵。`Matrix4` 提供了多种矩阵修改方法:
    -object.matrix.setRotationFromQuaternion( quaternion );
    +object.matrix.makeRotationFromQuaternion( quaternion );
     object.matrix.setPosition( start_position );
     object.matrixAutoUpdate = false;
     
    From 582a03b74d843d2c99082aa84589a228b480d262 Mon Sep 17 00:00:00 2001 From: Madison Rickert <3495636+madisonrickert@users.noreply.github.com> Date: Fri, 3 Apr 2026 01:13:46 -0700 Subject: [PATCH 2/3] fix: dispose variable ShaderMaterials in GPUComputationRenderer.dispose() (#33318) Co-authored-by: Claude Opus 4.6 (1M context) --- examples/jsm/misc/GPUComputationRenderer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/jsm/misc/GPUComputationRenderer.js b/examples/jsm/misc/GPUComputationRenderer.js index 94ec75aca7f8c2..daaee9eb378d7a 100644 --- a/examples/jsm/misc/GPUComputationRenderer.js +++ b/examples/jsm/misc/GPUComputationRenderer.js @@ -339,6 +339,8 @@ class GPUComputationRenderer { } + variable.material.dispose(); + } }; From 965f22fd423b4b5847647d3423e85872b01617d8 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 3 Apr 2026 11:51:57 +0200 Subject: [PATCH 3/3] FBXLoader: Fix `penumbra` computation. (#33321) --- examples/jsm/loaders/FBXLoader.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/examples/jsm/loaders/FBXLoader.js b/examples/jsm/loaders/FBXLoader.js index 98181ddc8eb653..3e152531ed29dc 100644 --- a/examples/jsm/loaders/FBXLoader.js +++ b/examples/jsm/loaders/FBXLoader.js @@ -1290,21 +1290,24 @@ class FBXTreeParser { case 2: // Spot let angle = Math.PI / 3; + let penumbra = 0; - if ( lightAttribute.InnerAngle !== undefined ) { + if ( lightAttribute.OuterAngle !== undefined ) { - angle = MathUtils.degToRad( lightAttribute.InnerAngle.value ); + angle = MathUtils.degToRad( lightAttribute.OuterAngle.value ); - } + if ( lightAttribute.InnerAngle !== undefined ) { - let penumbra = 0; - if ( lightAttribute.OuterAngle !== undefined ) { + penumbra = 1 - ( lightAttribute.InnerAngle.value / lightAttribute.OuterAngle.value ); + penumbra = Math.max( 0, penumbra ); // penumbra must be in the range [0,1] - // TODO: this is not correct - FBX calculates outer and inner angle in degrees - // with OuterAngle > InnerAngle && OuterAngle <= Math.PI - // while three.js uses a penumbra between (0, 1) to attenuate the inner angle - penumbra = MathUtils.degToRad( lightAttribute.OuterAngle.value ); - penumbra = Math.max( penumbra, 1 ); + } + + } else if ( lightAttribute.InnerAngle !== undefined ) { + + // fallback if only InnerAngle is defined + + angle = MathUtils.degToRad( lightAttribute.InnerAngle.value ); }