@@ -989,7 +989,7 @@ THREE.MMDLoader.prototype.parsePmx = function ( buffer ) {
989
989
var parseFace = function ( ) {
990
990
991
991
var p = { } ;
992
- p . indices = dv . getIndexArray ( metadata . vertexIndexSize , 3 ) ;
992
+ p . indices = dv . getIndexArray ( metadata . vertexIndexSize , 3 , true ) ;
993
993
return p ;
994
994
995
995
} ;
@@ -1214,7 +1214,7 @@ THREE.MMDLoader.prototype.parsePmx = function ( buffer ) {
1214
1214
} else if ( p . type === 1 ) { // vertex morph
1215
1215
1216
1216
var m = { } ;
1217
- m . index = dv . getIndex ( pmx . metadata . vertexIndexSize ) ;
1217
+ m . index = dv . getIndex ( pmx . metadata . vertexIndexSize , true ) ;
1218
1218
m . position = dv . getFloat32Array ( 3 ) ;
1219
1219
p . elements . push ( m ) ;
1220
1220
@@ -1229,7 +1229,7 @@ THREE.MMDLoader.prototype.parsePmx = function ( buffer ) {
1229
1229
} else if ( p . type === 3 ) { // uv morph
1230
1230
1231
1231
var m = { } ;
1232
- m . index = dv . getIndex ( pmx . metadata . vertexIndexSize ) ;
1232
+ m . index = dv . getIndex ( pmx . metadata . vertexIndexSize , true ) ;
1233
1233
m . uv = dv . getFloat32Array ( 4 ) ;
1234
1234
p . elements . push ( m ) ;
1235
1235
@@ -1268,7 +1268,6 @@ THREE.MMDLoader.prototype.parsePmx = function ( buffer ) {
1268
1268
1269
1269
}
1270
1270
1271
-
1272
1271
} ;
1273
1272
1274
1273
var parseFrames = function ( ) {
@@ -3449,18 +3448,18 @@ THREE.MMDLoader.DataView.prototype = {
3449
3448
3450
3449
} ,
3451
3450
3452
- getIndex : function ( type ) {
3451
+ getIndex : function ( type , isUnsigned ) {
3453
3452
3454
3453
switch ( type ) {
3455
3454
3456
3455
case 1 :
3457
- return this . getInt8 ( ) ;
3456
+ return ( isUnsigned === true ) ? this . getUint8 ( ) : this . getInt8 ( ) ;
3458
3457
3459
3458
case 2 :
3460
- return this . getInt16 ( ) ;
3459
+ return ( isUnsigned === true ) ? this . getUint16 ( ) : this . getInt16 ( ) ;
3461
3460
3462
3461
case 4 :
3463
- return this . getInt32 ( ) ;
3462
+ return this . getInt32 ( ) ; // No Uint32
3464
3463
3465
3464
default :
3466
3465
throw 'unknown number type ' + type + ' exception.' ;
@@ -3469,13 +3468,13 @@ THREE.MMDLoader.DataView.prototype = {
3469
3468
3470
3469
} ,
3471
3470
3472
- getIndexArray : function ( type , size ) {
3471
+ getIndexArray : function ( type , size , isUnsigned ) {
3473
3472
3474
3473
var a = [ ] ;
3475
3474
3476
3475
for ( var i = 0 ; i < size ; i ++ ) {
3477
3476
3478
- a . push ( this . getIndex ( type ) ) ;
3477
+ a . push ( this . getIndex ( type , isUnsigned ) ) ;
3479
3478
3480
3479
}
3481
3480
0 commit comments