redhotmagma-visualization 1.28.0-beta.2 → 1.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -11
- package/babel.config.js +41 -0
- package/package.json +72 -6
- package/public/libs/draco/README.md +32 -0
- package/public/libs/draco/draco_decoder.js +52 -0
- package/public/libs/draco/draco_decoder.wasm +0 -0
- package/public/libs/draco/draco_encoder.js +33 -0
- package/public/libs/draco/draco_wasm_wrapper.js +104 -0
- package/public/libs/draco/gltf/draco_decoder.js +48 -0
- package/public/libs/draco/gltf/draco_decoder.wasm +0 -0
- package/public/libs/draco/gltf/draco_encoder.js +33 -0
- package/public/libs/draco/gltf/draco_wasm_wrapper.js +104 -0
- package/scripts/cpPath.js +151 -0
- package/scripts/cpPublic.js +39 -0
- package/scripts/moveLibToPackageRoot.js +44 -0
- package/scripts/utils/fileSystem.js +69 -0
- package/scripts/utils/process.js +19 -0
- package/src/CommonUtils/Observable.js +0 -1
- package/src/CommonUtils/pointerEvent.js +1 -2
- package/src/DevApp.js +1 -2
- package/src/FallbackVisualization.js +5 -1
- package/src/PrintingEffects/DomingEffect.js +0 -1
- package/src/PrintingEffects/EmbroideryEffect.js +2 -3
- package/src/React/ReactBase.js +1 -1
- package/src/Three/Controls/OrbitControls.js +0 -2
- package/src/Three/Loaders/ColladaLoader.js +294 -111
- package/src/Three/Loaders/MTLLoader.js +0 -2
- package/src/Three/Loaders/OBJLoader.js +0 -2
- package/src/Three/Three2D.js +6 -7
- package/src/Three/Three3D.js +1 -9
- package/src/Three/ThreeBase.js +1 -10
- package/src/Utils/DesignArea/getDesignAreaCanvasSize.js +0 -1
- package/src/Utils/TextureBuilder/createTextureBuilder.js +0 -2
- package/src/Utils/imagePreloader.js +0 -1
- package/src/Utils/initTextureCanvas.js +0 -3
- package/src/Utils/isMobileDevice.js +0 -2
- package/src/Utils/optimizeTextureImage.js +0 -1
- package/src/VisualizationContainer.js +1 -3
- package/src/VisualizationInterface.js +1 -10
- package/tsconfig.json +22 -0
- package/AlignTargetProvider.js +0 -129
- package/CommonUtils/Deferred.js +0 -135
- package/CommonUtils/Observable.js +0 -126
- package/CommonUtils/PropertyObserver.js +0 -61
- package/CommonUtils/SyncCurrentFunction.js +0 -59
- package/CommonUtils/SyncObservableEvent.js +0 -19
- package/CommonUtils/pointerEvent.js +0 -415
- package/Constants.js +0 -23
- package/DevApp.js +0 -1049
- package/ExposedModules.js +0 -26
- package/FallbackVisualization.js +0 -26
- package/PrintingEffects/ColorEmbossingEffect.js +0 -58
- package/PrintingEffects/DomingEffect.js +0 -150
- package/PrintingEffects/EmbossingEffect.js +0 -65
- package/PrintingEffects/EmbroideryEffect.js +0 -541
- package/PrintingEffects/EngravingEffect.js +0 -65
- package/PrintingEffects/PrintingEffects.js +0 -117
- package/PrintingEffects/PrintingEffectsUtils.js +0 -53
- package/PrintingEffects/resources/embroidery_multiply.jpg +0 -0
- package/PrintingEffects/resources/embroidery_screen.jpg +0 -0
- package/React/ReactBase.js +0 -111
- package/Three/Controls/OrbitControls.js +0 -745
- package/Three/Exporters/glTFExporter.js +0 -48
- package/Three/Loaders/ColladaLoader.js +0 -2916
- package/Three/Loaders/MTLLoader.js +0 -449
- package/Three/Loaders/OBJLoader.js +0 -548
- package/Three/Three2D.js +0 -1778
- package/Three/Three2DLayers.js +0 -504
- package/Three/Three3D.js +0 -1412
- package/Three/Three3DScene.js +0 -1432
- package/Three/ThreeBase.js +0 -722
- package/Utils/DesignArea/getDesignAreaCanvasSize.js +0 -32
- package/Utils/TextureBuilder/createTextureBuilder.js +0 -334
- package/Utils/TextureBuilder/textureBuilderFunctions.js +0 -87
- package/Utils/alignToElement.js +0 -58
- package/Utils/createAlphaMapFromAlphaChannel.js +0 -50
- package/Utils/createCache.js +0 -46
- package/Utils/createCanvas.js +0 -29
- package/Utils/createImageRepository.js +0 -124
- package/Utils/disposeMaterial.js +0 -41
- package/Utils/getImageSize.js +0 -15
- package/Utils/imagePreloader.js +0 -76
- package/Utils/initTextureCanvas.js +0 -49
- package/Utils/isMobileDevice.js +0 -19
- package/Utils/optimizeTextureImage.js +0 -73
- package/Utils/rememberCameraViewOffset.js +0 -21
- package/Utils/removeObject.js +0 -22
- package/Utils/restrictCameraMovement.js +0 -45
- package/Utils/setOrthographicCameraSize.js +0 -16
- package/Utils/updateFitSizeToElement.js +0 -39
- package/VisualizationContainer.js +0 -279
- package/VisualizationInterface.js +0 -293
- package/VisualizationProvider.js +0 -38
- package/__mocks__/exportedSample.svg +0 -45
- package/index.js +0 -16
- package/visualizationAdapterCreator.js +0 -76
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
|
|
3
1
|
// original source: three/examples/js/loaders/ColladaLoader
|
|
4
2
|
|
|
5
3
|
import * as THREE_imp from "three";
|
|
@@ -25,7 +23,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
25
23
|
load: function(url, onLoad, onProgress, onError) {
|
|
26
24
|
var scope = this;
|
|
27
25
|
|
|
28
|
-
var path =
|
|
26
|
+
var path =
|
|
27
|
+
scope.path === undefined
|
|
28
|
+
? THREE.LoaderUtils.extractUrlBase(url)
|
|
29
|
+
: scope.path;
|
|
29
30
|
|
|
30
31
|
var loader = new THREE.FileLoader(scope.manager);
|
|
31
32
|
loader.setPath(scope.path);
|
|
@@ -54,7 +55,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
54
55
|
console.warn(
|
|
55
56
|
"THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically."
|
|
56
57
|
);
|
|
57
|
-
}
|
|
58
|
+
}
|
|
58
59
|
},
|
|
59
60
|
|
|
60
61
|
setCrossOrigin: function(value) {
|
|
@@ -136,7 +137,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
136
137
|
function parseAsset(xml) {
|
|
137
138
|
return {
|
|
138
139
|
unit: parseAssetUnit(getElementsByTagName(xml, "unit")[0]),
|
|
139
|
-
upAxis: parseAssetUpAxis(getElementsByTagName(xml, "up_axis")[0])
|
|
140
|
+
upAxis: parseAssetUpAxis(getElementsByTagName(xml, "up_axis")[0])
|
|
140
141
|
};
|
|
141
142
|
}
|
|
142
143
|
|
|
@@ -189,7 +190,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
189
190
|
var data = {
|
|
190
191
|
sources: {},
|
|
191
192
|
samplers: {},
|
|
192
|
-
channels: {}
|
|
193
|
+
channels: {}
|
|
193
194
|
};
|
|
194
195
|
|
|
195
196
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -225,7 +226,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
225
226
|
|
|
226
227
|
function parseAnimationSampler(xml) {
|
|
227
228
|
var data = {
|
|
228
|
-
inputs: {}
|
|
229
|
+
inputs: {}
|
|
229
230
|
};
|
|
230
231
|
|
|
231
232
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -310,7 +311,11 @@ THREE.ColladaLoader.prototype = {
|
|
|
310
311
|
var inputSource = sources[inputId];
|
|
311
312
|
var outputSource = sources[outputId];
|
|
312
313
|
|
|
313
|
-
var animation = buildAnimationChannel(
|
|
314
|
+
var animation = buildAnimationChannel(
|
|
315
|
+
channel,
|
|
316
|
+
inputSource,
|
|
317
|
+
outputSource
|
|
318
|
+
);
|
|
314
319
|
|
|
315
320
|
createKeyframeTracks(animation, tracks);
|
|
316
321
|
}
|
|
@@ -386,7 +391,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
386
391
|
|
|
387
392
|
var animation = {
|
|
388
393
|
name: object3D.uuid,
|
|
389
|
-
keyframes: keyframes
|
|
394
|
+
keyframes: keyframes
|
|
390
395
|
};
|
|
391
396
|
|
|
392
397
|
return animation;
|
|
@@ -444,16 +449,31 @@ THREE.ColladaLoader.prototype = {
|
|
|
444
449
|
|
|
445
450
|
times.push(time);
|
|
446
451
|
positionData.push(position.x, position.y, position.z);
|
|
447
|
-
quaternionData.push(
|
|
452
|
+
quaternionData.push(
|
|
453
|
+
quaternion.x,
|
|
454
|
+
quaternion.y,
|
|
455
|
+
quaternion.z,
|
|
456
|
+
quaternion.w
|
|
457
|
+
);
|
|
448
458
|
scaleData.push(scale.x, scale.y, scale.z);
|
|
449
459
|
}
|
|
450
460
|
|
|
451
461
|
if (positionData.length > 0)
|
|
452
|
-
tracks.push(
|
|
462
|
+
tracks.push(
|
|
463
|
+
new THREE.VectorKeyframeTrack(name + ".position", times, positionData)
|
|
464
|
+
);
|
|
453
465
|
if (quaternionData.length > 0)
|
|
454
|
-
tracks.push(
|
|
466
|
+
tracks.push(
|
|
467
|
+
new THREE.QuaternionKeyframeTrack(
|
|
468
|
+
name + ".quaternion",
|
|
469
|
+
times,
|
|
470
|
+
quaternionData
|
|
471
|
+
)
|
|
472
|
+
);
|
|
455
473
|
if (scaleData.length > 0)
|
|
456
|
-
tracks.push(
|
|
474
|
+
tracks.push(
|
|
475
|
+
new THREE.VectorKeyframeTrack(name + ".scale", times, scaleData)
|
|
476
|
+
);
|
|
457
477
|
|
|
458
478
|
return tracks;
|
|
459
479
|
}
|
|
@@ -547,7 +567,8 @@ THREE.ColladaLoader.prototype = {
|
|
|
547
567
|
}
|
|
548
568
|
|
|
549
569
|
key.value[property] =
|
|
550
|
-
((key.time - prev.time) *
|
|
570
|
+
((key.time - prev.time) *
|
|
571
|
+
(next.value[property] - prev.value[property])) /
|
|
551
572
|
(next.time - prev.time) +
|
|
552
573
|
prev.value[property];
|
|
553
574
|
}
|
|
@@ -559,7 +580,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
559
580
|
name: xml.getAttribute("id") || "default",
|
|
560
581
|
start: parseFloat(xml.getAttribute("start") || 0),
|
|
561
582
|
end: parseFloat(xml.getAttribute("end") || 0),
|
|
562
|
-
animations: []
|
|
583
|
+
animations: []
|
|
563
584
|
};
|
|
564
585
|
|
|
565
586
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -618,7 +639,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
618
639
|
|
|
619
640
|
case "morph":
|
|
620
641
|
data.id = parseId(child.getAttribute("source"));
|
|
621
|
-
console.warn(
|
|
642
|
+
console.warn(
|
|
643
|
+
"THREE.ColladaLoader: Morph target animation not supported yet."
|
|
644
|
+
);
|
|
622
645
|
break;
|
|
623
646
|
}
|
|
624
647
|
}
|
|
@@ -628,7 +651,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
628
651
|
|
|
629
652
|
function parseSkin(xml) {
|
|
630
653
|
var data = {
|
|
631
|
-
sources: {}
|
|
654
|
+
sources: {}
|
|
632
655
|
};
|
|
633
656
|
|
|
634
657
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -661,7 +684,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
661
684
|
|
|
662
685
|
function parseJoints(xml) {
|
|
663
686
|
var data = {
|
|
664
|
-
inputs: {}
|
|
687
|
+
inputs: {}
|
|
665
688
|
};
|
|
666
689
|
|
|
667
690
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -683,7 +706,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
683
706
|
|
|
684
707
|
function parseVertexWeights(xml) {
|
|
685
708
|
var data = {
|
|
686
|
-
inputs: {}
|
|
709
|
+
inputs: {}
|
|
687
710
|
};
|
|
688
711
|
|
|
689
712
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -714,7 +737,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
714
737
|
|
|
715
738
|
function buildController(data) {
|
|
716
739
|
var build = {
|
|
717
|
-
id: data.id
|
|
740
|
+
id: data.id
|
|
718
741
|
};
|
|
719
742
|
|
|
720
743
|
var geometry = library.geometries[build.id];
|
|
@@ -738,12 +761,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
738
761
|
joints: [], // this must be an array to preserve the joint order
|
|
739
762
|
indices: {
|
|
740
763
|
array: [],
|
|
741
|
-
stride: BONE_LIMIT
|
|
764
|
+
stride: BONE_LIMIT
|
|
742
765
|
},
|
|
743
766
|
weights: {
|
|
744
767
|
array: [],
|
|
745
|
-
stride: BONE_LIMIT
|
|
746
|
-
}
|
|
768
|
+
stride: BONE_LIMIT
|
|
769
|
+
}
|
|
747
770
|
};
|
|
748
771
|
|
|
749
772
|
var sources = data.sources;
|
|
@@ -802,7 +825,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
802
825
|
// setup bind matrix
|
|
803
826
|
|
|
804
827
|
if (data.bindShapeMatrix) {
|
|
805
|
-
build.bindMatrix = new THREE.Matrix4()
|
|
828
|
+
build.bindMatrix = new THREE.Matrix4()
|
|
829
|
+
.fromArray(data.bindShapeMatrix)
|
|
830
|
+
.transpose();
|
|
806
831
|
} else {
|
|
807
832
|
build.bindMatrix = new THREE.Matrix4().identity();
|
|
808
833
|
}
|
|
@@ -835,7 +860,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
835
860
|
|
|
836
861
|
function parseImage(xml) {
|
|
837
862
|
var data = {
|
|
838
|
-
init_from: getElementsByTagName(xml, "init_from")[0].textContent
|
|
863
|
+
init_from: getElementsByTagName(xml, "init_from")[0].textContent
|
|
839
864
|
};
|
|
840
865
|
|
|
841
866
|
library.images[xml.getAttribute("id")] = data;
|
|
@@ -882,7 +907,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
882
907
|
function parseEffectProfileCOMMON(xml) {
|
|
883
908
|
var data = {
|
|
884
909
|
surfaces: {},
|
|
885
|
-
samplers: {}
|
|
910
|
+
samplers: {}
|
|
886
911
|
};
|
|
887
912
|
|
|
888
913
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -1007,7 +1032,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1007
1032
|
case "transparent":
|
|
1008
1033
|
data[child.nodeName] = {
|
|
1009
1034
|
opaque: child.getAttribute("opaque"),
|
|
1010
|
-
data: parseEffectParameter(child)
|
|
1035
|
+
data: parseEffectParameter(child)
|
|
1011
1036
|
};
|
|
1012
1037
|
break;
|
|
1013
1038
|
}
|
|
@@ -1036,7 +1061,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1036
1061
|
case "texture":
|
|
1037
1062
|
data[child.nodeName] = {
|
|
1038
1063
|
id: child.getAttribute("texture"),
|
|
1039
|
-
extra: parseEffectParameterTexture(child)
|
|
1064
|
+
extra: parseEffectParameterTexture(child)
|
|
1040
1065
|
};
|
|
1041
1066
|
break;
|
|
1042
1067
|
}
|
|
@@ -1047,7 +1072,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1047
1072
|
|
|
1048
1073
|
function parseEffectParameterTexture(xml) {
|
|
1049
1074
|
var data = {
|
|
1050
|
-
technique: {}
|
|
1075
|
+
technique: {}
|
|
1051
1076
|
};
|
|
1052
1077
|
|
|
1053
1078
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -1158,7 +1183,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1158
1183
|
|
|
1159
1184
|
function parseMaterial(xml) {
|
|
1160
1185
|
var data = {
|
|
1161
|
-
name: xml.getAttribute("name")
|
|
1186
|
+
name: xml.getAttribute("name")
|
|
1162
1187
|
};
|
|
1163
1188
|
|
|
1164
1189
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -1251,11 +1276,21 @@ THREE.ColladaLoader.prototype = {
|
|
|
1251
1276
|
) {
|
|
1252
1277
|
var technique = extra.technique;
|
|
1253
1278
|
|
|
1254
|
-
texture.wrapS = technique.wrapU
|
|
1255
|
-
|
|
1279
|
+
texture.wrapS = technique.wrapU
|
|
1280
|
+
? THREE.RepeatWrapping
|
|
1281
|
+
: THREE.ClampToEdgeWrapping;
|
|
1282
|
+
texture.wrapT = technique.wrapV
|
|
1283
|
+
? THREE.RepeatWrapping
|
|
1284
|
+
: THREE.ClampToEdgeWrapping;
|
|
1256
1285
|
|
|
1257
|
-
texture.offset.set(
|
|
1258
|
-
|
|
1286
|
+
texture.offset.set(
|
|
1287
|
+
technique.offsetU || 0,
|
|
1288
|
+
technique.offsetV || 0
|
|
1289
|
+
);
|
|
1290
|
+
texture.repeat.set(
|
|
1291
|
+
technique.repeatU || 1,
|
|
1292
|
+
technique.repeatV || 1
|
|
1293
|
+
);
|
|
1259
1294
|
} else {
|
|
1260
1295
|
texture.wrapS = THREE.RepeatWrapping;
|
|
1261
1296
|
texture.wrapT = THREE.RepeatWrapping;
|
|
@@ -1263,12 +1298,18 @@ THREE.ColladaLoader.prototype = {
|
|
|
1263
1298
|
|
|
1264
1299
|
return texture;
|
|
1265
1300
|
} else {
|
|
1266
|
-
console.warn(
|
|
1301
|
+
console.warn(
|
|
1302
|
+
"THREE.ColladaLoader: Loader for texture %s not found.",
|
|
1303
|
+
image
|
|
1304
|
+
);
|
|
1267
1305
|
|
|
1268
1306
|
return null;
|
|
1269
1307
|
}
|
|
1270
1308
|
} else {
|
|
1271
|
-
console.warn(
|
|
1309
|
+
console.warn(
|
|
1310
|
+
"THREE.ColladaLoader: Couldn't create texture with ID:",
|
|
1311
|
+
textureObject.id
|
|
1312
|
+
);
|
|
1272
1313
|
|
|
1273
1314
|
return null;
|
|
1274
1315
|
}
|
|
@@ -1285,21 +1326,28 @@ THREE.ColladaLoader.prototype = {
|
|
|
1285
1326
|
if (parameter.texture) material.map = getTexture(parameter.texture);
|
|
1286
1327
|
break;
|
|
1287
1328
|
case "specular":
|
|
1288
|
-
if (parameter.color && material.specular)
|
|
1289
|
-
|
|
1329
|
+
if (parameter.color && material.specular)
|
|
1330
|
+
material.specular.fromArray(parameter.color);
|
|
1331
|
+
if (parameter.texture)
|
|
1332
|
+
material.specularMap = getTexture(parameter.texture);
|
|
1290
1333
|
break;
|
|
1291
1334
|
case "bump":
|
|
1292
|
-
if (parameter.texture)
|
|
1335
|
+
if (parameter.texture)
|
|
1336
|
+
material.normalMap = getTexture(parameter.texture);
|
|
1293
1337
|
break;
|
|
1294
1338
|
case "ambient":
|
|
1295
|
-
if (parameter.texture)
|
|
1339
|
+
if (parameter.texture)
|
|
1340
|
+
material.lightMap = getTexture(parameter.texture);
|
|
1296
1341
|
break;
|
|
1297
1342
|
case "shininess":
|
|
1298
|
-
if (parameter.float && material.shininess)
|
|
1343
|
+
if (parameter.float && material.shininess)
|
|
1344
|
+
material.shininess = parameter.float;
|
|
1299
1345
|
break;
|
|
1300
1346
|
case "emission":
|
|
1301
|
-
if (parameter.color && material.emissive)
|
|
1302
|
-
|
|
1347
|
+
if (parameter.color && material.emissive)
|
|
1348
|
+
material.emissive.fromArray(parameter.color);
|
|
1349
|
+
if (parameter.texture)
|
|
1350
|
+
material.emissiveMap = getTexture(parameter.texture);
|
|
1303
1351
|
break;
|
|
1304
1352
|
}
|
|
1305
1353
|
}
|
|
@@ -1313,7 +1361,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1313
1361
|
|
|
1314
1362
|
if (transparency === undefined && transparent) {
|
|
1315
1363
|
transparency = {
|
|
1316
|
-
float: 1
|
|
1364
|
+
float: 1
|
|
1317
1365
|
};
|
|
1318
1366
|
}
|
|
1319
1367
|
|
|
@@ -1323,8 +1371,8 @@ THREE.ColladaLoader.prototype = {
|
|
|
1323
1371
|
transparent = {
|
|
1324
1372
|
opaque: "A_ONE",
|
|
1325
1373
|
data: {
|
|
1326
|
-
color: [1, 1, 1, 1]
|
|
1327
|
-
}
|
|
1374
|
+
color: [1, 1, 1, 1]
|
|
1375
|
+
}
|
|
1328
1376
|
};
|
|
1329
1377
|
}
|
|
1330
1378
|
|
|
@@ -1383,7 +1431,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1383
1431
|
|
|
1384
1432
|
function parseCamera(xml) {
|
|
1385
1433
|
var data = {
|
|
1386
|
-
name: xml.getAttribute("name")
|
|
1434
|
+
name: xml.getAttribute("name")
|
|
1387
1435
|
};
|
|
1388
1436
|
|
|
1389
1437
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -1626,7 +1674,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1626
1674
|
name: xml.getAttribute("name"),
|
|
1627
1675
|
sources: {},
|
|
1628
1676
|
vertices: {},
|
|
1629
|
-
primitives: []
|
|
1677
|
+
primitives: []
|
|
1630
1678
|
};
|
|
1631
1679
|
|
|
1632
1680
|
var mesh = getElementsByTagName(xml, "mesh")[0];
|
|
@@ -1652,7 +1700,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
1652
1700
|
break;
|
|
1653
1701
|
|
|
1654
1702
|
case "polygons":
|
|
1655
|
-
console.warn(
|
|
1703
|
+
console.warn(
|
|
1704
|
+
"THREE.ColladaLoader: Unsupported primitive type: ",
|
|
1705
|
+
child.nodeName
|
|
1706
|
+
);
|
|
1656
1707
|
break;
|
|
1657
1708
|
|
|
1658
1709
|
case "lines":
|
|
@@ -1673,7 +1724,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1673
1724
|
function parseSource(xml) {
|
|
1674
1725
|
var data = {
|
|
1675
1726
|
array: [],
|
|
1676
|
-
stride: 3
|
|
1727
|
+
stride: 3
|
|
1677
1728
|
};
|
|
1678
1729
|
|
|
1679
1730
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -1711,7 +1762,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
1711
1762
|
|
|
1712
1763
|
if (child.nodeType !== 1) continue;
|
|
1713
1764
|
|
|
1714
|
-
data[child.getAttribute("semantic")] = parseId(
|
|
1765
|
+
data[child.getAttribute("semantic")] = parseId(
|
|
1766
|
+
child.getAttribute("source")
|
|
1767
|
+
);
|
|
1715
1768
|
}
|
|
1716
1769
|
|
|
1717
1770
|
return data;
|
|
@@ -1724,7 +1777,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
1724
1777
|
count: parseInt(xml.getAttribute("count")),
|
|
1725
1778
|
inputs: {},
|
|
1726
1779
|
stride: 0,
|
|
1727
|
-
hasUV: false
|
|
1780
|
+
hasUV: false
|
|
1728
1781
|
};
|
|
1729
1782
|
|
|
1730
1783
|
for (var i = 0, l = xml.childNodes.length; i < l; i++) {
|
|
@@ -1874,7 +1927,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
1874
1927
|
break;
|
|
1875
1928
|
|
|
1876
1929
|
default:
|
|
1877
|
-
console.warn(
|
|
1930
|
+
console.warn(
|
|
1931
|
+
"THREE.ColladaLoader: Unknow primitive type:",
|
|
1932
|
+
primitive.type
|
|
1933
|
+
);
|
|
1878
1934
|
}
|
|
1879
1935
|
|
|
1880
1936
|
geometry.addGroup(start, count, p);
|
|
@@ -1899,7 +1955,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
1899
1955
|
switch (key) {
|
|
1900
1956
|
case "POSITION":
|
|
1901
1957
|
var prevLength = position.array.length;
|
|
1902
|
-
buildGeometryData(
|
|
1958
|
+
buildGeometryData(
|
|
1959
|
+
primitive,
|
|
1960
|
+
sources[id],
|
|
1961
|
+
input.offset,
|
|
1962
|
+
position.array
|
|
1963
|
+
);
|
|
1903
1964
|
position.stride = sources[id].stride;
|
|
1904
1965
|
|
|
1905
1966
|
if (sources.skinWeights && sources.skinIndices) {
|
|
@@ -1919,8 +1980,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
1919
1980
|
|
|
1920
1981
|
// see #3803
|
|
1921
1982
|
|
|
1922
|
-
if (
|
|
1923
|
-
|
|
1983
|
+
if (
|
|
1984
|
+
primitive.hasUV === false &&
|
|
1985
|
+
primitives.uvsNeedsFix === true
|
|
1986
|
+
) {
|
|
1987
|
+
var count =
|
|
1988
|
+
(position.array.length - prevLength) / position.stride;
|
|
1924
1989
|
|
|
1925
1990
|
for (var i = 0; i < count; i++) {
|
|
1926
1991
|
// fill missing uv coordinates
|
|
@@ -1931,22 +1996,42 @@ THREE.ColladaLoader.prototype = {
|
|
|
1931
1996
|
break;
|
|
1932
1997
|
|
|
1933
1998
|
case "NORMAL":
|
|
1934
|
-
buildGeometryData(
|
|
1999
|
+
buildGeometryData(
|
|
2000
|
+
primitive,
|
|
2001
|
+
sources[id],
|
|
2002
|
+
input.offset,
|
|
2003
|
+
normal.array
|
|
2004
|
+
);
|
|
1935
2005
|
normal.stride = sources[id].stride;
|
|
1936
2006
|
break;
|
|
1937
2007
|
|
|
1938
2008
|
case "COLOR":
|
|
1939
|
-
buildGeometryData(
|
|
2009
|
+
buildGeometryData(
|
|
2010
|
+
primitive,
|
|
2011
|
+
sources[id],
|
|
2012
|
+
input.offset,
|
|
2013
|
+
color.array
|
|
2014
|
+
);
|
|
1940
2015
|
color.stride = sources[id].stride;
|
|
1941
2016
|
break;
|
|
1942
2017
|
|
|
1943
2018
|
case "TEXCOORD":
|
|
1944
|
-
buildGeometryData(
|
|
2019
|
+
buildGeometryData(
|
|
2020
|
+
primitive,
|
|
2021
|
+
sources[id],
|
|
2022
|
+
input.offset,
|
|
2023
|
+
uv.array
|
|
2024
|
+
);
|
|
1945
2025
|
uv.stride = sources[id].stride;
|
|
1946
2026
|
break;
|
|
1947
2027
|
|
|
1948
2028
|
case "TEXCOORD1":
|
|
1949
|
-
buildGeometryData(
|
|
2029
|
+
buildGeometryData(
|
|
2030
|
+
primitive,
|
|
2031
|
+
sources[id],
|
|
2032
|
+
input.offset,
|
|
2033
|
+
uv2.array
|
|
2034
|
+
);
|
|
1950
2035
|
uv.stride = sources[id].stride;
|
|
1951
2036
|
break;
|
|
1952
2037
|
|
|
@@ -1960,22 +2045,42 @@ THREE.ColladaLoader.prototype = {
|
|
|
1960
2045
|
break;
|
|
1961
2046
|
|
|
1962
2047
|
case "NORMAL":
|
|
1963
|
-
buildGeometryData(
|
|
2048
|
+
buildGeometryData(
|
|
2049
|
+
primitive,
|
|
2050
|
+
sources[input.id],
|
|
2051
|
+
input.offset,
|
|
2052
|
+
normal.array
|
|
2053
|
+
);
|
|
1964
2054
|
normal.stride = sources[input.id].stride;
|
|
1965
2055
|
break;
|
|
1966
2056
|
|
|
1967
2057
|
case "COLOR":
|
|
1968
|
-
buildGeometryData(
|
|
2058
|
+
buildGeometryData(
|
|
2059
|
+
primitive,
|
|
2060
|
+
sources[input.id],
|
|
2061
|
+
input.offset,
|
|
2062
|
+
color.array
|
|
2063
|
+
);
|
|
1969
2064
|
color.stride = sources[input.id].stride;
|
|
1970
2065
|
break;
|
|
1971
2066
|
|
|
1972
2067
|
case "TEXCOORD":
|
|
1973
|
-
buildGeometryData(
|
|
2068
|
+
buildGeometryData(
|
|
2069
|
+
primitive,
|
|
2070
|
+
sources[input.id],
|
|
2071
|
+
input.offset,
|
|
2072
|
+
uv.array
|
|
2073
|
+
);
|
|
1974
2074
|
uv.stride = sources[input.id].stride;
|
|
1975
2075
|
break;
|
|
1976
2076
|
|
|
1977
2077
|
case "TEXCOORD1":
|
|
1978
|
-
buildGeometryData(
|
|
2078
|
+
buildGeometryData(
|
|
2079
|
+
primitive,
|
|
2080
|
+
sources[input.id],
|
|
2081
|
+
input.offset,
|
|
2082
|
+
uv2.array
|
|
2083
|
+
);
|
|
1979
2084
|
uv2.stride = sources[input.id].stride;
|
|
1980
2085
|
break;
|
|
1981
2086
|
}
|
|
@@ -1995,11 +2100,20 @@ THREE.ColladaLoader.prototype = {
|
|
|
1995
2100
|
new THREE.Float32BufferAttribute(normal.array, normal.stride)
|
|
1996
2101
|
);
|
|
1997
2102
|
if (color.array.length > 0)
|
|
1998
|
-
geometry.addAttribute(
|
|
2103
|
+
geometry.addAttribute(
|
|
2104
|
+
"color",
|
|
2105
|
+
new THREE.Float32BufferAttribute(color.array, color.stride)
|
|
2106
|
+
);
|
|
1999
2107
|
if (uv.array.length > 0)
|
|
2000
|
-
geometry.addAttribute(
|
|
2108
|
+
geometry.addAttribute(
|
|
2109
|
+
"uv",
|
|
2110
|
+
new THREE.Float32BufferAttribute(uv.array, uv.stride)
|
|
2111
|
+
);
|
|
2001
2112
|
if (uv2.array.length > 0)
|
|
2002
|
-
geometry.addAttribute(
|
|
2113
|
+
geometry.addAttribute(
|
|
2114
|
+
"uv2",
|
|
2115
|
+
new THREE.Float32BufferAttribute(uv2.array, uv2.stride)
|
|
2116
|
+
);
|
|
2003
2117
|
|
|
2004
2118
|
if (skinIndex.array.length > 0)
|
|
2005
2119
|
geometry.addAttribute(
|
|
@@ -2093,7 +2207,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2093
2207
|
var data = {
|
|
2094
2208
|
name: xml.getAttribute("name") || "",
|
|
2095
2209
|
joints: {},
|
|
2096
|
-
links: []
|
|
2210
|
+
links: []
|
|
2097
2211
|
};
|
|
2098
2212
|
|
|
2099
2213
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2129,7 +2243,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
2129
2243
|
|
|
2130
2244
|
switch (child.nodeName) {
|
|
2131
2245
|
case "joint":
|
|
2132
|
-
data.joints[child.getAttribute("sid")] = parseKinematicsJoint(
|
|
2246
|
+
data.joints[child.getAttribute("sid")] = parseKinematicsJoint(
|
|
2247
|
+
child
|
|
2248
|
+
);
|
|
2133
2249
|
break;
|
|
2134
2250
|
|
|
2135
2251
|
case "link":
|
|
@@ -2165,12 +2281,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
2165
2281
|
axis: new THREE.Vector3(),
|
|
2166
2282
|
limits: {
|
|
2167
2283
|
min: 0,
|
|
2168
|
-
max: 0
|
|
2284
|
+
max: 0
|
|
2169
2285
|
},
|
|
2170
2286
|
type: xml.nodeName,
|
|
2171
2287
|
static: false,
|
|
2172
2288
|
zeroPosition: 0,
|
|
2173
|
-
middlePosition: 0
|
|
2289
|
+
middlePosition: 0
|
|
2174
2290
|
};
|
|
2175
2291
|
|
|
2176
2292
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2211,7 +2327,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2211
2327
|
sid: xml.getAttribute("sid"),
|
|
2212
2328
|
name: xml.getAttribute("name") || "",
|
|
2213
2329
|
attachments: [],
|
|
2214
|
-
transforms: []
|
|
2330
|
+
transforms: []
|
|
2215
2331
|
};
|
|
2216
2332
|
|
|
2217
2333
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2242,7 +2358,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2242
2358
|
.split("/")
|
|
2243
2359
|
.pop(),
|
|
2244
2360
|
transforms: [],
|
|
2245
|
-
links: []
|
|
2361
|
+
links: []
|
|
2246
2362
|
};
|
|
2247
2363
|
|
|
2248
2364
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2268,7 +2384,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2268
2384
|
|
|
2269
2385
|
function parseKinematicsTransform(xml) {
|
|
2270
2386
|
var data = {
|
|
2271
|
-
type: xml.nodeName
|
|
2387
|
+
type: xml.nodeName
|
|
2272
2388
|
};
|
|
2273
2389
|
|
|
2274
2390
|
var array = parseFloats(xml.textContent);
|
|
@@ -2299,7 +2415,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2299
2415
|
function parsePhysicsModel(xml) {
|
|
2300
2416
|
var data = {
|
|
2301
2417
|
name: xml.getAttribute("name") || "",
|
|
2302
|
-
rigidBodies: {}
|
|
2418
|
+
rigidBodies: {}
|
|
2303
2419
|
};
|
|
2304
2420
|
|
|
2305
2421
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2310,7 +2426,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
2310
2426
|
switch (child.nodeName) {
|
|
2311
2427
|
case "rigid_body":
|
|
2312
2428
|
data.rigidBodies[child.getAttribute("name")] = {};
|
|
2313
|
-
parsePhysicsRigidBody(
|
|
2429
|
+
parsePhysicsRigidBody(
|
|
2430
|
+
child,
|
|
2431
|
+
data.rigidBodies[child.getAttribute("name")]
|
|
2432
|
+
);
|
|
2314
2433
|
break;
|
|
2315
2434
|
}
|
|
2316
2435
|
}
|
|
@@ -2354,7 +2473,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2354
2473
|
|
|
2355
2474
|
function parseKinematicsScene(xml) {
|
|
2356
2475
|
var data = {
|
|
2357
|
-
bindJointAxis: []
|
|
2476
|
+
bindJointAxis: []
|
|
2358
2477
|
};
|
|
2359
2478
|
|
|
2360
2479
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2377,7 +2496,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2377
2496
|
target: xml
|
|
2378
2497
|
.getAttribute("target")
|
|
2379
2498
|
.split("/")
|
|
2380
|
-
.pop()
|
|
2499
|
+
.pop()
|
|
2381
2500
|
};
|
|
2382
2501
|
|
|
2383
2502
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2416,7 +2535,8 @@ THREE.ColladaLoader.prototype = {
|
|
|
2416
2535
|
var kinematicsSceneId = Object.keys(library.kinematicsScenes)[0];
|
|
2417
2536
|
var visualSceneId = Object.keys(library.visualScenes)[0];
|
|
2418
2537
|
|
|
2419
|
-
if (kinematicsModelId === undefined || kinematicsSceneId === undefined)
|
|
2538
|
+
if (kinematicsModelId === undefined || kinematicsSceneId === undefined)
|
|
2539
|
+
return;
|
|
2420
2540
|
|
|
2421
2541
|
var kinematicsModel = getKinematicsModel(kinematicsModelId);
|
|
2422
2542
|
var kinematicsScene = getKinematicsScene(kinematicsSceneId);
|
|
@@ -2430,7 +2550,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
2430
2550
|
|
|
2431
2551
|
// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'
|
|
2432
2552
|
|
|
2433
|
-
var targetElement = collada.querySelector(
|
|
2553
|
+
var targetElement = collada.querySelector(
|
|
2554
|
+
'[sid="' + axis.target + '"]'
|
|
2555
|
+
);
|
|
2434
2556
|
|
|
2435
2557
|
if (targetElement) {
|
|
2436
2558
|
// get the parent of the transfrom element
|
|
@@ -2439,7 +2561,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
2439
2561
|
|
|
2440
2562
|
// connect the joint of the kinematics model with the element in the visual scene
|
|
2441
2563
|
|
|
2442
|
-
connect(
|
|
2564
|
+
connect(
|
|
2565
|
+
axis.jointIndex,
|
|
2566
|
+
parentVisualElement
|
|
2567
|
+
);
|
|
2443
2568
|
}
|
|
2444
2569
|
}
|
|
2445
2570
|
|
|
@@ -2453,7 +2578,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2453
2578
|
object: object,
|
|
2454
2579
|
transforms: buildTransformList(visualElement),
|
|
2455
2580
|
joint: joint,
|
|
2456
|
-
position: joint.zeroPosition
|
|
2581
|
+
position: joint.zeroPosition
|
|
2457
2582
|
};
|
|
2458
2583
|
}
|
|
2459
2584
|
});
|
|
@@ -2470,7 +2595,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
2470
2595
|
if (jointData) {
|
|
2471
2596
|
return jointData.position;
|
|
2472
2597
|
} else {
|
|
2473
|
-
console.warn(
|
|
2598
|
+
console.warn(
|
|
2599
|
+
"THREE.ColladaLoader: Joint " + jointIndex + " doesn't exist."
|
|
2600
|
+
);
|
|
2474
2601
|
}
|
|
2475
2602
|
},
|
|
2476
2603
|
|
|
@@ -2493,7 +2620,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
2493
2620
|
")."
|
|
2494
2621
|
);
|
|
2495
2622
|
} else if (joint.static) {
|
|
2496
|
-
console.warn(
|
|
2623
|
+
console.warn(
|
|
2624
|
+
"THREE.ColladaLoader: Joint " + jointIndex + " is static."
|
|
2625
|
+
);
|
|
2497
2626
|
} else {
|
|
2498
2627
|
var object = jointData.object;
|
|
2499
2628
|
var axis = joint.axis;
|
|
@@ -2511,17 +2640,25 @@ THREE.ColladaLoader.prototype = {
|
|
|
2511
2640
|
if (transform.sid && transform.sid.indexOf(jointIndex) !== -1) {
|
|
2512
2641
|
switch (joint.type) {
|
|
2513
2642
|
case "revolute":
|
|
2514
|
-
matrix.multiply(
|
|
2643
|
+
matrix.multiply(
|
|
2644
|
+
m0.makeRotationAxis(axis, THREE.Math.degToRad(value))
|
|
2645
|
+
);
|
|
2515
2646
|
break;
|
|
2516
2647
|
|
|
2517
2648
|
case "prismatic":
|
|
2518
2649
|
matrix.multiply(
|
|
2519
|
-
m0.makeTranslation(
|
|
2650
|
+
m0.makeTranslation(
|
|
2651
|
+
axis.x * value,
|
|
2652
|
+
axis.y * value,
|
|
2653
|
+
axis.z * value
|
|
2654
|
+
)
|
|
2520
2655
|
);
|
|
2521
2656
|
break;
|
|
2522
2657
|
|
|
2523
2658
|
default:
|
|
2524
|
-
console.warn(
|
|
2659
|
+
console.warn(
|
|
2660
|
+
"THREE.ColladaLoader: Unknown joint type: " + joint.type
|
|
2661
|
+
);
|
|
2525
2662
|
break;
|
|
2526
2663
|
}
|
|
2527
2664
|
} else {
|
|
@@ -2532,7 +2669,11 @@ THREE.ColladaLoader.prototype = {
|
|
|
2532
2669
|
|
|
2533
2670
|
case "translate":
|
|
2534
2671
|
matrix.multiply(
|
|
2535
|
-
m0.makeTranslation(
|
|
2672
|
+
m0.makeTranslation(
|
|
2673
|
+
transform.obj.x,
|
|
2674
|
+
transform.obj.y,
|
|
2675
|
+
transform.obj.z
|
|
2676
|
+
)
|
|
2536
2677
|
);
|
|
2537
2678
|
break;
|
|
2538
2679
|
|
|
@@ -2541,21 +2682,29 @@ THREE.ColladaLoader.prototype = {
|
|
|
2541
2682
|
break;
|
|
2542
2683
|
|
|
2543
2684
|
case "rotate":
|
|
2544
|
-
matrix.multiply(
|
|
2685
|
+
matrix.multiply(
|
|
2686
|
+
m0.makeRotationAxis(transform.obj, transform.angle)
|
|
2687
|
+
);
|
|
2545
2688
|
break;
|
|
2546
2689
|
}
|
|
2547
2690
|
}
|
|
2548
2691
|
}
|
|
2549
2692
|
|
|
2550
2693
|
object.matrix.copy(matrix);
|
|
2551
|
-
object.matrix.decompose(
|
|
2694
|
+
object.matrix.decompose(
|
|
2695
|
+
object.position,
|
|
2696
|
+
object.quaternion,
|
|
2697
|
+
object.scale
|
|
2698
|
+
);
|
|
2552
2699
|
|
|
2553
2700
|
jointMap[jointIndex].position = value;
|
|
2554
2701
|
}
|
|
2555
2702
|
} else {
|
|
2556
|
-
console.log(
|
|
2703
|
+
console.log(
|
|
2704
|
+
"THREE.ColladaLoader: " + jointIndex + " does not exist."
|
|
2705
|
+
);
|
|
2557
2706
|
}
|
|
2558
|
-
}
|
|
2707
|
+
}
|
|
2559
2708
|
};
|
|
2560
2709
|
}
|
|
2561
2710
|
|
|
@@ -2576,7 +2725,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2576
2725
|
transforms.push({
|
|
2577
2726
|
sid: child.getAttribute("sid"),
|
|
2578
2727
|
type: child.nodeName,
|
|
2579
|
-
obj: matrix
|
|
2728
|
+
obj: matrix
|
|
2580
2729
|
});
|
|
2581
2730
|
break;
|
|
2582
2731
|
|
|
@@ -2587,7 +2736,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2587
2736
|
transforms.push({
|
|
2588
2737
|
sid: child.getAttribute("sid"),
|
|
2589
2738
|
type: child.nodeName,
|
|
2590
|
-
obj: vector
|
|
2739
|
+
obj: vector
|
|
2591
2740
|
});
|
|
2592
2741
|
break;
|
|
2593
2742
|
|
|
@@ -2599,7 +2748,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2599
2748
|
sid: child.getAttribute("sid"),
|
|
2600
2749
|
type: child.nodeName,
|
|
2601
2750
|
obj: vector,
|
|
2602
|
-
angle: angle
|
|
2751
|
+
angle: angle
|
|
2603
2752
|
});
|
|
2604
2753
|
break;
|
|
2605
2754
|
}
|
|
@@ -2640,7 +2789,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2640
2789
|
instanceLights: [],
|
|
2641
2790
|
instanceGeometries: [],
|
|
2642
2791
|
instanceNodes: [],
|
|
2643
|
-
transforms: {}
|
|
2792
|
+
transforms: {}
|
|
2644
2793
|
};
|
|
2645
2794
|
|
|
2646
2795
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2683,14 +2832,18 @@ THREE.ColladaLoader.prototype = {
|
|
|
2683
2832
|
case "translate":
|
|
2684
2833
|
var array = parseFloats(child.textContent);
|
|
2685
2834
|
vector.fromArray(array);
|
|
2686
|
-
data.matrix.multiply(
|
|
2835
|
+
data.matrix.multiply(
|
|
2836
|
+
matrix.makeTranslation(vector.x, vector.y, vector.z)
|
|
2837
|
+
);
|
|
2687
2838
|
data.transforms[child.getAttribute("sid")] = child.nodeName;
|
|
2688
2839
|
break;
|
|
2689
2840
|
|
|
2690
2841
|
case "rotate":
|
|
2691
2842
|
var array = parseFloats(child.textContent);
|
|
2692
2843
|
var angle = THREE.Math.degToRad(array[3]);
|
|
2693
|
-
data.matrix.multiply(
|
|
2844
|
+
data.matrix.multiply(
|
|
2845
|
+
matrix.makeRotationAxis(vector.fromArray(array), angle)
|
|
2846
|
+
);
|
|
2694
2847
|
data.transforms[child.getAttribute("sid")] = child.nodeName;
|
|
2695
2848
|
break;
|
|
2696
2849
|
|
|
@@ -2724,7 +2877,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2724
2877
|
var data = {
|
|
2725
2878
|
id: parseId(xml.getAttribute("url")),
|
|
2726
2879
|
materials: {},
|
|
2727
|
-
skeletons: []
|
|
2880
|
+
skeletons: []
|
|
2728
2881
|
};
|
|
2729
2882
|
|
|
2730
2883
|
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
@@ -2866,7 +3019,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
2866
3019
|
boneData.push({
|
|
2867
3020
|
bone: object,
|
|
2868
3021
|
boneInverse: boneInverse,
|
|
2869
|
-
processed: false
|
|
3022
|
+
processed: false
|
|
2870
3023
|
});
|
|
2871
3024
|
}
|
|
2872
3025
|
});
|
|
@@ -3007,7 +3160,10 @@ THREE.ColladaLoader.prototype = {
|
|
|
3007
3160
|
for (var type in geometries) {
|
|
3008
3161
|
var geometry = geometries[type];
|
|
3009
3162
|
|
|
3010
|
-
var materials = resolveMaterialBinding(
|
|
3163
|
+
var materials = resolveMaterialBinding(
|
|
3164
|
+
geometry.materialKeys,
|
|
3165
|
+
instanceMaterials
|
|
3166
|
+
);
|
|
3011
3167
|
|
|
3012
3168
|
// handle case if no materials are defined
|
|
3013
3169
|
|
|
@@ -3075,7 +3231,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
3075
3231
|
function parseVisualScene(xml) {
|
|
3076
3232
|
var data = {
|
|
3077
3233
|
name: xml.getAttribute("name"),
|
|
3078
|
-
children: []
|
|
3234
|
+
children: []
|
|
3079
3235
|
};
|
|
3080
3236
|
|
|
3081
3237
|
prepareNodes(xml);
|
|
@@ -3160,7 +3316,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
3160
3316
|
|
|
3161
3317
|
var asset = parseAsset(getElementsByTagName(collada, "asset")[0]);
|
|
3162
3318
|
var textureLoader = new THREE.TextureLoader(this.manager);
|
|
3163
|
-
textureLoader
|
|
3319
|
+
textureLoader
|
|
3320
|
+
.setPath(this.resourcePath || path)
|
|
3321
|
+
.setCrossOrigin(this.crossOrigin);
|
|
3164
3322
|
|
|
3165
3323
|
var tgaLoader;
|
|
3166
3324
|
|
|
@@ -3191,11 +3349,16 @@ THREE.ColladaLoader.prototype = {
|
|
|
3191
3349
|
visualScenes: {},
|
|
3192
3350
|
kinematicsModels: {},
|
|
3193
3351
|
physicsModels: {},
|
|
3194
|
-
kinematicsScenes: {}
|
|
3352
|
+
kinematicsScenes: {}
|
|
3195
3353
|
};
|
|
3196
3354
|
|
|
3197
3355
|
parseLibrary(collada, "library_animations", "animation", parseAnimation);
|
|
3198
|
-
parseLibrary(
|
|
3356
|
+
parseLibrary(
|
|
3357
|
+
collada,
|
|
3358
|
+
"library_animation_clips",
|
|
3359
|
+
"animation_clip",
|
|
3360
|
+
parseAnimationClip
|
|
3361
|
+
);
|
|
3199
3362
|
parseLibrary(collada, "library_controllers", "controller", parseController);
|
|
3200
3363
|
parseLibrary(collada, "library_images", "image", parseImage);
|
|
3201
3364
|
parseLibrary(collada, "library_effects", "effect", parseEffect);
|
|
@@ -3204,10 +3367,30 @@ THREE.ColladaLoader.prototype = {
|
|
|
3204
3367
|
parseLibrary(collada, "library_lights", "light", parseLight);
|
|
3205
3368
|
parseLibrary(collada, "library_geometries", "geometry", parseGeometry);
|
|
3206
3369
|
parseLibrary(collada, "library_nodes", "node", parseNode);
|
|
3207
|
-
parseLibrary(
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3370
|
+
parseLibrary(
|
|
3371
|
+
collada,
|
|
3372
|
+
"library_visual_scenes",
|
|
3373
|
+
"visual_scene",
|
|
3374
|
+
parseVisualScene
|
|
3375
|
+
);
|
|
3376
|
+
parseLibrary(
|
|
3377
|
+
collada,
|
|
3378
|
+
"library_kinematics_models",
|
|
3379
|
+
"kinematics_model",
|
|
3380
|
+
parseKinematicsModel
|
|
3381
|
+
);
|
|
3382
|
+
parseLibrary(
|
|
3383
|
+
collada,
|
|
3384
|
+
"library_physics_models",
|
|
3385
|
+
"physics_model",
|
|
3386
|
+
parsePhysicsModel
|
|
3387
|
+
);
|
|
3388
|
+
parseLibrary(
|
|
3389
|
+
collada,
|
|
3390
|
+
"scene",
|
|
3391
|
+
"instance_kinematics_scene",
|
|
3392
|
+
parseKinematicsScene
|
|
3393
|
+
);
|
|
3211
3394
|
|
|
3212
3395
|
buildLibrary(library.animations, buildAnimation);
|
|
3213
3396
|
buildLibrary(library.clips, buildAnimationClip);
|
|
@@ -3235,9 +3418,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
3235
3418
|
animations: animations,
|
|
3236
3419
|
kinematics: kinematics,
|
|
3237
3420
|
library: library,
|
|
3238
|
-
scene: scene
|
|
3421
|
+
scene: scene
|
|
3239
3422
|
};
|
|
3240
|
-
}
|
|
3423
|
+
}
|
|
3241
3424
|
};
|
|
3242
3425
|
|
|
3243
3426
|
// important: don't forget to export it
|