@galacean/engine 0.9.0 → 0.9.1

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
@@ -33126,21 +33126,31 @@
33126
33126
  var vertexCount;
33127
33127
  var bufferBindIndex = 0;
33128
33128
  var positions;
33129
- keepMeshData && (positions = new Array(vertexCount));
33129
+ var boneIndices;
33130
+ var boneWeights;
33131
+ if (keepMeshData) {
33132
+ positions = new Array(vertexCount);
33133
+ boneIndices = new Array(vertexCount);
33134
+ boneWeights = new Array(vertexCount);
33135
+ }
33130
33136
  for(var attribute in attributes){
33131
33137
  var accessor = accessors[attributes[attribute]];
33132
33138
  var accessorBuffer = GLTFUtil.getAccessorBuffer(context, gltf, accessor);
33133
- var dataElmentSize = GLTFUtil.getAccessorTypeSize(accessor.type);
33134
- var attributeCount = accessor.count;
33139
+ var dataElementSize = GLTFUtil.getAccessorTypeSize(accessor.type);
33140
+ var accessorCount = accessor.count;
33135
33141
  var vertices = accessorBuffer.data;
33136
33142
  var vertexElement = void 0;
33137
33143
  var meshId = mesh.instanceId;
33138
33144
  var vertexBindingInfos = accessorBuffer.vertexBindingInfos;
33139
- var elementFormat = GLTFUtil.getElementFormat(accessor.componentType, dataElmentSize, accessor.normalized);
33145
+ var elementNormalized = accessor.normalized;
33146
+ var elementFormat = GLTFUtil.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);
33147
+ var scaleFactor = void 0;
33148
+ elementNormalized && (scaleFactor = GLTFUtil.getNormalizedComponentScale(accessor.componentType));
33149
+ var elementOffset = void 0;
33140
33150
  if (accessorBuffer.interleaved) {
33141
33151
  var byteOffset = accessor.byteOffset || 0;
33142
33152
  var stride = accessorBuffer.stride;
33143
- var elementOffset = byteOffset % stride;
33153
+ elementOffset = byteOffset % stride;
33144
33154
  if (vertexBindingInfos[meshId] === undefined) {
33145
33155
  vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
33146
33156
  var vertexBuffer = accessorBuffer.vertexBuffer;
@@ -33155,7 +33165,8 @@
33155
33165
  vertexElement = new VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);
33156
33166
  }
33157
33167
  } else {
33158
- vertexElement = new VertexElement(attribute, 0, elementFormat, bufferBindIndex);
33168
+ elementOffset = 0;
33169
+ vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
33159
33170
  var vertexBuffer1 = new Buffer(engine, exports.BufferBindFlag.VertexBuffer, vertices.byteLength, exports.BufferUsage.Static);
33160
33171
  vertexBuffer1.setData(vertices);
33161
33172
  mesh.setVertexBufferBinding(vertexBuffer1, accessorBuffer.stride, bufferBindIndex);
@@ -33163,35 +33174,60 @@
33163
33174
  }
33164
33175
  vertexElements.push(vertexElement);
