Skip to content

Commit 0c805ba

Browse files
authored
Merge pull request #20804 from zach-capalbo/patch-1
GLTFExporter: Account for bind matrix.
2 parents 1a6df58 + 0fab02b commit 0c805ba

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

examples/js/exporters/GLTFExporter.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1693,12 +1693,15 @@ THREE.GLTFExporter.prototype = {
16931693

16941694
var joints = [];
16951695
var inverseBindMatrices = new Float32Array( skeleton.bones.length * 16 );
1696+
var temporaryBoneInverse = new THREE.Matrix4();
16961697

16971698
for ( var i = 0; i < skeleton.bones.length; ++ i ) {
16981699

16991700
joints.push( nodeMap.get( skeleton.bones[ i ] ) );
17001701

1701-
skeleton.boneInverses[ i ].toArray( inverseBindMatrices, i * 16 );
1702+
temporaryBoneInverse.copy( skeleton.boneInverses[ i ] );
1703+
1704+
temporaryBoneInverse.multiply( object.bindMatrix ).toArray( inverseBindMatrices, i * 16 );
17021705

17031706
}
17041707

examples/jsm/exporters/GLTFExporter.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
LinearMipmapLinearFilter,
1010
LinearMipmapNearestFilter,
1111
MathUtils,
12+
Matrix4,
1213
MirroredRepeatWrapping,
1314
NearestFilter,
1415
NearestMipmapLinearFilter,
@@ -178,7 +179,7 @@ GLTFExporter.prototype = {
178179
/**
179180
* Is identity matrix
180181
*
181-
* @param {THREE.Matrix4} matrix
182+
* @param {Matrix4} matrix
182183
* @returns {Boolean} Returns true, if parameter is identity matrix
183184
*/
184185
function isIdentityMatrix( matrix ) {
@@ -1716,12 +1717,15 @@ GLTFExporter.prototype = {
17161717

17171718
var joints = [];
17181719
var inverseBindMatrices = new Float32Array( skeleton.bones.length * 16 );
1720+
var temporaryBoneInverse = new Matrix4();
17191721

17201722
for ( var i = 0; i < skeleton.bones.length; ++ i ) {
17211723

17221724
joints.push( nodeMap.get( skeleton.bones[ i ] ) );
17231725

1724-
skeleton.boneInverses[ i ].toArray( inverseBindMatrices, i * 16 );
1726+
temporaryBoneInverse.copy( skeleton.boneInverses[ i ] );
1727+
1728+
temporaryBoneInverse.multiply( object.bindMatrix ).toArray( inverseBindMatrices, i * 16 );
17251729

17261730
}
17271731

utils/modularize.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ var files = [
3535

3636
{ path: 'exporters/ColladaExporter.js', dependencies: [], ignoreList: [] },
3737
{ path: 'exporters/DRACOExporter.js', dependencies: [], ignoreList: [ 'Geometry' ] },
38-
{ path: 'exporters/GLTFExporter.js', dependencies: [], ignoreList: [ 'AnimationClip', 'Camera', 'Geometry', 'Material', 'Mesh', 'Object3D', 'Scenes', 'ShaderMaterial', 'Matrix4' ] },
38+
{ path: 'exporters/GLTFExporter.js', dependencies: [], ignoreList: [ 'AnimationClip', 'Camera', 'Geometry', 'Material', 'Mesh', 'Object3D', 'Scenes', 'ShaderMaterial'] },
3939
{ path: 'exporters/MMDExporter.js', dependencies: [ { name: 'MMDParser', path: 'libs/mmdparser.module.js' } ], ignoreList: [] },
4040
{ path: 'exporters/OBJExporter.js', dependencies: [], ignoreList: [] },
4141
{ path: 'exporters/PLYExporter.js', dependencies: [], ignoreList: [] },

0 commit comments

Comments
 (0)