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 ); } 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(); + } }; 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;