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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elation-engine",
3
3
  "description": "WebGL/WebVR engine written in Javascript",
4
- "version": "0.9.113",
4
+ "version": "0.9.114",
5
5
  "main": "",
6
6
  "author": "James Baicoianu",
7
7
  "license": "MIT",
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 proxypath = this.getProxiedURL(jobdata.src);
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);
@@ -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
  }