@galacean/engine 1.1.2 → 1.1.3

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/dist/browser.js CHANGED
@@ -39579,7 +39579,7 @@
39579
39579
  var glTFItems = this.glTF[glTFSchemaMap[type]];
39580
39580
  if (glTFItems && (index === undefined || glTFItems[index])) {
39581
39581
  if (index === undefined) {
39582
- resource = type === 7 ? glTFItems.map(function(_, index) {
39582
+ resource = type === 8 ? glTFItems.map(function(_, index) {
39583
39583
  return _this.get(type, index);
39584
39584
  }) : Promise.all(glTFItems.map(function(_, index) {
39585
39585
  return _this.get(type, index);
@@ -39601,11 +39601,11 @@
39601
39601
  _this.glTF = json;
39602
39602
  return Promise.all([
39603
39603
  _this.get(1),
39604
- _this.get(4),
39605
39604
  _this.get(5),
39606
39605
  _this.get(6),
39607
- _this.get(8),
39606
+ _this.get(7),
39608
39607
  _this.get(9),
39608
+ _this.get(10),
39609
39609
  _this.get(2)
39610
39610
  ]).then(function() {
39611
39611
  var glTFResource = _this.glTFResource;
@@ -39643,7 +39643,7 @@
39643
39643
  var _this = this;
39644
39644
  var glTFResourceKey = glTFResourceMap[type];
39645
39645
  if (!glTFResourceKey) return;
39646
- if (type === 7) {
39646
+ if (type === 8) {
39647
39647
  var _this_glTFResource, _glTFResourceKey;
39648
39648
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
39649
39649
  } else {
@@ -39651,7 +39651,7 @@
39651
39651
  resource.then(function(item) {
39652
39652
  var _this_glTFResource, _glTFResourceKey;
39653
39653
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
39654
- if (type === 6) {
39654
+ if (type === 7) {
39655
39655
  for(var i = 0, length = item.length; i < length; i++){
39656
39656
  var mesh = item[i];
39657
39657
  // @ts-ignore
@@ -39691,17 +39691,18 @@
39691
39691
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
39692
39692
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
39693
39693
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
39694
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
39695
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
39696
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
39697
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
39698
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
39699
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
39694
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
39695
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
39696
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
39697
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
39698
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
39699
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
39700
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
39700
39701
  })(exports.GLTFParserType || (exports.GLTFParserType = {}));
39701
39702
  var _obj;
39702
- var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[4] = "textures", _obj[5] = "materials", _obj[6] = "meshes", _obj[7] = "nodes", _obj[8] = "skins", _obj[9] = "animations", _obj);
39703
+ var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[5] = "textures", _obj[6] = "materials", _obj[7] = "meshes", _obj[8] = "nodes", _obj[9] = "skins", _obj[10] = "animations", _obj[4] = "bufferViews", _obj);
39703
39704
  var _obj1;
39704
- var glTFResourceMap = (_obj1 = {}, _obj1[2] = "sceneRoots", _obj1[4] = "textures", _obj1[5] = "materials", _obj1[6] = "meshes", _obj1[7] = "entities", _obj1[8] = "skins", _obj1[9] = "animations", _obj1);
39705
+ var glTFResourceMap = (_obj1 = {}, _obj1[2] = "sceneRoots", _obj1[5] = "textures", _obj1[6] = "materials", _obj1[7] = "meshes", _obj1[8] = "entities", _obj1[9] = "skins", _obj1[10] = "animations", _obj1);
39705
39706
  function registerGLTFParser(pipeline) {
39706
39707
  return function(Parser) {
39707
39708
  var parser = new Parser();
@@ -39805,113 +39806,68 @@
39805
39806
  };
39806
39807
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
39807
39808
  var componentType = accessor.componentType;
39808
- var _accessor_bufferView;
39809
- var bufferViewIndex = (_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0;
39810
- var bufferView = bufferViews[bufferViewIndex];
39811
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
39812
- var bufferIndex = bufferView.buffer;
39813
- var buffer = buffers[bufferIndex];
39814
- var _bufferView_byteOffset;
39815
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
39816
- var _accessor_byteOffset;
39817
- var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
39818
- var TypedArray = GLTFUtils.getComponentType(componentType);
39819
- var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
39820
- var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
39821
- var elementStride = dataElementSize * dataElementBytes;
39822
- var accessorCount = accessor.count;
39823
- var bufferStride = bufferView.byteStride;
39824
- var bufferInfo;
39825
- // According to the glTF official documentation only byteStride not undefined is allowed
39826
- if (bufferStride !== undefined && bufferStride !== elementStride) {
39827
- var bufferSlice = Math.floor(byteOffset / bufferStride);
39828
- var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
39829
- var accessorBufferCache = context.accessorBufferCache;
39830
- bufferInfo = accessorBufferCache[bufferCacheKey];
39831
- if (!bufferInfo) {
39832
- var offset = bufferByteOffset + bufferSlice * bufferStride;
39833
- var count = accessorCount * (bufferStride / dataElementBytes);
39834
- var data = new TypedArray(buffer, offset, count);
39835
- accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
39836
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
39809
+ var TypedArray = GLTFUtils.getComponentType(componentType);
39810
+ var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
39811
+ var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
39812
+ var elementStride = dataElementSize * dataElementBytes;
39813
+ var accessorCount = accessor.count;
39814
+ var promise;
39815
+ if (accessor.bufferView !== undefined) {
39816
+ var bufferViewIndex = accessor.bufferView;
39817
+ var bufferView = bufferViews[bufferViewIndex];
39818
+ promise = context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
39819
+ var bufferIndex = bufferView.buffer;
39820
+ var _bufferViewData_byteOffset;
39821
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
39822
+ var _accessor_byteOffset;
39823
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
39824
+ var bufferStride = bufferView.byteStride;
39825
+ var bufferInfo;
39826
+ // According to the glTF official documentation only byteStride not undefined is allowed
39827
+ if (bufferStride !== undefined && bufferStride !== elementStride) {
39828
+ var bufferSlice = Math.floor(byteOffset / bufferStride);
39829
+ var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
39830
+ var accessorBufferCache = context.accessorBufferCache;
39831
+ bufferInfo = accessorBufferCache[bufferCacheKey];
39832
+ if (!bufferInfo) {
39833
+ var offset = bufferByteOffset + bufferSlice * bufferStride;
39834
+ var count = accessorCount * (bufferStride / dataElementBytes);
39835
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
39836
+ accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
39837
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
39838
+ }
39839
+ } else {
39840
+ var offset1 = bufferByteOffset + byteOffset;
39841
+ var count1 = accessorCount * dataElementSize;
39842
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
39843
+ bufferInfo = new BufferInfo(data1, false, elementStride);
39844
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
39837
39845
  }
39838
- } else {
39839
- var offset1 = bufferByteOffset + byteOffset;
39840
- var count1 = accessorCount * dataElementSize;
39841
- var data1 = new TypedArray(buffer, offset1, count1);
39842
- bufferInfo = new BufferInfo(data1, false, elementStride);
39843
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
39844
- }
39845
- if (accessor.sparse) {
39846
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
39847
- }
39848
- return bufferInfo;
39849
- });
39846
+ return bufferInfo;
39847
+ });
39848
+ } else {
39849
+ var count = accessorCount * dataElementSize;
39850
+ var data = new TypedArray(count);
39851
+ var bufferInfo = new BufferInfo(data, false, elementStride);
39852
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
39853
+ promise = Promise.resolve(bufferInfo);
39854
+ }
39855
+ return accessor.sparse ? promise.then(function(bufferInfo) {
39856
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
39857
+ return bufferInfo;
39858
+ });
39859
+ }) : promise;
39850
39860
  };
39851
- GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
39852
- var bytesPerElement = data.BYTES_PER_ELEMENT;
39853
- var offset = accessorByteOffset % byteStride / bytesPerElement;
39854
- var stride = byteStride / bytesPerElement;
39855
- var vector3s = new Array(count);
39861
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
39862
+ var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
39863
+ var stride = buffer.length / count;
39864
+ var vertices = new Array(count);
39865
+ var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
39856
39866
  for(var i = 0; i < count; i++){
39857
- var index = offset + i * stride;
39858
- vector3s[i] = new Vector3(data[index], data[index + 1], data[index + 2]);
39859
- }
39860
- return vector3s;
39861
- };
39862
- /**
39863
- * @deprecated
39864
- * Get accessor data.
39865
- */ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
39866
- var bufferViews = glTF.bufferViews;
39867
- var _accessor_bufferView;
39868
- var bufferView = bufferViews[(_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0];
39869
- var arrayBuffer = buffers[bufferView.buffer];
39870
- var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
39871
- var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
39872
- var byteOffset = accessorByteOffset + bufferViewByteOffset;
39873
- var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
39874
- var length = accessorTypeSize * accessor.count;
39875
- var _bufferView_byteStride;
39876
- var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
39877
- var arrayType = GLTFUtils.getComponentType(accessor.componentType);
39878
- var uint8Array;
39879
- if (byteStride) {
39880
- var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
39881
- uint8Array = new Uint8Array(accessor.count * accessorByteSize);
39882
- var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
39883
- for(var i = 0; i < accessor.count; i++){
39884
- for(var j = 0; j < accessorByteSize; j++){
39885
- uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
39886
- }
39887
- }
39888
- } else {
39889
- uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
39890
- }
39891
- var typedArray = new arrayType(uint8Array.buffer);
39892
- if (accessor.sparse) {
39893
- var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
39894
- var indicesBufferView = bufferViews[indices.bufferView];
39895
- var valuesBufferView = bufferViews[values.bufferView];
39896
- var indicesArrayBuffer = buffers[indicesBufferView.buffer];
39897
- var valuesArrayBuffer = buffers[valuesBufferView.buffer];
39898
- var _indices_byteOffset, _indicesBufferView_byteOffset;
39899
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
39900
- var indicesByteLength = indicesBufferView.byteLength;
39901
- var _values_byteOffset, _valuesBufferView_byteOffset;
39902
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
39903
- var valuesByteLength = valuesBufferView.byteLength;
39904
- var indicesType = GLTFUtils.getComponentType(indices.componentType);
39905
- var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
39906
- var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
39907
- for(var i1 = 0; i1 < count; i1++){
39908
- var replaceIndex = indicesArray[i1];
39909
- for(var j1 = 0; j1 < accessorTypeSize; j1++){
39910
- typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
39911
- }
39912
- }
39867
+ var index = baseOffset + i * stride;
39868
+ vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
39913
39869
  }
39914
- return typedArray;
39870
+ return vertices;
39915
39871
  };
39916
39872
  GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
39917
39873
  var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
@@ -39920,40 +39876,43 @@
39920
39876
  };
39921
39877
  /**
39922
39878
  * Get accessor data.
39923
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
39879
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
39924
39880
  var restoreInfo = bufferInfo.restoreInfo;
39881
+ var bufferViews = context.glTF.bufferViews;
39925
39882
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
39926
39883
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
39927
39884
  var data = bufferInfo.data.slice();
39928
39885
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
39929
39886
  var indicesBufferView = bufferViews[indices.bufferView];
39930
39887
  var valuesBufferView = bufferViews[values.bufferView];
39931
- var indicesBufferIndex = indicesBufferView.buffer;
39932
- var valuesBufferIndex = valuesBufferView.buffer;
39933
- var indicesArrayBuffer = buffers[indicesBufferIndex];
39934
- var valuesArrayBuffer = buffers[valuesBufferIndex];
39935
- var _indices_byteOffset, _indicesBufferView_byteOffset;
39936
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
39937
- var indicesByteLength = indicesBufferView.byteLength;
39938
- var _values_byteOffset, _valuesBufferView_byteOffset;
39939
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
39940
- var valuesByteLength = valuesBufferView.byteLength;
39941
- restoreInfo.typeSize = accessorTypeSize;
39942
- restoreInfo.sparseCount = count;
39943
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
39944
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
39945
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
39946
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
39947
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
39948
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
39949
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
39950
- for(var i = 0; i < count; i++){
39951
- var replaceIndex = indicesArray[i];
39952
- for(var j = 0; j < accessorTypeSize; j++){
39953
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
39888
+ return Promise.all([
39889
+ context.get(exports.GLTFParserType.BufferView, indices.bufferView),
39890
+ context.get(exports.GLTFParserType.BufferView, values.bufferView)
39891
+ ]).then(function(param) {
39892
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
39893
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
39894
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
39895
+ var indicesByteLength = indicesUint8Array.byteLength;
39896
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
39897
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
39898
+ var valuesByteLength = valuesUin8Array.byteLength;
39899
+ restoreInfo.typeSize = accessorTypeSize;
39900
+ restoreInfo.sparseCount = count;
39901
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
39902
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
39903
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
39904
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
39905
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
39906
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
39907
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
39908
+ for(var i = 0; i < count; i++){
39909
+ var replaceIndex = indicesArray[i];
39910
+ for(var j = 0; j < accessorTypeSize; j++){
39911
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
39912
+ }
39954
39913
  }
39955
- }
39956
- bufferInfo.data = data;
39914
+ bufferInfo.data = data;
39915
+ });
39957
39916
  };
39958
39917
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
39959
39918
  switch(type){
@@ -41208,16 +41167,16 @@
41208
41167
  var frame = restoreInfo.blendShape.frames[0];
41209
41168
  var position = restoreInfo.position;
41210
41169
  var positionData = _this._getBufferData(buffers, position.buffer);
41211
- frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
41170
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
41212
41171
  if (restoreInfo.normal) {
41213
41172
  var normal = restoreInfo.normal;
41214
41173
  var normalData = _this._getBufferData(buffers, normal.buffer);
41215
- frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
41174
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
41216
41175
  }
41217
41176
  if (restoreInfo.tangent) {
41218
41177
  var tangent = restoreInfo.tangent;
41219
41178
  var tangentData = _this._getBufferData(buffers, tangent.buffer);
41220
- frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
41179
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
41221
41180
  }
41222
41181
  }
41223
41182
  mesh.uploadData(true);
@@ -41229,8 +41188,13 @@
41229
41188
  };
41230
41189
  _proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
41231
41190
  var main = restoreInfo.main;
41232
- var buffer = buffers[main.bufferIndex];
41233
- var data = new main.TypedArray(buffer, main.byteOffset, main.length);
41191
+ var data;
41192
+ if (main) {
41193
+ var buffer = buffers[main.bufferIndex];
41194
+ data = new main.TypedArray(buffer, main.byteOffset, main.length);
41195
+ } else {
41196
+ data = new main.TypedArray(main.length);
41197
+ }
41234
41198
  var sparseCount = restoreInfo.sparseCount;
41235
41199
  if (sparseCount) {
41236
41200
  var sparseIndex = restoreInfo.sparseIndices;
@@ -41303,11 +41267,12 @@
41303
41267
  };
41304
41268
  /**
41305
41269
  * @internal
41306
- */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
41270
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
41307
41271
  this.buffer = buffer;
41308
- this.stride = stride;
41309
41272
  this.byteOffset = byteOffset;
41310
41273
  this.count = count;
41274
+ this.normalized = normalized;
41275
+ this.componentType = componentType;
41311
41276
  };
41312
41277
  /**
41313
41278
  * Base class of glTF extension parser.
@@ -41894,7 +41859,7 @@
41894
41859
  resolve(mesh);
41895
41860
  } else {
41896
41861
  mesh.then(function(mesh) {
41897
- return resolve(mesh);
41862
+ resolve(mesh);
41898
41863
  });
41899
41864
  }
41900
41865
  } else {
@@ -41902,35 +41867,20 @@
41902
41867
  var meshRestoreInfo = new ModelMeshRestoreInfo();
41903
41868
  meshRestoreInfo.mesh = mesh1;
41904
41869
  context.contentRestorer.meshes.push(meshRestoreInfo);
41905
- exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, function(attributeSemantic) {
41906
- return null;
41907
- }, function(attributeName, shapeIndex) {
41908
- var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
41909
- var attributeAccessorIdx = shapeAccessorIdx[attributeName];
41910
- if (attributeAccessorIdx) {
41911
- var accessor = glTF.accessors[attributeAccessorIdx];
41912
- return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
41913
- } else {
41914
- return null;
41915
- }
41916
- }, function() {
41917
- var indexAccessor = glTF.accessors[gltfPrimitive.indices];
41918
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
41919
- return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
41920
- });
41921
- }, context.params.keepMeshData).then(resolve);
41870
+ exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
41922
41871
  }
41923
41872
  });
41924
41873
  };
41925
41874
  var meshInfo = context.glTF.meshes[index];
41926
- var glTF = context.glTF, engine = context.glTFResource.engine;
41875
+ var glTF = context.glTF, glTFResource = context.glTFResource;
41876
+ var engine = glTFResource.engine;
41927
41877
  var primitivePromises = new Array();
41928
41878
  for(var i = 0, length = meshInfo.primitives.length; i < length; i++)_loop(i);
41929
41879
  return Promise.all(primitivePromises);
41930
41880
  };
41931
41881
  /**
41932
41882
  * @internal
41933
- */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
41883
+ */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
41934
41884
  var _loop = function _loop(attribute) {
41935
41885
  var accessor = accessors[attributes[attribute]];
41936
41886
  var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
@@ -42001,6 +41951,7 @@
42001
41951
  });
42002
41952
  promises.push(promise);
42003
41953
  };
41954
+ var _this = this;
42004
41955
  var accessors = gltf.accessors;
42005
41956
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
42006
41957
  var engine = mesh.engine;
@@ -42025,61 +41976,68 @@
42025
41976
  }
42026
41977
  // BlendShapes
42027
41978
  if (targets) {
42028
- promises.push(exports.GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
41979
+ promises.push(exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, _this._getBlendShapeData));
42029
41980
  }
42030
41981
  return Promise.all(promises).then(function() {
42031
41982
  mesh.uploadData(!keepMeshData);
42032
- return Promise.resolve(mesh);
41983
+ return mesh;
42033
41984
  });
42034
41985
  });
