genMorphGeometry method
dynamic
genMorphGeometry(
- dynamic parentGeo,
- dynamic parentGeoNode,
- dynamic morphGeoNode,
- dynamic preTransform,
- dynamic name,
Implementation
genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, name) {
var vertexIndices = (parentGeoNode.PolygonVertexIndex != null)
? parentGeoNode.PolygonVertexIndex.a
: [];
var morphPositionsSparse =
(morphGeoNode.Vertices != null) ? morphGeoNode.Vertices.a : [];
var indices = (morphGeoNode.Indexes != null) ? morphGeoNode.Indexes.a : [];
var length = parentGeo.attributes.position.count * 3;
var morphPositions = new Float32Array(length);
for (var i = 0; i < indices.length; i++) {
var morphIndex = indices[i] * 3;
morphPositions[morphIndex] = morphPositionsSparse[i * 3];
morphPositions[morphIndex + 1] = morphPositionsSparse[i * 3 + 1];
morphPositions[morphIndex + 2] = morphPositionsSparse[i * 3 + 2];
}
// TODO: add morph normal support
var morphGeoInfo = {
"vertexIndices": vertexIndices,
"vertexPositions": morphPositions,
};
var morphBuffers = this.genBuffers(morphGeoInfo);
var positionAttribute = new Float32BufferAttribute(morphBuffers.vertex, 3);
positionAttribute.name = name ?? morphGeoNode.attrName;
positionAttribute.applyMatrix4(preTransform);
parentGeo.morphAttributes.position.push(positionAttribute);
}