33165
33176
  if (attribute === "POSITION") {
33166
- vertexCount = attributeCount;
33177
+ vertexCount = accessorCount;
33167
33178
  var _mesh_bounds = mesh.bounds, min = _mesh_bounds.min, max = _mesh_bounds.max;
33168
33179
  if (accessor.min && accessor.max) {
33169
33180
  min.copyFromArray(accessor.min);
33170
33181
  max.copyFromArray(accessor.max);
33171
33182
  if (keepMeshData) {
33172
- var stride1 = vertices.length / attributeCount;
33173
- for(var j = 0; j < attributeCount; j++){
33174
- var offset = j * stride1;
33175
- positions[j] = new Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
33183
+ var baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;
33184
+ var stride1 = vertices.length / accessorCount;
33185
+ for(var j = 0; j < accessorCount; j++){
33186
+ var offset = baseOffset + j * stride1;
33187
+ var position = new Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
33188
+ elementNormalized && position.scale(scaleFactor);
33189
+ positions[j] = position;
33176
33190
  }
33177
33191
  }
33178
33192
  } else {
33179
- var position = MeshParser._tempVector3;
33193
+ var position1 = MeshParser._tempVector3;
33180
33194
  min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
33181
33195
  max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
33182
- var stride2 = vertices.length / attributeCount;
33183
- for(var j1 = 0; j1 < attributeCount; j1++){
33184
- var offset1 = j1 * stride2;
33185
- position.copyFromArray(vertices, offset1);
33186
- Vector3.min(min, position, min);
33187
- Vector3.max(max, position, max);
33188
- keepMeshData && (positions[j1] = position.clone());
33196
+ var baseOffset1 = elementOffset / vertices.BYTES_PER_ELEMENT;
33197
+ var stride2 = vertices.length / accessorCount;
33198
+ for(var j1 = 0; j1 < accessorCount; j1++){
33199
+ var offset1 = baseOffset1 + j1 * stride2;
33200
+ position1.copyFromArray(vertices, offset1);
33201
+ Vector3.min(min, position1, min);
33202
+ Vector3.max(max, position1, max);
33203
+ if (keepMeshData) {
33204
+ var clonePosition = position1.clone();
33205
+ elementNormalized && clonePosition.scale(scaleFactor);
33206
+ positions[j1] = clonePosition;
33207
+ }
33189
33208
  }
33190
33209
  }
33191
- if (accessor.normalized) {
33192
- var sacleFactor = GLTFUtil.getNormalizedComponentScale(accessor.componentType);
33193
- min.scale(sacleFactor);
33194
- max.scale(sacleFactor);
33210
+ if (elementNormalized) {
33211
+ min.scale(scaleFactor);
33212
+ max.scale(scaleFactor);
33213
+ }
33214
+ } else if (attribute === "JOINTS_0" && keepMeshData) {
33215
+ var baseOffset2 = elementOffset / vertices.BYTES_PER_ELEMENT;
33216
+ var stride3 = vertices.length / accessorCount;
33217
+ for(var j2 = 0; j2 < accessorCount; j2++){
33218
+ var offset2 = baseOffset2 + j2 * stride3;
33219
+ var boneIndex = new Vector4(vertices[offset2], vertices[offset2 + 1], vertices[offset2 + 2], vertices[offset2 + 3]);
33220
+ elementNormalized && boneIndex.scale(scaleFactor);
33221
+ boneIndices[j2] = boneIndex;
33222
+ }
33223
+ } else if (attribute === "WEIGHTS_0" && keepMeshData) {
33224
+ var baseOffset3 = elementOffset / vertices.BYTES_PER_ELEMENT;
33225
+ var stride4 = vertices.length / accessorCount;
33226
+ for(var j3 = 0; j3 < accessorCount; j3++){
33227
+ var offset3 = baseOffset3 + j3 * stride4;
33228
+ var boneWeight = new Vector4(vertices[offset3], vertices[offset3 + 1], vertices[offset3 + 2], vertices[offset3 + 3]);
33229
+ elementNormalized && boneWeight.scale(scaleFactor);
33230
+ boneWeights[j3] = boneWeight;
33195
33231
  }
33196
33232
  }
33197
33233
  }
@@ -33210,6 +33246,10 @@
33210
33246
  mesh.uploadData(!keepMeshData);
33211
33247
  //@ts-ignore
33212
33248
  mesh._positions = positions;
33249
+ //@ts-ignore
33250
+ mesh._boneIndices = boneIndices;
33251
+ //@ts-ignore
33252
+ mesh._boneWeights = boneWeights;
33213
33253
  return Promise.resolve(mesh);
33214
33254
  };
33215
33255
  _proto._createBlendShape = function _createBlendShape(mesh, glTFMesh, glTFTargets, getBlendShapeData) {
@@ -35737,7 +35777,7 @@
35737
35777
  }));
35738
35778
 
35739
35779
  //@ts-ignore
35740
- var version = "0.9.0";
35780
+ var version = "0.9.1";
35741
35781
  console.log("Galacean engine version: " + version);
35742
35782
  for(var key in CoreObjects){
35743
35783
  Loader.registerClass(key, CoreObjects[key]);