42035
41986
  };
41987
+ GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
41988
+ return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
41989
+ var buffer = bufferInfo.data;
41990
+ var _accessor_byteOffset;
41991
+ var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
41992
+ var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
41993
+ var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
41994
+ var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
41995
+ return {
41996
+ vertices: vertices,
41997
+ restoreInfo: restoreInfo
41998
+ };
41999
+ });
42000
+ };
42036
42001
  /**
42037
42002
  * @internal
42038
- */ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
42039
- var _loop = function _loop(i, n) {
42003
+ */ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets, getBlendShapeData) {
42004
+ var _loop = function _loop(i) {
42005
+ var blendShapeData = {};
42006
+ blendShapeCollection[i] = blendShapeData;
42040
42007
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
42008
+ var targets = gltfPrimitive.targets[i];
42009
+ var normalTarget = targets["NORMAL"];
42010
+ var tangentTarget = targets["TANGENT"];
42011
+ var hasNormal = normalTarget !== undefined;
42012
+ var hasTangent = tangentTarget !== undefined;
42041
42013
  var promise = Promise.all([
42042
- getBlendShapeData("POSITION", i),
42043
- getBlendShapeData("NORMAL", i),
42044
- getBlendShapeData("TANGENT", i)
42045
- ]).then(function(infos) {
42046
- var posBufferInfo = infos[0];
42047
- var norBufferInfo = infos[1];
42048
- var tanBufferInfo = infos[2];
42049
- var target = glTFTargets[i];
42050
- var posAccessor;
42051
- var norAccessor;
42052
- var tanAccessor;
42053
- var positions = null;
42054
- if (posBufferInfo) {
42055
- posAccessor = accessors[target["POSITION"]];
42056
- var _posAccessor_byteOffset;
42057
- positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
42058
- }
42059
- var normals = null;
42060
- if (norBufferInfo) {
42061
- norAccessor = accessors[target["NORMAL"]];
42062
- var _norAccessor_byteOffset;
42063
- normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
42064
- }
42065
- var tangents = null;
42066
- if (tanBufferInfo) {
42067
- tanAccessor = accessors[target["NORMAL"]];
42068
- var _tanAccessor_byteOffset;
42069
- tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
42070
- }
42014
+ getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
42015
+ hasNormal ? getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
42016
+ hasTangent ? getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
42017
+ ]).then(function(vertices) {
42018
+ var _tangentData;
42019
+ var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
42071
42020
  var blendShape = new BlendShape(name);
42072
- blendShape.addFrame(1.0, positions, normals, tangents);
42073
- mesh.addBlendShape(blendShape);
42074
- var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
42075
- meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
42021
+ blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
42022
+ blendShapeData.blendShape = blendShape;
42023
+ blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
42076
42024
  });
42077
42025
  promises.push(promise);
42078
42026
  };
42027
+ var glTF = context.glTF;
42028
+ var accessors = glTF.accessors;
42079
42029
  var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
42080
42030
  var promises = new Array();
42081
- for(var i = 0, n = glTFTargets.length; i < n; i++)_loop(i);
42082
- return Promise.all(promises);
42031
+ var blendShapeCount = glTFTargets.length;
42032
+ var blendShapeCollection = new Array(blendShapeCount);
42033
+ for(var i = 0; i < blendShapeCount; i++)_loop(i);
42034
+ return Promise.all(promises).then(function() {
42035
+ for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
42036
+ var blendShape = _step.value;
42037
+ mesh.addBlendShape(blendShape.blendShape);
42038
+ meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
42039
+ }
42040
+ });
42083
42041
  };
