elation-engine 0.9.113 → 0.9.114
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/package.json +1 -1
- package/scripts/assets.js +24 -2
- package/scripts/assetworker.js +17 -0
- package/scripts/external/three/three-extras.js +1549 -388
- package/scripts/external/three/three-icosa.js +2575 -0
- package/scripts/external/three/three-loaders.js +925 -133
- package/scripts/external/three/three.js +5225 -4843
- package/scripts/things/player.js +4 -1
package/package.json
CHANGED
package/scripts/assets.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.external.libgif', 'engine.external.textdecoder-polyfill', 'engine.external.three.three-loaders', 'engine.external.three.three-vrm'], function() {
|
|
1
|
+
elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.external.libgif', 'engine.external.textdecoder-polyfill', 'engine.external.three.three-loaders', 'engine.external.three.three-vrm', 'engine.external.three.three-icosa'], function() {
|
|
2
2
|
|
|
3
3
|
THREE.Cache.enabled = true;
|
|
4
4
|
|
|
@@ -86,6 +86,10 @@ elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.exte
|
|
|
86
86
|
basisloader.detectSupport(renderer);
|
|
87
87
|
this.basisloader = basisloader;
|
|
88
88
|
|
|
89
|
+
this.ktx2loader = new THREE.KTX2Loader();
|
|
90
|
+
this.ktx2loader.setTranscoderPath(libpath);
|
|
91
|
+
this.ktx2loader.detectSupport(renderer);
|
|
92
|
+
|
|
89
93
|
let pmremGenerator = new THREE.PMREMGenerator( renderer );
|
|
90
94
|
pmremGenerator.compileEquirectangularShader();
|
|
91
95
|
this.pmremGenerator = pmremGenerator;
|
|
@@ -594,6 +598,14 @@ if (!ENV_IS_BROWSER) return;
|
|
|
594
598
|
blob.arrayBuffer()
|
|
595
599
|
.then(buffer => loader._createTexture(buffer))
|
|
596
600
|
.then(texture => this.handleLoadBasis(texture))
|
|
601
|
+
} else if (imagetype == 'hdr') {
|
|
602
|
+
let loader = new THREE.RGBELoader();
|
|
603
|
+
loader.load(fullurl, texture => {
|
|
604
|
+
this._texture = texture;
|
|
605
|
+
this.loaded = true;
|
|
606
|
+
this.uploaded = false;
|
|
607
|
+
this.sendLoadEvents();
|
|
608
|
+
});
|
|
597
609
|
} else if (imagetype == 'exr') {
|
|
598
610
|
// TODO - this should probably done off-thread if possible, it currently locks rendering for a noticable amount of time
|
|
599
611
|
let loader = new THREE.EXRLoader();
|
|
@@ -1431,11 +1443,20 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1431
1443
|
return isGLB;
|
|
1432
1444
|
},
|
|
1433
1445
|
loadglTF: function(jobdata) {
|
|
1434
|
-
let
|
|
1446
|
+
let dirpathparts = jobdata.src.split('/');
|
|
1447
|
+
dirpathparts[dirpathparts.length-1] = '';
|
|
1448
|
+
let proxypath = this.getProxiedURL(dirpathparts.join('/'));
|
|
1435
1449
|
var loader = new THREE.GLTFLoader();
|
|
1436
1450
|
if (elation.engine.assets.dracopath) {
|
|
1437
1451
|
loader.setDRACOLoader(new THREE.DRACOLoader().setDecoderPath(elation.engine.assets.dracopath));
|
|
1438
1452
|
}
|
|
1453
|
+
if (elation.engine.assets.ktx2loader) {
|
|
1454
|
+
loader.setKTX2Loader(elation.engine.assets.ktx2loader);
|
|
1455
|
+
}
|
|
1456
|
+
if (elation.engine.assets.icosapath) {
|
|
1457
|
+
loader.register(parser => new THREE.GLTFGoogleTiltBrushMaterialExtension(parser, elation.engine.assets.icosapath));
|
|
1458
|
+
}
|
|
1459
|
+
loader.setMeshoptDecoder(MeshoptDecoder);
|
|
1439
1460
|
this._model = new THREE.Group();
|
|
1440
1461
|
this._model.userData.loaded = false;
|
|
1441
1462
|
loader.parse(jobdata.srcdata, proxypath, elation.bind(this, function(modeldata) {
|
|
@@ -1560,6 +1581,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1560
1581
|
if (tex) { // && tex.image instanceof HTMLImageElement) {
|
|
1561
1582
|
var img = tex.image;
|
|
1562
1583
|
var src = img.originalSrc || img.src;
|
|
1584
|
+
if (!src) return;
|
|
1563
1585
|
if (!textures[src]) {
|
|
1564
1586
|
//elation.engine.assets.loadJSON([{"assettype": "image", name: src, "src": src}], this.baseurl);
|
|
1565
1587
|
//tex = elation.engine.assets.find('image', src);
|
package/scripts/assetworker.js
CHANGED
|
@@ -448,6 +448,23 @@ elation.require([
|
|
|
448
448
|
return new Promise(function(resolve, reject) {
|
|
449
449
|
var loader = new THREE.FBXLoader();
|
|
450
450
|
var modeldata = loader.parse(data);
|
|
451
|
+
let mapnames = ['map', 'normalMap', 'aoMap', 'bumpMap', 'alphaMap', 'emissiveMap', 'envMap', 'lightMap', 'specularMap'];
|
|
452
|
+
let baseurl = job.data.src.substr( 0, job.data.src.lastIndexOf( "/" ) + 1 );
|
|
453
|
+
modeldata.traverse(n => {
|
|
454
|
+
if (n.material) {
|
|
455
|
+
mapnames.forEach(m => {
|
|
456
|
+
if (n.material[m]) {
|
|
457
|
+
let map = n.material[m];
|
|
458
|
+
if (map.image && map.image.src.indexOf(':') == -1) {
|
|
459
|
+
map.image.src = baseurl + map.image.src;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
} else if (n instanceof THREE.Bone) {
|
|
464
|
+
let name = n.name.replace('mixamorig', '');
|
|
465
|
+
n.name = name[0].toLowerCase() + name.substring(1);
|
|
466
|
+
}
|
|
467
|
+
});
|
|
451
468
|
resolve(modeldata.toJSON());
|
|
452
469
|
});
|
|
453
470
|
}
|