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 @@
-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 @@
-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 @@
-object.matrix.setRotationFromQuaternion( quaternion ); +object.matrix.makeRotationFromQuaternion( quaternion ); object.matrix.setPosition( start_position ); object.matrixAutoUpdate = false;