42084
42042
  return GLTFMeshParser1;
42085
42043
  }(GLTFParser), function() {
@@ -42455,6 +42413,24 @@
42455
42413
  exports.GLTFValidator = __decorate([
42456
42414
  registerGLTFParser(exports.GLTFParserType.Validator)
42457
42415
  ], exports.GLTFValidator);
42416
+ exports.GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
42417
+ var GLTFBufferViewParser = function GLTFBufferViewParser() {
42418
+ return GLTFParser1.apply(this, arguments);
42419
+ };
42420
+ _inherits(GLTFBufferViewParser, GLTFParser1);
42421
+ var _proto = GLTFBufferViewParser.prototype;
42422
+ _proto.parse = function parse(context, index) {
42423
+ var bufferView = context.glTF.bufferViews[index];
42424
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
42425
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(exports.GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
42426
+ return new Uint8Array(buffer, byteOffset, byteLength);
42427
+ });
42428
+ };
42429
+ return GLTFBufferViewParser;
42430
+ }(GLTFParser);
42431
+ exports.GLTFBufferViewParser = __decorate([
42432
+ registerGLTFParser(exports.GLTFParserType.BufferView)
42433
+ ], exports.GLTFBufferViewParser);
42458
42434
  var GLTFLoader = /*#__PURE__*/ function(Loader1) {
42459
42435
  var GLTFLoader = function GLTFLoader() {
42460
42436
  return Loader1.apply(this, arguments);
@@ -43681,14 +43657,17 @@
43681
43657
  var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
43682
43658
  return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
43683
43659
  var mesh = new ModelMesh(engine, glTFMesh.name);
43684
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
43660
+ var meshRestoreInfo = new ModelMeshRestoreInfo();
43661
+ meshRestoreInfo.mesh = mesh;
43662
+ context.contentRestorer.meshes.push(meshRestoreInfo);
43663
+ return _this._parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
43685
43664
  for(var j = 0; j < decodedGeometry.attributes.length; j++){
43686
43665
  if (decodedGeometry.attributes[j].name === attributeSemantic) {
43687
43666
  return decodedGeometry.attributes[j].array;
43688
43667
  }
43689
43668
  }
43690
43669
  return null;
43691
- }, function(attributeSemantic, shapeIndex) {
43670
+ }, function() {
43692
43671
  throw "BlendShape animation is not supported when using draco.";
43693
43672
  }, function() {
43694
43673
  return decodedGeometry.index.array;
@@ -43701,7 +43680,7 @@
43701
43680
  KHR_draco_mesh_compression._decoder = new DRACODecoder();
43702
43681
  }
43703
43682
  };
