@galacean/engine-core 1.1.0-beta.31 → 1.1.0-beta.33
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/main.js +316 -1
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +316 -1
- package/dist/module.js +316 -1
- package/dist/module.js.map +1 -1
- package/package.json +3 -3
- package/types/mesh/PrimitiveMesh.d.ts +22 -0
package/dist/main.js
CHANGED
|
@@ -2036,7 +2036,8 @@ var Logger = {
|
|
|
2036
2036
|
_proto._createFontAtlas = function _createFontAtlas() {
|
|
2037
2037
|
var _this = this, engine = _this._engine;
|
|
2038
2038
|
var fontAtlas = new FontAtlas(engine);
|
|
2039
|
-
var texture = new Texture2D(engine, 256, 256);
|
|
2039
|
+
var texture = new Texture2D(engine, 256, 256, exports.TextureFormat.R8G8B8A8, false);
|
|
2040
|
+
texture.filterMode = exports.TextureFilterMode.Point;
|
|
2040
2041
|
fontAtlas.texture = texture;
|
|
2041
2042
|
fontAtlas.isGCIgnored = texture.isGCIgnored = true;
|
|
2042
2043
|
this._fontAtlases.push(fontAtlas);
|
|
@@ -8009,6 +8010,9 @@ SimpleSpriteAssembler = __decorate([
|
|
|
8009
8010
|
__decorate([
|
|
8010
8011
|
assignmentClone
|
|
8011
8012
|
], SpriteMask.prototype, "influenceLayers", void 0);
|
|
8013
|
+
__decorate([
|
|
8014
|
+
ignoreClone
|
|
8015
|
+
], SpriteMask.prototype, "_verticesData", void 0);
|
|
8012
8016
|
__decorate([
|
|
8013
8017
|
ignoreClone
|
|
8014
8018
|
], SpriteMask.prototype, "_sprite", void 0);
|
|
@@ -10796,6 +10800,10 @@ var VertexElementIndex;
|
|
|
10796
10800
|
var sphereInfo = primitiveInfo;
|
|
10797
10801
|
PrimitiveMesh._setSphereData(this.resource, sphereInfo.radius, sphereInfo.segments, sphereInfo.noLongerAccessible, true, sphereInfo.vertexBuffer);
|
|
10798
10802
|
break;
|
|
10803
|
+
case 7:
|
|
10804
|
+
var CCSphereInfo = primitiveInfo;
|
|
10805
|
+
PrimitiveMesh._setSubdivisionSurfaceSphereData(this.resource, CCSphereInfo.radius, CCSphereInfo.step, CCSphereInfo.noLongerAccessible, true, CCSphereInfo.vertexBuffer);
|
|
10806
|
+
break;
|
|
10799
10807
|
case 1:
|
|
10800
10808
|
var cuboidInfo = primitiveInfo;
|
|
10801
10809
|
PrimitiveMesh._setCuboidData(this.resource, cuboidInfo.width, cuboidInfo.height, cuboidInfo.depth, cuboidInfo.noLongerAccessible, true, cuboidInfo.vertexBuffer);
|
|
@@ -10833,6 +10841,7 @@ var PrimitiveType;
|
|
|
10833
10841
|
PrimitiveType[PrimitiveType["Torus"] = 4] = "Torus";
|
|
10834
10842
|
PrimitiveType[PrimitiveType["Cone"] = 5] = "Cone";
|
|
10835
10843
|
PrimitiveType[PrimitiveType["Capsule"] = 6] = "Capsule";
|
|
10844
|
+
PrimitiveType[PrimitiveType["CCSphere"] = 7] = "CCSphere";
|
|
10836
10845
|
})(PrimitiveType || (PrimitiveType = {}));
|
|
10837
10846
|
/**
|
|
10838
10847
|
* @internal
|
|
@@ -10854,6 +10863,19 @@ var PrimitiveType;
|
|
|
10854
10863
|
}
|
|
10855
10864
|
return SphereRestoreInfo;
|
|
10856
10865
|
}(PrimitiveRestoreInfo);
|
|
10866
|
+
/**
|
|
10867
|
+
* @internal
|
|
10868
|
+
*/ var SubdivisionSurfaceSphereRestoreInfo = /*#__PURE__*/ function(PrimitiveRestoreInfo) {
|
|
10869
|
+
_inherits(SubdivisionSurfaceSphereRestoreInfo, PrimitiveRestoreInfo);
|
|
10870
|
+
function SubdivisionSurfaceSphereRestoreInfo(radius, step, vertexBuffer, noLongerAccessible) {
|
|
10871
|
+
var _this;
|
|
10872
|
+
_this = PrimitiveRestoreInfo.call(this, 7, vertexBuffer, noLongerAccessible) || this;
|
|
10873
|
+
_this.radius = radius;
|
|
10874
|
+
_this.step = step;
|
|
10875
|
+
return _this;
|
|
10876
|
+
}
|
|
10877
|
+
return SubdivisionSurfaceSphereRestoreInfo;
|
|
10878
|
+
}(PrimitiveRestoreInfo);
|
|
10857
10879
|
/**
|
|
10858
10880
|
* @internal
|
|
10859
10881
|
*/ var CuboidRestoreInfo = /*#__PURE__*/ function(PrimitiveRestoreInfo) {
|
|
@@ -10968,6 +10990,24 @@ var PrimitiveType;
|
|
|
10968
10990
|
return sphereMesh;
|
|
10969
10991
|
};
|
|
10970
10992
|
/**
|
|
10993
|
+
* Create a sphere mesh by implementing Catmull-Clark Surface Subdivision Algorithm.
|
|
10994
|
+
* Max step is limited to 6.
|
|
10995
|
+
* @param engine - Engine
|
|
10996
|
+
* @param radius - Sphere radius
|
|
10997
|
+
* @param step - Number of subdiv steps
|
|
10998
|
+
* @param noLongerAccessible - No longer access the vertices of the mesh after creation
|
|
10999
|
+
* @returns Sphere model mesh
|
|
11000
|
+
*/ PrimitiveMesh.createSubdivisionSurfaceSphere = function createSubdivisionSurfaceSphere(engine, radius, step, noLongerAccessible) {
|
|
11001
|
+
if (radius === void 0) radius = 0.5;
|
|
11002
|
+
if (step === void 0) step = 3;
|
|
11003
|
+
if (noLongerAccessible === void 0) noLongerAccessible = true;
|
|
11004
|
+
var sphereMesh = new ModelMesh(engine);
|
|
11005
|
+
PrimitiveMesh._setSubdivisionSurfaceSphereData(sphereMesh, radius, step, noLongerAccessible, false);
|
|
11006
|
+
var vertexBuffer = sphereMesh.vertexBufferBindings[0].buffer;
|
|
11007
|
+
engine.resourceManager.addContentRestorer(new PrimitiveMeshRestorer(sphereMesh, new SubdivisionSurfaceSphereRestoreInfo(radius, step, vertexBuffer, noLongerAccessible)));
|
|
11008
|
+
return sphereMesh;
|
|
11009
|
+
};
|
|
11010
|
+
/**
|
|
10971
11011
|
* Create a cuboid mesh.
|
|
10972
11012
|
* @param engine - Engine
|
|
10973
11013
|
* @param width - Cuboid width
|
|
@@ -11097,6 +11137,90 @@ var PrimitiveType;
|
|
|
11097
11137
|
};
|
|
11098
11138
|
/**
|
|
11099
11139
|
* @internal
|
|
11140
|
+
*/ PrimitiveMesh._setSubdivisionSurfaceSphereData = function _setSubdivisionSurfaceSphereData(sphereMesh, radius, step, noLongerAccessible, isRestoreMode, restoreVertexBuffer) {
|
|
11141
|
+
// Max step is limited to 6. Because 7 step will generate a single mesh with over 98306 vertices
|
|
11142
|
+
step = engineMath.MathUtil.clamp(Math.floor(step), 1, 6);
|
|
11143
|
+
var positions = new Float32Array(3 * (6 * Math.pow(4, step) + 2));
|
|
11144
|
+
var cells = new Float32Array(24 * Math.pow(4, step));
|
|
11145
|
+
PrimitiveMesh._subdiveCatmullClark(step, positions, cells);
|
|
11146
|
+
var positionCount = positions.length / 3;
|
|
11147
|
+
var cellsCount = cells.length / 4;
|
|
11148
|
+
var poleOffset = positionCount + Math.pow(2, step + 1) - 1;
|
|
11149
|
+
// 16 extra vertices for pole uv
|
|
11150
|
+
// 2 vertices at each pole are idle
|
|
11151
|
+
var vertexCount = poleOffset + 16;
|
|
11152
|
+
var vertices = new Float32Array(vertexCount * 8);
|
|
11153
|
+
var indices = PrimitiveMesh._generateIndices(sphereMesh.engine, positionCount, cellsCount * 6);
|
|
11154
|
+
var seamCount = 0;
|
|
11155
|
+
var seamVertices = {};
|
|
11156
|
+
// Get normals, uvs, and scale to radius
|
|
11157
|
+
for(var i = 0; i < positionCount; i++){
|
|
11158
|
+
var offset = 3 * i;
|
|
11159
|
+
var x = positions[offset];
|
|
11160
|
+
var y = positions[offset + 1];
|
|
11161
|
+
var z = positions[offset + 2];
|
|
11162
|
+
var reciprocalLength = 1 / Math.sqrt(x * x + y * y + z * z);
|
|
11163
|
+
x *= reciprocalLength;
|
|
11164
|
+
y *= reciprocalLength;
|
|
11165
|
+
z *= reciprocalLength;
|
|
11166
|
+
offset = 8 * i;
|
|
11167
|
+
vertices[offset] = x * radius;
|
|
11168
|
+
vertices[offset + 1] = y * radius;
|
|
11169
|
+
vertices[offset + 2] = z * radius;
|
|
11170
|
+
vertices[offset + 3] = x;
|
|
11171
|
+
vertices[offset + 4] = y;
|
|
11172
|
+
vertices[offset + 5] = z;
|
|
11173
|
+
vertices[offset + 6] = (Math.PI - Math.atan2(z, x)) / (2 * Math.PI);
|
|
11174
|
+
vertices[offset + 7] = Math.acos(y) / Math.PI;
|
|
11175
|
+
if (vertices[offset + 6] === 0) {
|
|
11176
|
+
// Generate seam vertex
|
|
11177
|
+
var seamOffset = 8 * (positionCount + seamCount++);
|
|
11178
|
+
vertices.set(vertices.subarray(offset, offset + 8), seamOffset);
|
|
11179
|
+
vertices[seamOffset + 6] = 1.0;
|
|
11180
|
+
// Cache seam vertex
|
|
11181
|
+
seamVertices[offset / 8] = seamOffset / 8;
|
|
11182
|
+
}
|
|
11183
|
+
}
|
|
11184
|
+
// Get indices
|
|
11185
|
+
var offset1 = 0;
|
|
11186
|
+
this._spherePoleIdx = 0;
|
|
11187
|
+
for(var i1 = 0; i1 < cellsCount; i1++){
|
|
11188
|
+
var idx = 4 * i1;
|
|
11189
|
+
var indexA = cells[idx];
|
|
11190
|
+
var indexB = cells[idx + 1];
|
|
11191
|
+
var indexC = cells[idx + 2];
|
|
11192
|
+
var indexD = cells[idx + 3];
|
|
11193
|
+
// Handle seam by replacing vertex index to seam vertex index if necessary
|
|
11194
|
+
var floatIndexA = 8 * indexA;
|
|
11195
|
+
var floatIndexB = 8 * indexB;
|
|
11196
|
+
var floatIndexC = 8 * indexC;
|
|
11197
|
+
var floatIndexD = 8 * indexD;
|
|
11198
|
+
// If center Z is negative
|
|
11199
|
+
if (vertices[floatIndexA + 2] + vertices[floatIndexB + 2] + vertices[floatIndexC + 2] < 0) {
|
|
11200
|
+
vertices[floatIndexA + 6] === 0 && (indexA = seamVertices[indexA]);
|
|
11201
|
+
vertices[floatIndexB + 6] === 0 && (indexB = seamVertices[indexB]);
|
|
11202
|
+
vertices[floatIndexC + 6] === 0 && (indexC = seamVertices[indexC]);
|
|
11203
|
+
vertices[floatIndexD + 6] === 0 && (indexD = seamVertices[indexD]);
|
|
11204
|
+
}
|
|
11205
|
+
indices[offset1] = indexA;
|
|
11206
|
+
indices[offset1 + 1] = indexB;
|
|
11207
|
+
indices[offset1 + 2] = indexC;
|
|
11208
|
+
this._generateAndReplacePoleUV(indices, vertices, offset1, poleOffset);
|
|
11209
|
+
indices[offset1 + 3] = indexA;
|
|
11210
|
+
indices[offset1 + 4] = indexC;
|
|
11211
|
+
indices[offset1 + 5] = indexD;
|
|
11212
|
+
this._generateAndReplacePoleUV(indices, vertices, offset1 + 3, poleOffset);
|
|
11213
|
+
offset1 += 6;
|
|
11214
|
+
}
|
|
11215
|
+
if (!isRestoreMode) {
|
|
11216
|
+
var bounds = sphereMesh.bounds;
|
|
11217
|
+
bounds.min.set(-radius, -radius, -radius);
|
|
11218
|
+
bounds.max.set(radius, radius, radius);
|
|
11219
|
+
}
|
|
11220
|
+
PrimitiveMesh._initialize(sphereMesh, vertices, indices, noLongerAccessible, isRestoreMode, restoreVertexBuffer);
|
|
11221
|
+
};
|
|
11222
|
+
/**
|
|
11223
|
+
* @internal
|
|
11100
11224
|
*/ PrimitiveMesh._setSphereData = function _setSphereData(sphereMesh, radius, segments, noLongerAccessible, isRestoreMode, restoreVertexBuffer) {
|
|
11101
11225
|
segments = Math.max(2, Math.floor(segments));
|
|
11102
11226
|
var count = segments + 1;
|
|
@@ -11157,6 +11281,135 @@ var PrimitiveType;
|
|
|
11157
11281
|
};
|
|
11158
11282
|
/**
|
|
11159
11283
|
* @internal
|
|
11284
|
+
*/ PrimitiveMesh._subdiveCatmullClark = function _subdiveCatmullClark(step, positions, cells) {
|
|
11285
|
+
var edges = new Map();
|
|
11286
|
+
var faces = new Array();
|
|
11287
|
+
positions.set(PrimitiveMesh._sphereSeedPositions);
|
|
11288
|
+
cells.set(PrimitiveMesh._sphereSeedCells);
|
|
11289
|
+
for(var i = 0; i < step; i++){
|
|
11290
|
+
var cellCount = 6 * Math.pow(4, i);
|
|
11291
|
+
var positionCount = 4 * cellCount + 2;
|
|
11292
|
+
edges.clear();
|
|
11293
|
+
faces.length = 0;
|
|
11294
|
+
// Get cell face's facePoint
|
|
11295
|
+
for(var j = 0; j < cellCount; j++){
|
|
11296
|
+
var face = faces[j] = {
|
|
11297
|
+
facePoint: new engineMath.Vector3(),
|
|
11298
|
+
adjacentEdges: new Array(4)
|
|
11299
|
+
};
|
|
11300
|
+
// Get cell's edgePoint
|
|
11301
|
+
for(var k = 0; k < 4; k++){
|
|
11302
|
+
var offset = 3 * cells[4 * j + k];
|
|
11303
|
+
face.facePoint.x += 0.25 * positions[offset];
|
|
11304
|
+
face.facePoint.y += 0.25 * positions[offset + 1];
|
|
11305
|
+
face.facePoint.z += 0.25 * positions[offset + 2];
|
|
11306
|
+
}
|
|
11307
|
+
// Get cell edges
|
|
11308
|
+
for(var k1 = 0; k1 < 4; k1++){
|
|
11309
|
+
var vertexIdxA = cells[4 * j + k1];
|
|
11310
|
+
var vertexIdxB = cells[4 * j + (k1 + 1) % 4];
|
|
11311
|
+
var edgeIdxKey = Math.min(vertexIdxA, vertexIdxB) * positionCount + Math.max(vertexIdxA, vertexIdxB);
|
|
11312
|
+
if (!edges.has(edgeIdxKey)) {
|
|
11313
|
+
var edge = {
|
|
11314
|
+
edgePoint: new engineMath.Vector3(),
|
|
11315
|
+
edgePointIndex: undefined
|
|
11316
|
+
};
|
|
11317
|
+
var offsetA = 3 * vertexIdxA;
|
|
11318
|
+
var offsetB = 3 * vertexIdxB;
|
|
11319
|
+
edge.edgePoint.set(0.25 * (positions[offsetA] + positions[offsetB]), 0.25 * (positions[offsetA + 1] + positions[offsetB + 1]), 0.25 * (positions[offsetA + 2] + positions[offsetB + 2]));
|
|
11320
|
+
edges.set(edgeIdxKey, edge);
|
|
11321
|
+
}
|
|
11322
|
+
var edge1 = edges.get(edgeIdxKey);
|
|
11323
|
+
face.adjacentEdges[k1] = edge1;
|
|
11324
|
+
var edgePoint = edge1.edgePoint;
|
|
11325
|
+
var facePoint = face.facePoint;
|
|
11326
|
+
edgePoint.x += 0.25 * facePoint.x;
|
|
11327
|
+
edgePoint.y += 0.25 * facePoint.y;
|
|
11328
|
+
edgePoint.z += 0.25 * facePoint.z;
|
|
11329
|
+
}
|
|
11330
|
+
}
|
|
11331
|
+
var prePointCount = cellCount + 2;
|
|
11332
|
+
var edgePointOffset = prePointCount + cellCount;
|
|
11333
|
+
var pointIdx = 0;
|
|
11334
|
+
this._sphereEdgeIdx = 0;
|
|
11335
|
+
var preCells = cells.slice(0, 4 * cellCount);
|
|
11336
|
+
// Get New positions, which consists of updated positions of existing points, face points and edge points
|
|
11337
|
+
for(var j1 = 0; j1 < cellCount; j1++){
|
|
11338
|
+
// Add face point to new positions
|
|
11339
|
+
var face1 = faces[j1];
|
|
11340
|
+
face1.facePoint.copyToArray(positions, 3 * (prePointCount + j1));
|
|
11341
|
+
// Get the face point index
|
|
11342
|
+
var ic = prePointCount + j1;
|
|
11343
|
+
var id = void 0, ib = void 0, temp = void 0;
|
|
11344
|
+
// ia -- id -- ia
|
|
11345
|
+
// | | |
|
|
11346
|
+
// ib -- ic -- ib
|
|
11347
|
+
// | | |
|
|
11348
|
+
// ia -- id -- ia
|
|
11349
|
+
for(var k2 = 0; k2 < 4; k2++){
|
|
11350
|
+
// Get the updated existing point index
|
|
11351
|
+
var ia = preCells[pointIdx++];
|
|
11352
|
+
// ib and id share four edge points in one cell
|
|
11353
|
+
switch(k2){
|
|
11354
|
+
case 0:
|
|
11355
|
+
{
|
|
11356
|
+
var edgeB = face1.adjacentEdges[k2 % 4];
|
|
11357
|
+
var edgeD = face1.adjacentEdges[(k2 + 3) % 4];
|
|
11358
|
+
ib = this._calculateEdgeIndex(positions, edgeB, edgePointOffset);
|
|
11359
|
+
id = this._calculateEdgeIndex(positions, edgeD, edgePointOffset);
|
|
11360
|
+
temp = id;
|
|
11361
|
+
break;
|
|
11362
|
+
}
|
|
11363
|
+
case 1:
|
|
11364
|
+
case 2:
|
|
11365
|
+
{
|
|
11366
|
+
var edgeB1 = face1.adjacentEdges[k2 % 4];
|
|
11367
|
+
id = ib;
|
|
11368
|
+
ib = this._calculateEdgeIndex(positions, edgeB1, edgePointOffset);
|
|
11369
|
+
break;
|
|
11370
|
+
}
|
|
11371
|
+
case 3:
|
|
11372
|
+
{
|
|
11373
|
+
id = ib;
|
|
11374
|
+
ib = temp;
|
|
11375
|
+
break;
|
|
11376
|
+
}
|
|
11377
|
+
}
|
|
11378
|
+
var idx = 4 * (4 * j1 + k2);
|
|
11379
|
+
cells[idx] = ia;
|
|
11380
|
+
cells[idx + 1] = ib;
|
|
11381
|
+
cells[idx + 2] = ic;
|
|
11382
|
+
cells[idx + 3] = id;
|
|
11383
|
+
}
|
|
11384
|
+
}
|
|
11385
|
+
}
|
|
11386
|
+
};
|
|
11387
|
+
/**
|
|
11388
|
+
* Duplicate vertices at the poles and adjust their UV coordinates.
|
|
11389
|
+
*/ PrimitiveMesh._generateAndReplacePoleUV = function _generateAndReplacePoleUV(indices, vertices, idx, poleOffset) {
|
|
11390
|
+
var v = vertices[8 * indices[idx] + 7];
|
|
11391
|
+
if (v === 0 || v === 1) {
|
|
11392
|
+
var offset = 8 * indices[idx];
|
|
11393
|
+
var addedOffset = 8 * (poleOffset + this._spherePoleIdx);
|
|
11394
|
+
vertices.set(vertices.subarray(offset, offset + 8), addedOffset);
|
|
11395
|
+
vertices[addedOffset + 6] = 0.5 * (vertices[offset + 6] + vertices[8 * indices[idx + 1] + 6] + vertices[8 * indices[idx + 2] + 6] - 0.5);
|
|
11396
|
+
indices[idx] = poleOffset + this._spherePoleIdx++;
|
|
11397
|
+
}
|
|
11398
|
+
};
|
|
11399
|
+
/**
|
|
11400
|
+
* Get edge point index for subdivision surface sphere.
|
|
11401
|
+
*/ PrimitiveMesh._calculateEdgeIndex = function _calculateEdgeIndex(positions, edge, offset) {
|
|
11402
|
+
if (edge.edgePointIndex !== undefined) {
|
|
11403
|
+
return edge.edgePointIndex;
|
|
11404
|
+
} else {
|
|
11405
|
+
edge.edgePoint.copyToArray(positions, 3 * (offset + PrimitiveMesh._sphereEdgeIdx));
|
|
11406
|
+
var index = offset + PrimitiveMesh._sphereEdgeIdx++;
|
|
11407
|
+
edge.edgePointIndex = index;
|
|
11408
|
+
return index;
|
|
11409
|
+
}
|
|
11410
|
+
};
|
|
11411
|
+
/**
|
|
11412
|
+
* @internal
|
|
11160
11413
|
*/ PrimitiveMesh._setCuboidData = function _setCuboidData(cuboidMesh, width, height, depth, noLongerAccessible, isRestoreMode, restoreVertexBuffer) {
|
|
11161
11414
|
var halfWidth = width / 2;
|
|
11162
11415
|
var halfHeight = height / 2;
|
|
@@ -11786,6 +12039,68 @@ var PrimitiveType;
|
|
|
11786
12039
|
(function() {
|
|
11787
12040
|
PrimitiveMesh._tempVec30 = new engineMath.Vector3();
|
|
11788
12041
|
})();
|
|
12042
|
+
(function() {
|
|
12043
|
+
PrimitiveMesh._sphereSeedPositions = new Float32Array([
|
|
12044
|
+
-1,
|
|
12045
|
+
1,
|
|
12046
|
+
1,
|
|
12047
|
+
-1,
|
|
12048
|
+
-1,
|
|
12049
|
+
1,
|
|
12050
|
+
1,
|
|
12051
|
+
-1,
|
|
12052
|
+
1,
|
|
12053
|
+
1,
|
|
12054
|
+
1,
|
|
12055
|
+
1,
|
|
12056
|
+
1,
|
|
12057
|
+
-1,
|
|
12058
|
+
-1,
|
|
12059
|
+
1,
|
|
12060
|
+
1,
|
|
12061
|
+
-1,
|
|
12062
|
+
-1,
|
|
12063
|
+
-1,
|
|
12064
|
+
-1,
|
|
12065
|
+
-1,
|
|
12066
|
+
1,
|
|
12067
|
+
-1
|
|
12068
|
+
]);
|
|
12069
|
+
})();
|
|
12070
|
+
(function() {
|
|
12071
|
+
PrimitiveMesh._sphereSeedCells = new Float32Array([
|
|
12072
|
+
0,
|
|
12073
|
+
1,
|
|
12074
|
+
2,
|
|
12075
|
+
3,
|
|
12076
|
+
3,
|
|
12077
|
+
2,
|
|
12078
|
+
4,
|
|
12079
|
+
5,
|
|
12080
|
+
5,
|
|
12081
|
+
4,
|
|
12082
|
+
6,
|
|
12083
|
+
7,
|
|
12084
|
+
7,
|
|
12085
|
+
0,
|
|
12086
|
+
3,
|
|
12087
|
+
5,
|
|
12088
|
+
7,
|
|
12089
|
+
6,
|
|
12090
|
+
1,
|
|
12091
|
+
0,
|
|
12092
|
+
6,
|
|
12093
|
+
4,
|
|
12094
|
+
2,
|
|
12095
|
+
1
|
|
12096
|
+
]);
|
|
12097
|
+
})();
|
|
12098
|
+
(function() {
|
|
12099
|
+
PrimitiveMesh._sphereEdgeIdx = 0;
|
|
12100
|
+
})();
|
|
12101
|
+
(function() {
|
|
12102
|
+
PrimitiveMesh._spherePoleIdx = 0;
|
|
12103
|
+
})();
|
|
11789
12104
|
|
|
11790
12105
|
/**
|
|
11791
12106
|
* Mesh skin data, equal glTF skins define
|