43704
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
43683
+ _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
43705
43684
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
43706
43685
  var vertexCount;
43707
43686
  var accessors = gltf.accessors;
@@ -43797,7 +43776,7 @@
43797
43776
  mesh.addSubMesh(0, vertexCount, mode);
43798
43777
  }
43799
43778
  // BlendShapes
43800
- targets && exports.GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
43779
+ targets && exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, getBlendShapeData);
43801
43780
  mesh.uploadData(!keepMeshData);
43802
43781
  return Promise.resolve(mesh);
43803
43782
  };
@@ -44127,7 +44106,7 @@
44127
44106
  ], GALACEAN_animation_event);
44128
44107
 
44129
44108
  //@ts-ignore
44130
- var version = "1.1.2";
44109
+ var version = "1.1.3";
44131
44110
  console.log("Galacean engine version: " + version);
44132
44111
  for(var key in CoreObjects){
44133
44112
  Loader.registerClass(key, CoreObjects[key]);
@@ -44160,6 +44139,7 @@
44160
44139
  exports.BoxColliderShape = BoxColliderShape;
44161
44140
  exports.BoxShape = BoxShape;
44162
44141
  exports.Buffer = Buffer;
44142
+ exports.BufferInfo = BufferInfo;
44163
44143
  exports.BufferMesh = BufferMesh;
44164
44144
  exports.BufferUtil = BufferUtil;
44165
44145
  exports.Burst = Burst;