@zephyr3d/editor 0.3.5 → 0.3.7
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/assets/{index-DlnbO59X.js → index-ySiLtSxz.js} +2 -2
- package/dist/assistant/zephyr-types-index.json +14215 -7892
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_base.js +152 -152
- package/dist/modules/zephyr3d_base.js.map +1 -1
- package/dist/modules/zephyr3d_imgui.js.map +1 -1
- package/dist/modules/zephyr3d_loaders.js +6 -6
- package/dist/modules/zephyr3d_loaders.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +2538 -348
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgl/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/base/dist/vfs/common.js +152 -152
- package/dist/vendor/zephyr3d/base/dist/vfs/common.js.map +1 -1
- package/dist/vendor/zephyr3d/imgui/dist/index.d.ts +7 -0
- package/dist/vendor/zephyr3d/imgui/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js +6 -6
- package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js +87 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js +503 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +782 -156
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js +974 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js +130 -125
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js +64 -63
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +1270 -9
- package/dist/vendor/zephyr3d/scene/dist/index.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js +7 -3
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +4 -3
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +3 -2
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sources":["../../src/asset/model.ts"],"sourcesContent":["import type { TypedArray, Interpolator, Nullable, DeepPartial, VFS } from '@zephyr3d/base';\nimport {\n ASSERT,\n DRef,\n PathUtils,\n uint8ArrayToBase64,\n Vector4,\n Disposable,\n Matrix4x4,\n Quaternion,\n Vector3\n} from '@zephyr3d/base';\nimport type {\n PrimitiveType,\n Texture2D,\n TextureAddressMode,\n TextureFilterMode,\n TextureSampler,\n VertexAttribFormat,\n VertexSemantic\n} from '@zephyr3d/device';\nimport { getVertexFormatComponentCount } from '@zephyr3d/device';\nimport { Mesh } from '../scene/mesh';\nimport { BoundingBox } from '../utility/bounding_volume';\nimport type { ColliderR } from '../animation/joint_dynamics/types';\nimport type { ControllerConfig } from '../animation/joint_dynamics/controller';\nimport type { ResourceManager } from '../utility/serialization/manager';\nimport type { Scene } from '../scene/scene';\nimport {\n SceneNode,\n setSceneMeshAssetBinding,\n type SceneMorphTargetBinding,\n type SceneMorphTargetGroup\n} from '../scene/scene_node';\nimport type { HumanoidJointMapping } from '../animation/skeleton';\nimport { SkeletonRig, SkinBinding } from '../animation/skeleton';\nimport type { FixedGeometryCacheFrame } from '../animation/fixed_geometry_cache_track';\nimport type { PCAGeometryCacheTrackData } from '../animation';\nimport {\n FixedGeometryCacheTrack,\n createTransformAccess,\n JointDynamicsModifier,\n JointDynamicsSystem,\n MorphTargetTrack,\n NodeRotationTrack,\n NodeScaleTrack,\n NodeTranslationTrack,\n PCAGeometryCacheTrack\n} from '../animation';\nimport { MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS } from '../values';\nimport { getDevice } from '../app/api';\nimport { Primitive } from '../render/primitive';\nimport type { MeshMaterial } from '../material/meshmaterial';\nimport { UnlitMaterial } from '../material/unlit';\nimport { PBRSpecularGlossinessMaterial } from '../material/pbrsg';\nimport { PBRMetallicRoughnessMaterial } from '../material/pbrmr';\nimport { MToonMaterial, type MToonOutlineWidthMode } from '../material/mtoon';\n\ntype ReimportResourcePools = Map<string, Set<string>>;\n\n/**\n * Named object interface for model loading\n * @public\n */\nexport class NamedObject {\n name: string;\n /**\n * Creates an instance of NamedObject\n * @param name - Name of the object\n */\n constructor(name: string) {\n this.name = name;\n }\n}\n\n/**\n * Texture sampler settings for model loading.\n * @public\n */\nexport interface AssetSamplerInfo {\n wrapS: TextureAddressMode;\n wrapT: TextureAddressMode;\n magFilter: TextureFilterMode;\n mipFilter: TextureFilterMode;\n minFilter: TextureFilterMode;\n}\n\n/**\n * Image payload information for model loading.\n * @public\n */\nexport interface AssetImageInfo {\n name?: string;\n uri?: string;\n data?: Uint8Array<ArrayBuffer>;\n mimeType?: string;\n}\n\n/**\n * Vertex buffer payload information for model loading.\n * @public\n */\nexport interface AssetVertexBufferInfo {\n attrib: VertexAttribFormat;\n data: TypedArray;\n}\n\n/**\n * Primitive geometry information for model loading.\n * @public\n */\nexport interface AssetPrimitiveInfo {\n name?: string;\n vertices: Record<VertexSemantic, { format: VertexAttribFormat; data: TypedArray }>;\n indices: Nullable<Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>>;\n indexCount: number;\n type: PrimitiveType;\n boxMin: Vector3;\n boxMax: Vector3;\n path?: string;\n}\n\n/**\n * Texture information for model loading\n * @public\n */\nexport interface AssetTextureInfo {\n name?: string;\n image: Nullable<AssetImageInfo>;\n sRGB?: boolean;\n sampler: Nullable<AssetSamplerInfo>;\n texCoord: number;\n transform: Nullable<Matrix4x4>;\n}\n\n/**\n * Resolved material texture information.\n * @public\n */\nexport interface MaterialTextureInfo {\n texture: Texture2D;\n sampler: TextureSampler;\n texCoord: number;\n transform: Matrix4x4;\n}\n\n/**\n * Common properties of material for model loading\n * @public\n */\nexport interface AssetMaterialCommon {\n vertexColor?: boolean;\n vertexNormal?: boolean;\n useTangent?: boolean;\n alphaMode?: 'blend' | 'mask';\n alphaCutoff?: number;\n doubleSided?: boolean;\n normalMap?: AssetTextureInfo;\n bumpScale?: number;\n emissiveMap?: AssetTextureInfo;\n emissiveColor?: Vector3;\n emissiveStrength?: number;\n occlusionMap?: AssetTextureInfo;\n occlusionStrength?: number;\n}\n\n/**\n * Base material properties for model loading\n * @public\n */\nexport interface AssetMaterial {\n name?: string;\n type: string;\n common: AssetMaterialCommon;\n path?: string;\n material?: DRef<MeshMaterial>;\n}\n\n/**\n * Unlit related material properties for model loading\n * @public\n */\nexport interface AssetUnlitMaterial extends AssetMaterial {\n diffuseMap?: AssetTextureInfo;\n diffuse?: Vector4;\n}\n\n/**\n * MToon related material properties for model loading\n * @public\n */\nexport interface AssetMToonMaterial extends AssetUnlitMaterial {\n shadeColorFactor?: Vector3;\n shadeMultiplyMap?: AssetTextureInfo;\n shadingShiftFactor?: number;\n shadingShiftMap?: AssetTextureInfo;\n shadingShiftTextureScale?: number;\n shadingToonyFactor?: number;\n giEqualizationFactor?: number;\n matcapFactor?: Vector3;\n matcapMap?: AssetTextureInfo;\n parametricRimColorFactor?: Vector3;\n parametricRimFresnelPowerFactor?: number;\n parametricRimLiftFactor?: number;\n rimMultiplyMap?: AssetTextureInfo;\n rimLightingMixFactor?: number;\n outlineWidthMode?: MToonOutlineWidthMode;\n outlineWidthFactor?: number;\n outlineWidthMultiplyMap?: AssetTextureInfo;\n outlineColorFactor?: Vector3;\n outlineLightingMixFactor?: number;\n outlineUsesTangentNormals?: boolean;\n uvAnimationMaskMap?: AssetTextureInfo;\n uvAnimationScrollXSpeedFactor?: number;\n uvAnimationScrollYSpeedFactor?: number;\n uvAnimationRotationSpeedFactor?: number;\n transparentWithZWrite?: boolean;\n renderQueueOffsetNumber?: number;\n}\n\n/**\n * Sheen related material properties for model loading\n * @public\n */\nexport interface AssetMaterialSheen {\n sheenColorFactor?: Vector3;\n sheenColorMap?: AssetTextureInfo;\n sheenRoughnessFactor?: number;\n sheenRoughnessMap?: AssetTextureInfo;\n}\n\n/**\n * Clearcoat related material properties for model loading\n * @public\n */\nexport interface AssetMaterialClearcoat {\n clearCoatFactor?: number;\n clearCoatIntensityMap?: AssetTextureInfo;\n clearCoatRoughnessFactor?: number;\n clearCoatRoughnessMap?: AssetTextureInfo;\n clearCoatNormalMap?: AssetTextureInfo;\n}\n\n/**\n * Transmission related material properties for model loading\n * @public\n */\nexport interface AssetMaterialTransmission {\n transmissionFactor?: number;\n transmissionMap?: AssetTextureInfo;\n thicknessFactor?: number;\n thicknessMap?: AssetTextureInfo;\n attenuationColor?: Vector3;\n attenuationDistance?: number;\n}\n\n/**\n * Iridescence related material properties for model loading\n * @public\n */\nexport interface AssetMaterialIridescence {\n iridescenceFactor?: number;\n iridescenceMap?: AssetTextureInfo;\n iridescenceIor?: number;\n iridescenceThicknessMinimum?: number;\n iridescenceThicknessMaximum?: number;\n iridescenceThicknessMap?: AssetTextureInfo;\n}\n\n/**\n * PBR related material properties for model loading\n * @public\n */\nexport interface AssetPBRMaterialCommon extends AssetUnlitMaterial {\n ior?: number;\n}\n\n/**\n * PBR of Metallic-Roughness workflow related material properties for model loading\n * @public\n */\nexport interface AssetPBRMaterialMR extends AssetPBRMaterialCommon {\n metallic?: number;\n roughness?: number;\n metallicMap?: AssetTextureInfo;\n metallicIndex?: number;\n roughnessIndex?: number;\n specularMap?: AssetTextureInfo;\n specularColorMap?: AssetTextureInfo;\n specularFactor?: Vector4;\n sheen?: AssetMaterialSheen;\n clearcoat?: AssetMaterialClearcoat;\n transmission?: AssetMaterialTransmission;\n iridescence?: AssetMaterialIridescence;\n}\n\n/**\n * PBR of Specular-Glossness workfow related material properties for model loading\n * @public\n */\nexport interface AssetPBRMaterialSG extends AssetPBRMaterialCommon {\n specular?: Vector3;\n glossness?: number;\n specularGlossnessMap?: AssetTextureInfo;\n}\n\n/**\n * Sub mesh data interface for model loading\n * @public\n */\nexport interface AssetSubMeshData {\n primitive: Nullable<AssetPrimitiveInfo>;\n material: Nullable<AssetMaterial>;\n rawPositions: Nullable<Float32Array>;\n rawBlendIndices: Nullable<TypedArray>;\n rawJointWeights: Nullable<TypedArray>;\n name: string;\n numTargets: number;\n targets?: Partial<Record<number, { numComponents: number; data: Float32Array[] }>>;\n targetBox?: BoundingBox[];\n morphAttribCount?: number;\n}\n\n/**\n * Mesh data interface for model loading\n * @public\n */\nexport interface AssetMeshData {\n morphWeights?: number[];\n morphNames?: string[];\n subMeshes: AssetSubMeshData[];\n}\n\n/**\n * Morph target binding in a model-level expression/group.\n * @public\n */\nexport interface AssetMorphTargetBinding {\n /** Restrict this binding to runtime meshes created from this asset node. */\n node?: AssetHierarchyNode;\n /** Restrict this binding to runtime meshes created from this asset mesh. */\n mesh?: AssetMeshData;\n /** Morph target index in the source mesh. */\n targetIndex?: number;\n /** Morph target name in the source mesh. */\n targetName?: string;\n /** Weight contributed by this binding when the group weight is 1. */\n weight: number;\n}\n\n/**\n * Model-level morph target group, commonly used as a complete facial expression.\n * @public\n */\nexport interface AssetMorphTargetGroup {\n name: string;\n bindings: AssetMorphTargetBinding[];\n isBinary?: boolean;\n}\n\n/**\n * Animation track interface for model loading\n * @public\n */\nexport interface AssetAnimationTrack {\n node: AssetHierarchyNode;\n type: 'translation' | 'scale' | 'rotation' | 'weights';\n interpolator: Interpolator;\n defaultMorphWeights?: number[];\n}\n\n/**\n * A single geometry cache frame.\n * @public\n */\nexport interface AssetGeometryCacheFrame {\n positions: Float32Array;\n normals?: Nullable<Float32Array>;\n boundingBox: BoundingBox;\n}\n\n/**\n * Fixed-vertex geometry cache animation track information.\n * @public\n */\nexport interface AssetFixedGeometryCacheAnimationTrack {\n node: AssetHierarchyNode;\n type: 'geometry-cache';\n codec?: 'fixed';\n subMeshIndex: number;\n times: Float32Array;\n frames: AssetGeometryCacheFrame[];\n}\n\n/**\n * PCA-compressed geometry cache animation track information.\n * @public\n */\nexport interface AssetPCAGeometryCacheAnimationTrack {\n node: AssetHierarchyNode;\n type: 'geometry-cache';\n codec: 'pca';\n subMeshIndex: number;\n times: Float32Array;\n bounds: [number, number, number, number, number, number][];\n positionReference?: Nullable<Float32Array>;\n positionMean: Float32Array;\n positionBases: Float32Array[];\n positionCoefficients: Float32Array[];\n normalMean?: Nullable<Float32Array>;\n normalBases?: Nullable<Float32Array[]>;\n normalCoefficients?: Nullable<Float32Array[]>;\n}\n\n/**\n * Geometry cache animation track information.\n * @public\n */\nexport type AssetGeometryCacheAnimationTrack =\n | AssetFixedGeometryCacheAnimationTrack\n | AssetPCAGeometryCacheAnimationTrack;\n\n/**\n * Animation data interface for model loading\n * @public\n */\nexport interface AssetAnimationData {\n name: string;\n tracks: (AssetAnimationTrack | AssetGeometryCacheAnimationTrack)[];\n skeletons: AssetSkeleton[];\n nodes: AssetHierarchyNode[];\n}\n\n/**\n * Skeletal animation track interface for model loading\n * @public\n */\nexport interface AssetSkeletalAnimationTrack extends AssetAnimationTrack {\n skeleton: AssetSkeleton;\n keyFrames: Record<number, { translation: Vector3; rotation: Quaternion; scale: Vector3 }[]>;\n}\n\n/**\n * Rotation track of key frame animation interface for model loading\n * @public\n */\nexport interface AssetRotationTrack extends AssetAnimationTrack {\n keyFrames: Record<number, Quaternion[]>;\n nodes: number[];\n}\n\n/**\n * Translation track of key frame animation interface for model loading\n * @public\n */\nexport interface AssetTranslationTrack extends AssetAnimationTrack {\n keyFrames: Record<number, Vector3[]>;\n nodes: number[];\n}\n\n/**\n * Scale track of key frame animation interface for model loading\n * @public\n */\nexport interface AssetScaleTrack extends AssetAnimationTrack {\n keyFrames: Record<number, Vector3[]>;\n nodes: number[];\n}\n\n/**\n * Heirarchical node interface for model loading\n * @public\n */\nexport class AssetHierarchyNode extends NamedObject {\n private _parent: Nullable<AssetHierarchyNode>;\n private _position: Vector3;\n private _rotation: Quaternion;\n private _scaling: Vector3;\n private _mesh: Nullable<AssetMeshData>;\n private _skeleton: Nullable<AssetSkeleton>;\n private _attachToSkeleton: Nullable<Set<AssetSkeleton>>;\n private _matrix: Nullable<Matrix4x4>;\n private _worldMatrix: Nullable<Matrix4x4>;\n private _weights: Nullable<number[]>;\n private readonly _children: AssetHierarchyNode[];\n private readonly _instances: { t: Vector3; s: Vector3; r: Quaternion }[];\n /**\n * Creates an instance of AssetHierarchyNode\n * @param name - Name of the node\n * @param parent - Parent of the node\n */\n constructor(name: string, model: SharedModel, parent?: AssetHierarchyNode) {\n super(name);\n model.nodes.push(this);\n this._parent = null;\n this._position = Vector3.zero();\n this._rotation = Quaternion.identity();\n this._scaling = Vector3.one();\n this._children = [];\n this._mesh = null;\n this._skeleton = null;\n this._attachToSkeleton = null;\n this._matrix = null;\n this._weights = null;\n this._worldMatrix = null;\n this._instances = [];\n parent?.addChild(this);\n }\n /** Parent of the node */\n get parent(): Nullable<AssetHierarchyNode> {\n return this._parent;\n }\n /** Local transformation matrix of the node */\n get matrix() {\n return this._matrix;\n }\n /** World transformation matrix of the node */\n get worldMatrix() {\n return this._worldMatrix;\n }\n /** Mesh data of the node, or null if this is not a mesh node */\n get mesh() {\n return this._mesh;\n }\n set mesh(data) {\n this._mesh = data;\n }\n /** instances */\n get instances() {\n return this._instances;\n }\n /** Default morph target weights */\n get weights() {\n return this._weights;\n }\n set weights(val) {\n this._weights = val;\n }\n /** The skeleton used to control the node */\n get skeleton() {\n return this._skeleton;\n }\n set skeleton(skeleton) {\n this._skeleton = skeleton;\n }\n /** The translation of the node */\n get position(): Vector3 {\n return this._position;\n }\n set position(val: Vector3) {\n this._position = val;\n }\n /** The rotation of the node */\n get rotation(): Quaternion {\n return this._rotation;\n }\n set rotation(val: Quaternion) {\n this._rotation = val;\n }\n /** The scale of the node */\n get scaling(): Vector3 {\n return this._scaling;\n }\n set scaling(val: Vector3) {\n this._scaling = val;\n }\n /** Children of the node */\n get children(): AssetHierarchyNode[] {\n return this._children;\n }\n /** The skeleton to which the node belongs if this is a joint node */\n get skeletonAttached() {\n return this._attachToSkeleton;\n }\n isParentOf(child: Nullable<AssetHierarchyNode>) {\n while (child && child !== this) {\n child = child.parent!;\n }\n return child === this;\n }\n getWorldPosition() {\n return new Vector3(this.worldMatrix!.m03, this.worldMatrix!.m13, this.worldMatrix!.m23);\n }\n computeTransforms(parentTransform: Nullable<Matrix4x4>) {\n this._matrix = Matrix4x4.scaling(this._scaling).rotateLeft(this._rotation).translateLeft(this._position);\n this._worldMatrix = parentTransform\n ? Matrix4x4.multiply(parentTransform, this._matrix)\n : new Matrix4x4(this._matrix);\n for (const child of this._children) {\n child.computeTransforms(this._worldMatrix);\n }\n }\n /**\n * Adds a child to this node\n * @param child - The child node to be added\n */\n addChild(child: AssetHierarchyNode) {\n if (!child || child.parent) {\n throw new Error('AssetHierarchyNode.addChild(): invalid child node');\n }\n this._children.push(child);\n child._parent = this;\n }\n /**\n * Removes a child of this node\n * @param child - The child node to be removed\n */\n removeChild(child: AssetHierarchyNode) {\n const index = this._children.indexOf(child);\n if (index < 0) {\n throw new Error('AssetHierarchyNode.removeChild(): invalid child node');\n }\n this._children[index]._parent = null;\n this._children.splice(index, 1);\n }\n /**\n * Attach this node to a skeleton\n * @param skeleton - The skeleton to which to node will attach\n * @param index - The joint index\n */\n attachToSkeleton(skeleton: AssetSkeleton) {\n if (!this._attachToSkeleton) {\n this._attachToSkeleton = new Set();\n }\n this._attachToSkeleton.add(skeleton);\n }\n}\n\n/**\n * Skeleton information for model loading\n * @public\n */\nexport class AssetSkeleton extends NamedObject {\n /** The pivot node */\n pivot: Nullable<AssetHierarchyNode>;\n /** Joints of the skeleton */\n joints: AssetHierarchyNode[];\n /** Inverse of the binding matrices of the joints */\n inverseBindMatrices: Matrix4x4[];\n /** Binding pose matrices of the joints */\n bindPose: { position: Vector3; rotation: Quaternion; scale: Vector3 }[];\n /** Explicit humanoid joint mapping, when supplied by the source asset. */\n humanoidJointMapping: Nullable<HumanoidJointMapping<AssetHierarchyNode>>;\n /**\n * Creates an instance of AssetSkeleton\n * @param name - Name of the skeleton\n */\n constructor(name: string) {\n super(name);\n this.name = name;\n this.pivot = null;\n this.joints = [];\n this.inverseBindMatrices = [];\n this.bindPose = [];\n this.humanoidJointMapping = null;\n }\n /**\n * Adds a joint to the skeleton\n * @param joint - The joint node\n * @param inverseBindMatrix - Inverse binding matrix of the joint\n */\n addJoint(joint: AssetHierarchyNode, inverseBindMatrix: Matrix4x4) {\n joint.attachToSkeleton(this);\n this.joints.push(joint);\n this.inverseBindMatrices.push(inverseBindMatrix);\n this.bindPose.push({\n position: joint.position.clone(),\n rotation: joint.rotation.clone(),\n scale: joint.scaling.clone()\n });\n }\n get root() {\n if (this.pivot) {\n return this.pivot;\n }\n let root = this.joints[0];\n for (let i = 1; i < this.joints.length; i++) {\n while (root && !root.isParentOf(this.joints[i])) {\n root = root.parent!;\n }\n }\n return root;\n }\n}\n\n/**\n * Scene for model loading\n * @public\n */\nexport class AssetScene extends NamedObject {\n /** Root nodes of the scene */\n rootNodes: AssetHierarchyNode[];\n /**\n * Creates an instance of AssetScene\n * @param name - Name of the scene\n */\n constructor(name: string) {\n super(name);\n this.rootNodes = [];\n }\n}\n\n/**\n * Spring bone collider shape information.\n * @public\n */\nexport type AssetSpringBoneColliderShape =\n | {\n type: 'sphere';\n offset: Vector3;\n radius: number;\n inside?: boolean;\n }\n | {\n type: 'capsule';\n offset: Vector3;\n tail: Vector3;\n radius: number;\n inside?: boolean;\n }\n | {\n type: 'plane';\n offset: Vector3;\n normal: Vector3;\n };\n\n/**\n * Spring bone collider information.\n * @public\n */\nexport interface AssetSpringBoneCollider {\n name?: string;\n node: AssetHierarchyNode;\n shape: AssetSpringBoneColliderShape;\n}\n\n/**\n * Spring bone collider group information.\n * @public\n */\nexport interface AssetSpringBoneColliderGroup {\n name?: string;\n colliders: AssetSpringBoneCollider[];\n}\n\n/**\n * Spring bone joint information.\n * @public\n */\nexport interface AssetSpringBoneJoint {\n node: AssetHierarchyNode;\n hitRadius: number;\n stiffness: number;\n gravityPower: number;\n gravityDir: Vector3;\n dragForce: number;\n}\n\n/**\n * Spring bone chain information.\n * @public\n */\nexport interface AssetSpringBone {\n name?: string;\n center?: AssetHierarchyNode;\n joints: AssetSpringBoneJoint[];\n rootBones?: AssetHierarchyNode[];\n colliderGroups: AssetSpringBoneColliderGroup[];\n}\n\n/**\n * Joint dynamics collider information.\n * @public\n */\nexport interface AssetJointDynamicsCollider {\n name?: string;\n node: AssetHierarchyNode;\n localPosition: Vector3;\n localRotation: Quaternion;\n collider: ColliderR;\n}\n\n/**\n * Joint dynamics chain information.\n * @public\n */\nexport interface AssetJointDynamicsChain {\n start: AssetHierarchyNode;\n end: AssetHierarchyNode;\n}\n\n/**\n * Joint dynamics flat plane information.\n * @public\n */\nexport interface AssetJointDynamicsFlatPlane {\n node: AssetHierarchyNode;\n position: Vector3;\n up: Vector3;\n}\n\n/**\n * Joint dynamics spring bone information.\n * @public\n */\nexport interface AssetJointDynamicsSpringBone {\n name?: string;\n center?: AssetHierarchyNode;\n chains: AssetJointDynamicsChain[];\n controllerConfig: DeepPartial<ControllerConfig, 2>;\n colliders: AssetJointDynamicsCollider[];\n flatPlanes: AssetJointDynamicsFlatPlane[];\n}\n\n/**\n * Options controlling which model resources are persisted.\n * @public\n */\nexport type SaveOptions = {\n importMeshes: boolean;\n importSkeletons: boolean;\n importAnimations: boolean;\n rebuildMaterial?: boolean;\n};\n\ntype PreprocessOptions = {\n rebuildMaterial?: boolean;\n};\n\ntype SharedModelWithPreprocessOptions = SharedModel & {\n _preprocessOptions?: PreprocessOptions;\n};\n\n/**\n * Model information that can be shared by multiple model nodes\n * @public\n */\nexport class SharedModel extends Disposable {\n /** @internal */\n private _nodes: AssetHierarchyNode[];\n /** @internal */\n private _skeletons: AssetSkeleton[];\n /** @internal */\n private _animations: AssetAnimationData[];\n /** @internal */\n private _scenes: AssetScene[];\n /** @internal */\n private _activeScene: number;\n /** @internal */\n private _imageList: AssetImageInfo[];\n /** @internal */\n private _primitiveList: AssetPrimitiveInfo[];\n /** @internal */\n private _materialList: Record<string, AssetMaterial>;\n /** @internal */\n private _springBoneColliders: AssetSpringBoneCollider[];\n /** @internal */\n private _springBoneColliderGroups: AssetSpringBoneColliderGroup[];\n /** @internal */\n private _springBones: AssetSpringBone[];\n /** @internal */\n private _jointDynamicsColliders: AssetJointDynamicsCollider[];\n /** @internal */\n private _jointDynamicsSpringBones: AssetJointDynamicsSpringBone[];\n /** @internal */\n private _morphTargetGroups: AssetMorphTargetGroup[];\n /** @internal */\n private _textureMap: Map<AssetTextureInfo, DRef<Texture2D>>;\n /** @internal */\n private _primitiveMap: Map<AssetPrimitiveInfo, DRef<Primitive>>;\n\n /**\n * Creates an instance of SharedModel\n */\n constructor() {\n super();\n this._nodes = [];\n this._skeletons = [];\n this._scenes = [];\n this._animations = [];\n this._imageList = [];\n this._primitiveList = [];\n this._materialList = {};\n this._springBoneColliders = [];\n this._springBoneColliderGroups = [];\n this._springBones = [];\n this._jointDynamicsColliders = [];\n this._jointDynamicsSpringBones = [];\n this._morphTargetGroups = [];\n this._activeScene = -1;\n this._textureMap = new Map();\n this._primitiveMap = new Map();\n }\n /** All scenes that the model contains */\n get scenes(): AssetScene[] {\n return this._scenes;\n }\n /** All Primitives that the model contains */\n get primitives(): AssetPrimitiveInfo[] {\n return this._primitiveList;\n }\n /** All nodes that the model contains */\n get nodes(): AssetHierarchyNode[] {\n return this._nodes;\n }\n /** All animations that the model contains */\n get animations(): AssetAnimationData[] {\n return this._animations;\n }\n /** All skeletons that the model contains */\n get skeletons(): AssetSkeleton[] {\n return this._skeletons;\n }\n /** All SpringBone colliders that the model contains */\n get springBoneColliders(): AssetSpringBoneCollider[] {\n return this._springBoneColliders;\n }\n /** All SpringBone collider groups that the model contains */\n get springBoneColliderGroups(): AssetSpringBoneColliderGroup[] {\n return this._springBoneColliderGroups;\n }\n /** All SpringBone springs that the model contains */\n get springBones(): AssetSpringBone[] {\n return this._springBones;\n }\n /** SpringBone colliders converted to Zephyr3D JointDynamics collider format */\n get jointDynamicsColliders(): AssetJointDynamicsCollider[] {\n return this._jointDynamicsColliders;\n }\n /** SpringBone springs converted to Zephyr3D JointDynamics system format */\n get jointDynamicsSpringBones(): AssetJointDynamicsSpringBone[] {\n return this._jointDynamicsSpringBones;\n }\n /** Model-level morph target groups, commonly facial expressions. */\n get morphTargetGroups(): AssetMorphTargetGroup[] {\n return this._morphTargetGroups;\n }\n /** The active scene of the model */\n get activeScene(): number {\n return this._activeScene;\n }\n set activeScene(val: number) {\n this._activeScene = val;\n }\n getImage(index: number) {\n return this._imageList[index];\n }\n setImage(index: number, img: AssetImageInfo) {\n this._imageList[index] = img;\n }\n getMaterial(hash: string) {\n return this._materialList[hash];\n }\n setMaterial(hash: string, material: AssetMaterial) {\n this._materialList[hash] = material;\n }\n addPrimitive(prim: AssetPrimitiveInfo) {\n this._primitiveList.push(prim);\n }\n private sanitizeResourceName(name: string, fallback: string) {\n let normalized = (name ?? '').trim();\n if (!normalized) {\n normalized = fallback;\n }\n normalized = normalized.replace(/[<>:\"/\\\\|?*\\u0000-\\u001f]/g, '_');\n normalized = normalized.replace(/\\s+/g, ' ').trim();\n normalized = normalized.replace(/[. ]+$/g, '');\n return normalized || fallback;\n }\n private getReimportPoolKey(baseName: string, ext: string) {\n return `${ext.toLowerCase()}|${baseName}`;\n }\n private getResourceBasename(path: string, ext: string) {\n return path ? PathUtils.basename(path, ext || PathUtils.extname(path)) : '';\n }\n private getResourceNumericSuffix(baseName: string, candidateBaseName: string) {\n if (candidateBaseName === baseName) {\n return 0;\n }\n const match = new RegExp(`^${baseName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}_([0-9]+)$`).exec(\n candidateBaseName\n );\n return match ? Number.parseInt(match[1], 10) : Number.MAX_SAFE_INTEGER;\n }\n private registerReusableResourcePath(pools: ReimportResourcePools, path: string) {\n const ext = PathUtils.extname(path).toLowerCase();\n const baseName = this.getResourceBasename(path, ext);\n const register = (keyBaseName: string) => {\n const key = this.getReimportPoolKey(keyBaseName, ext);\n let candidates = pools.get(key);\n if (!candidates) {\n candidates = new Set<string>();\n pools.set(key, candidates);\n }\n candidates.add(path);\n };\n register(baseName);\n const strippedBaseName = baseName.replace(/_[0-9]+$/u, '');\n if (strippedBaseName && strippedBaseName !== baseName) {\n register(strippedBaseName);\n }\n }\n private collectReferencedAssetPaths(\n value: unknown,\n destPath: string,\n extensions: Set<string>,\n out: Set<string>\n ) {\n if (typeof value === 'string') {\n const normalizedPath = PathUtils.normalize(value);\n const ext = PathUtils.extname(normalizedPath).toLowerCase();\n const normalizedDestPath = PathUtils.normalize(destPath);\n if (\n extensions.has(ext) &&\n (normalizedPath === normalizedDestPath ||\n normalizedPath.startsWith(\n normalizedDestPath.endsWith('/') ? normalizedDestPath : `${normalizedDestPath}/`\n ))\n ) {\n out.add(normalizedPath);\n }\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) {\n this.collectReferencedAssetPaths(item, destPath, extensions, out);\n }\n return;\n }\n if (value && typeof value === 'object') {\n for (const item of Object.values(value)) {\n this.collectReferencedAssetPaths(item, destPath, extensions, out);\n }\n }\n }\n private async collectReferencedAssetPathsFromJsonFile(\n destVFS: VFS,\n jsonPath: string,\n destPath: string,\n extensions: Set<string>\n ) {\n if (!(await destVFS.exists(jsonPath))) {\n return new Set<string>();\n }\n try {\n const content = (await destVFS.readFile(jsonPath, { encoding: 'utf8' })) as string;\n const json = JSON.parse(content) as unknown;\n const out = new Set<string>();\n this.collectReferencedAssetPaths(json, destPath, extensions, out);\n return out;\n } catch (err) {\n console.warn(`Read existing import manifest failed: ${jsonPath}: ${err}`);\n return new Set<string>();\n }\n }\n private async createReimportResourcePools(destVFS: VFS, destPath: string, prefabPath: string) {\n const pools: ReimportResourcePools = new Map();\n if (!(await destVFS.exists(prefabPath))) {\n return pools;\n }\n const materialAndMeshPaths = await this.collectReferencedAssetPathsFromJsonFile(\n destVFS,\n prefabPath,\n destPath,\n new Set(['.zmtl', '.zmsh'])\n );\n for (const path of materialAndMeshPaths) {\n this.registerReusableResourcePath(pools, path);\n }\n const materialPaths = Array.from(materialAndMeshPaths).filter(\n (path) => PathUtils.extname(path).toLowerCase() === '.zmtl'\n );\n const imageExtensions = new Set(['.jpg', '.jpeg', '.png', '.webp', '.tga', '.hdr', '.ktx', '.ktx2']);\n for (const materialPath of materialPaths) {\n const texturePaths = await this.collectReferencedAssetPathsFromJsonFile(\n destVFS,\n materialPath,\n destPath,\n imageExtensions\n );\n for (const texturePath of texturePaths) {\n this.registerReusableResourcePath(pools, texturePath);\n }\n }\n return pools;\n }\n private consumeReusableResourcePath(\n pools: ReimportResourcePools,\n baseName: string,\n ext: string,\n usedPaths: Set<string>\n ) {\n const candidates = pools.get(this.getReimportPoolKey(baseName, ext));\n if (!candidates || candidates.size === 0) {\n return null;\n }\n const sorted = Array.from(candidates)\n .filter((path) => !usedPaths.has(path))\n .sort((a, b) => {\n const aSuffix = this.getResourceNumericSuffix(baseName, this.getResourceBasename(a, ext));\n const bSuffix = this.getResourceNumericSuffix(baseName, this.getResourceBasename(b, ext));\n if (aSuffix !== bSuffix) {\n return aSuffix - bSuffix;\n }\n return a.localeCompare(b);\n });\n const selected = sorted[0] ?? null;\n if (selected) {\n usedPaths.add(selected);\n }\n return selected;\n }\n private async createUniqueResourcePath(\n destVFS: VFS,\n destPath: string,\n baseName: string,\n ext: string,\n usedPaths: Set<string>,\n fallback: string\n ) {\n const sanitizedBase = this.sanitizeResourceName(baseName, fallback);\n for (let suffix = 0; ; suffix++) {\n const candidateName = suffix > 0 ? `${sanitizedBase}_${suffix}` : sanitizedBase;\n const candidatePath = destVFS.join(destPath, `${candidateName}${ext}`);\n if (!usedPaths.has(candidatePath) && !(await destVFS.exists(candidatePath))) {\n usedPaths.add(candidatePath);\n return candidatePath;\n }\n }\n }\n private async tryReuseExactResourcePath(\n destVFS: VFS,\n destPath: string,\n baseName: string,\n ext: string,\n usedPaths: Set<string>,\n fallback: string\n ) {\n const sanitizedBase = this.sanitizeResourceName(baseName, fallback);\n const candidatePath = destVFS.join(destPath, `${sanitizedBase}${ext}`);\n if (!usedPaths.has(candidatePath) && (await destVFS.exists(candidatePath))) {\n usedPaths.add(candidatePath);\n return candidatePath;\n }\n return null;\n }\n private collapseCompositeTextureName(name: string) {\n const normalized = (name ?? '').trim();\n if (!normalized) {\n return normalized;\n }\n const separatorIndex = normalized.indexOf('-');\n if (separatorIndex <= 0 || separatorIndex >= normalized.length - 1) {\n return normalized;\n }\n const left = normalized.slice(0, separatorIndex).trim();\n const right = normalized.slice(separatorIndex + 1).trim();\n if (!left || !right) {\n return normalized;\n }\n const leftParts = left.split('_');\n const rightParts = right.split('_');\n let prefixLength = 0;\n while (\n prefixLength < leftParts.length - 1 &&\n prefixLength < rightParts.length - 1 &&\n leftParts[prefixLength] === rightParts[prefixLength]\n ) {\n prefixLength++;\n }\n if (prefixLength <= 0) {\n return normalized;\n }\n const prefix = leftParts.slice(0, prefixLength).join('_');\n const leftSuffix = leftParts.slice(prefixLength).join('_');\n const rightSuffix = rightParts.slice(prefixLength).join('_');\n if (!leftSuffix || !rightSuffix) {\n return normalized;\n }\n return `${prefix}_${leftSuffix}-${rightSuffix}`;\n }\n private getImageBaseName(img: AssetImageInfo, index: number, fallback: string) {\n if (img?.name?.trim()) {\n return this.collapseCompositeTextureName(img.name);\n }\n if (img?.uri) {\n return this.collapseCompositeTextureName(PathUtils.basename(img.uri, PathUtils.extname(img.uri)));\n }\n return `${fallback}_texture_${index}`;\n }\n private getMaterialBaseName(material: AssetMaterial, key: string, fallback: string) {\n return material?.name?.trim() || `${fallback}_material_${key}`;\n }\n private getPrimitiveBaseName(info: AssetPrimitiveInfo, index: number, fallback: string) {\n return info?.name?.trim() || `${fallback}_mesh_${index}`;\n }\n /**\n * Adds a model-level morph target group.\n * @param group - Morph target group to add\n */\n addMorphTargetGroup(group: AssetMorphTargetGroup) {\n if (group?.name && group.bindings?.length > 0) {\n this._morphTargetGroups.push(group);\n }\n }\n /**\n * Removes all model-level morph target groups.\n */\n clearMorphTargetGroups() {\n this._morphTargetGroups = [];\n }\n /**\n * Finds a model-level morph target group by name.\n * @param name - Group name\n * @returns The matching group, or null if not found\n */\n getMorphTargetGroup(name: string): Nullable<AssetMorphTargetGroup> {\n return this._morphTargetGroups.find((group) => group.name === name) ?? null;\n }\n /**\n * Builds morph target groups by collecting morph target names from every mesh.\n * @returns Generated morph target groups\n */\n buildMorphTargetGroupsByName(): AssetMorphTargetGroup[] {\n this.clearMorphTargetGroups();\n const groups = new Map<string, AssetMorphTargetGroup>();\n const meshes = new Set<AssetMeshData>();\n for (const node of this._nodes) {\n if (node.mesh) {\n meshes.add(node.mesh);\n }\n }\n for (const mesh of meshes) {\n const count = getAssetMeshMorphTargetCount(mesh);\n for (let i = 0; i < count; i++) {\n const targetName = getAssetMeshMorphTargetName(mesh, i);\n let group = groups.get(targetName);\n if (!group) {\n group = { name: targetName, bindings: [] };\n groups.set(targetName, group);\n }\n group.bindings.push({\n mesh,\n targetIndex: i,\n targetName,\n weight: 1\n });\n }\n }\n this._morphTargetGroups = Array.from(groups.values());\n return this._morphTargetGroups;\n }\n /**\n * Adds a skeleton to the scene\n * @param skeleton - The skeleton to be added\n */\n addSkeleton(skeleton: AssetSkeleton) {\n this._skeletons.push(skeleton);\n }\n /**\n * Adds an animation to the scene\n * @param animation - The animation to be added\n */\n addAnimation(animation: AssetAnimationData) {\n this._animations.push(animation);\n }\n static async writePrimitive(vfs: VFS, primitive: AssetPrimitiveInfo, path: string) {\n const data = {\n vertices: {} as Record<VertexSemantic, { format: VertexAttribFormat; data: string }>,\n indices: primitive.indices\n ? uint8ArrayToBase64(\n new Uint8Array(\n primitive.indices.buffer,\n primitive.indices.byteOffset,\n primitive.indices.byteLength\n )\n )\n : null,\n indexType: primitive.indices ? (primitive.indices instanceof Uint16Array ? 'u16' : 'u32') : '',\n indexCount: primitive.indexCount,\n type: primitive.type,\n boxMin: [primitive.boxMin.x, primitive.boxMin.y, primitive.boxMin.z],\n boxMax: [primitive.boxMax.x, primitive.boxMax.y, primitive.boxMax.z]\n };\n for (const k in primitive.vertices) {\n const v = primitive.vertices[k as VertexSemantic];\n data.vertices[k as VertexSemantic] = {\n format: v.format,\n data: uint8ArrayToBase64(new Uint8Array(v.data.buffer, v.data.byteOffset, v.data.byteLength))\n };\n }\n const content = JSON.stringify({ type: 'Primitive', data }, null, 2);\n await vfs.writeFile(path, content, { encoding: 'utf8', create: true });\n }\n /** preprocess */\n async preprocess(\n manager: ResourceManager,\n name: string,\n destPath: string,\n srcVFS: VFS,\n dstVFS: VFS\n ): Promise<void> {\n const destName = name;\n const usedPaths = new Set<string>();\n const rebuildMaterial =\n (this as SharedModelWithPreprocessOptions)._preprocessOptions?.rebuildMaterial ?? true;\n const prefabName = name.endsWith('.zprefab') ? name : `${name}.zprefab`;\n const prefabPath = dstVFS.join(destPath, prefabName);\n const reusableResourcePools = await this.createReimportResourcePools(dstVFS, destPath, prefabPath);\n if (this._imageList.length > 0) {\n console.info(`Importing ${this._imageList.length} textures`);\n for (let i = 0; i < this._imageList.length; i++) {\n const img = this._imageList[i];\n if (!img) {\n continue;\n }\n let ext: string = '';\n const mimeType = img.uri ? srcVFS.guessMIMEType(img.uri) : img.data ? img.mimeType : '';\n if (mimeType === 'image/jpeg') {\n ext = '.jpg';\n } else if (mimeType === 'image/png') {\n ext = '.png';\n } else if (mimeType === 'image/webp') {\n ext = '.webp';\n } else if (mimeType === 'image/tga') {\n ext = '.tga';\n } else if (mimeType === 'image/vnd.radiance') {\n ext = '.hdr';\n } else if (mimeType === 'image/ktx') {\n ext = '.ktx';\n } else if (mimeType === 'image/ktx2') {\n ext = '.ktx2';\n } else {\n continue;\n }\n ASSERT(!!ext, `Unknown image mime type: ${mimeType}`);\n const baseName = this.sanitizeResourceName(\n this.getImageBaseName(img, i, destName),\n `${destName}_texture_${i}`\n );\n const path =\n (await this.tryReuseExactResourcePath(\n dstVFS,\n destPath,\n baseName,\n ext,\n usedPaths,\n `${destName}_texture_${i}`\n )) ??\n this.consumeReusableResourcePath(reusableResourcePools, baseName, ext, usedPaths) ??\n (await this.createUniqueResourcePath(\n dstVFS,\n destPath,\n baseName,\n ext,\n usedPaths,\n `${destName}_texture_${i}`\n ));\n if (img.uri) {\n img.data = new Uint8Array((await srcVFS.readFile(img.uri, { encoding: 'binary' })) as ArrayBuffer);\n }\n await dstVFS.writeFile(\n path,\n img.data!.buffer.slice(img.data!.byteOffset, img.data!.byteOffset + img.data!.byteLength),\n { encoding: 'binary', create: true }\n );\n img.uri = path;\n img.data = undefined;\n img.mimeType = '';\n }\n }\n const materialKeys = Object.keys(this._materialList);\n if (materialKeys.length > 0) {\n console.info(`Importing ${materialKeys.length} materials`);\n for (const k of materialKeys) {\n const material = this._materialList[k];\n const baseName = this.sanitizeResourceName(\n this.getMaterialBaseName(material, k, destName),\n `${destName}_material_${k}`\n );\n const path =\n (await this.tryReuseExactResourcePath(\n dstVFS,\n destPath,\n baseName,\n '.zmtl',\n usedPaths,\n `${destName}_material_${k}`\n )) ??\n this.consumeReusableResourcePath(reusableResourcePools, baseName, '.zmtl', usedPaths) ??\n (await this.createUniqueResourcePath(\n dstVFS,\n destPath,\n baseName,\n '.zmtl',\n usedPaths,\n `${destName}_material_${k}`\n ));\n if (!rebuildMaterial && (await dstVFS.exists(path))) {\n material.path = path;\n continue;\n }\n material.path = '';\n const m = await this.createMaterial(manager, material, dstVFS);\n material.path = path;\n const data = await manager.serializeObject(m);\n const content = JSON.stringify({ type: 'Default', data }, null, 2);\n await dstVFS.writeFile(path, content, { encoding: 'utf8', create: true });\n m!.dispose();\n }\n }\n if (this._primitiveList.length > 0) {\n console.info(`Importing ${this._primitiveList.length} meshes`);\n for (let i = 0; i < this._primitiveList.length; i++) {\n const info = this._primitiveList[i];\n if (!info) {\n continue;\n }\n const baseName = this.sanitizeResourceName(\n this.getPrimitiveBaseName(info, i, destName),\n `${destName}_mesh_${i}`\n );\n const path =\n (await this.tryReuseExactResourcePath(\n dstVFS,\n destPath,\n baseName,\n '.zmsh',\n usedPaths,\n `${destName}_mesh_${i}`\n )) ??\n this.consumeReusableResourcePath(reusableResourcePools, baseName, '.zmsh', usedPaths) ??\n (await this.createUniqueResourcePath(\n dstVFS,\n destPath,\n baseName,\n '.zmsh',\n usedPaths,\n `${destName}_mesh_${i}`\n ));\n await SharedModel.writePrimitive(dstVFS, info, path);\n info.path = path;\n }\n }\n }\n createJointDynamics(rootNode: SceneNode, nodeMap: Map<AssetHierarchyNode, SceneNode>) {\n if (rootNode.animationSet.rigs.length === 0) {\n return;\n }\n for (const jd of this._jointDynamicsSpringBones) {\n const chains = jd.chains\n .map((chain) => {\n const start = nodeMap.get(chain.start)!;\n const end = nodeMap.get(chain.end)!;\n return { start, end };\n })\n .filter((chain) => {\n if (!chain.start || !chain.end) {\n return false;\n }\n return true;\n });\n const rigs = rootNode.animationSet.rigs.filter((ref) => {\n const joints = ref.get()!.joints;\n return chains.every((chain) => joints.includes(chain.start));\n });\n if (rigs.length === 0) {\n continue;\n }\n const colliders = jd.colliders\n .map((collider) => {\n const parent = nodeMap.get(collider.node);\n if (!parent) {\n return null;\n }\n const node = new SceneNode(parent.scene);\n node.name = collider.name ? `${collider.name}_JointDynamicsCollider` : 'JointDynamicsCollider';\n node.parent = parent;\n node.position.set(collider.localPosition);\n node.rotation.set(collider.localRotation);\n return {\n r: { ...collider.collider },\n transform: createTransformAccess(node)\n };\n })\n .filter(\n (collider): collider is { r: ColliderR; transform: ReturnType<typeof createTransformAccess> } => {\n return !!collider;\n }\n );\n const flatPlanes = jd.flatPlanes\n .map((flatPlane) => {\n const node = nodeMap.get(flatPlane.node);\n if (!node) {\n return null;\n }\n const up = node.worldMatrix.transformVectorAffine(flatPlane.up, new Vector3());\n if (up.magnitudeSq === 0) {\n return null;\n }\n return {\n up: up.inplaceNormalize(),\n position: node.worldMatrix.transformPointAffine(flatPlane.position, new Vector3())\n };\n })\n .filter((flatPlane): flatPlane is { up: Vector3; position: Vector3 } => {\n return !!flatPlane;\n });\n for (const rig of rigs) {\n const system = new JointDynamicsSystem(\n {\n chainConfig: {\n chains,\n systemRoot: rootNode\n },\n controllerConfig: jd.controllerConfig\n },\n colliders,\n [],\n flatPlanes\n );\n const modifier = new JointDynamicsModifier(system);\n rig.get()!.modifiers.push(modifier);\n }\n }\n }\n private createMorphTargetGroups(rootNode: SceneNode, meshMap: Map<AssetSubMeshData, Mesh>) {\n const runtimeGroups: SceneMorphTargetGroup[] = [];\n for (const group of this._morphTargetGroups) {\n const bindings: SceneMorphTargetBinding[] = [];\n for (const binding of group.bindings) {\n const assetMesh = binding.node?.mesh ?? binding.mesh ?? null;\n if (!assetMesh) {\n continue;\n }\n for (const subMesh of assetMesh.subMeshes) {\n const mesh = meshMap.get(subMesh);\n if (mesh) {\n bindings.push({\n mesh,\n targetIndex: binding.targetIndex,\n targetName: binding.targetName,\n weight: binding.weight\n });\n }\n }\n }\n if (bindings.length > 0) {\n runtimeGroups.push({\n name: group.name,\n bindings,\n isBinary: group.isBinary,\n weight: this.getInitialMorphTargetGroupWeight(bindings, group.isBinary)\n });\n }\n }\n rootNode.morphTargetGroups = runtimeGroups;\n }\n private getInitialMorphTargetGroupWeight(bindings: SceneMorphTargetBinding[], isBinary?: boolean): number {\n let result = 0;\n let found = false;\n for (const binding of bindings) {\n if (!binding.weight) {\n continue;\n }\n const targetWeight = this.getMorphTargetBindingWeight(binding);\n if (targetWeight === null) {\n continue;\n }\n const groupWeight = targetWeight / binding.weight;\n if (!found || Math.abs(groupWeight) > Math.abs(result)) {\n result = groupWeight;\n found = true;\n }\n }\n return isBinary ? (result > 0.5 ? 1 : 0) : result;\n }\n private getMorphTargetBindingWeight(binding: SceneMorphTargetBinding): Nullable<number> {\n const targetIndex = binding.targetIndex;\n if (\n typeof targetIndex === 'number' &&\n targetIndex >= 0 &&\n targetIndex < binding.mesh.getNumMorphTargets()\n ) {\n const targetName = binding.mesh.getMorphTargetName(targetIndex);\n if (targetName) {\n return binding.mesh.getMorphWeight(targetName);\n }\n }\n if (binding.targetName) {\n return binding.mesh.getMorphWeight(binding.targetName);\n }\n return null;\n }\n private remapHumanoidJointMapping(\n mapping: Nullable<HumanoidJointMapping<AssetHierarchyNode>>,\n nodeMap: Map<AssetHierarchyNode, SceneNode>\n ): Nullable<HumanoidJointMapping<SceneNode>> {\n if (!mapping) {\n return null;\n }\n const remap = <T extends string>(\n source: Record<T, AssetHierarchyNode> | undefined\n ): Record<T, SceneNode> | undefined => {\n if (!source) {\n return undefined;\n }\n const result = {} as Partial<Record<T, SceneNode>>;\n for (const key of Object.keys(source) as T[]) {\n const node = nodeMap.get(source[key]);\n if (node) {\n result[key] = node;\n }\n }\n return Object.keys(result).length > 0 ? (result as Record<T, SceneNode>) : undefined;\n };\n const body = remap(mapping.body);\n return body\n ? {\n body,\n leftHand: remap(mapping.leftHand),\n rightHand: remap(mapping.rightHand)\n }\n : null;\n }\n async createSceneNode(\n manager: ResourceManager,\n scene: Scene,\n instancing: boolean,\n saveMeshes: boolean,\n saveSkeletons: boolean,\n saveAnimations: boolean,\n saveJointDynamics: boolean,\n srcVFS: VFS\n ): Promise<SceneNode> {\n const group = new SceneNode(scene);\n const nodeMap: Map<AssetHierarchyNode, SceneNode> = new Map();\n const meshMap: Map<AssetSubMeshData, Mesh> = new Map();\n for (let i = 0; i < this.scenes.length; i++) {\n const assetScene = this.scenes[i];\n const skeletonMeshMap: Map<\n AssetSkeleton,\n { mesh: Mesh[]; bounding: AssetSubMeshData[]; binding?: SkinBinding }\n > = new Map();\n for (let k = 0; k < assetScene.rootNodes.length; k++) {\n await this.setAssetNodeToSceneNode(\n manager,\n scene,\n group,\n assetScene.rootNodes[k],\n skeletonMeshMap,\n nodeMap,\n meshMap,\n instancing,\n saveMeshes,\n saveSkeletons,\n saveAnimations,\n srcVFS\n );\n }\n if (saveSkeletons) {\n for (const sk of this.skeletons) {\n if (!skeletonMeshMap.has(sk)) {\n skeletonMeshMap.set(sk, {\n mesh: [],\n bounding: []\n });\n }\n }\n const rigMap = new Map<string, SkeletonRig>();\n for (const v of skeletonMeshMap) {\n const sk = v[0];\n const joints = sk.joints.map((val) => {\n const node = nodeMap.get(val)!;\n node.jointTypeT = 'static';\n node.jointTypeS = 'static';\n node.jointTypeR = 'static';\n return node;\n });\n const rootJoint = sk.root ? (nodeMap.get(sk.root) ?? null) : null;\n const rigKey = SkeletonRig.getRigKey(joints, rootJoint);\n let rig = rigMap.get(rigKey);\n if (!rig) {\n const humanoidJointMapping = this.remapHumanoidJointMapping(sk.humanoidJointMapping, nodeMap);\n rig = new SkeletonRig(\n joints,\n sk.bindPose,\n humanoidJointMapping ? { rootJoint, humanoidJointMapping } : { rootJoint }\n );\n rigMap.set(rigKey, rig);\n group.animationSet.rigs.push(new DRef(rig));\n }\n const binding = new SkinBinding(rig, sk.inverseBindMatrices, joints);\n const nodes = skeletonMeshMap.get(sk);\n if (nodes) {\n if (!nodes.binding) {\n nodes.binding = binding;\n for (let i = 0; i < nodes.mesh.length; i++) {\n const mesh = nodes.mesh[i];\n const v = {\n positions: nodes.bounding[i].rawPositions!,\n blendIndices: nodes.bounding[i].rawBlendIndices!,\n weights: nodes.bounding[i].rawJointWeights!\n };\n mesh.setSkinnedBoundingInfo(nodes.binding.getBoundingInfo(v));\n mesh.skeletonName = nodes.binding.persistentId;\n }\n }\n }\n group.animationSet.skeletons.push(new DRef(nodes!.binding));\n }\n }\n if (saveAnimations) {\n for (const animationData of this.animations) {\n if (animationData.skeletons.length > 0 && !saveSkeletons) {\n continue;\n }\n let name = animationData.name ?? `_embbeded_animation`;\n if (group.animationSet.getAnimationClip(name)) {\n const baseName = name;\n for (let t = 1; ; t++) {\n name = `${baseName}_${t}`;\n if (!group.animationSet.getAnimationClip(name)) {\n break;\n }\n }\n }\n const animation = group.animationSet.createAnimation(name, true)!;\n for (const sk of animationData.skeletons) {\n const nodes = skeletonMeshMap.get(sk);\n if (nodes) {\n animation.addSkeleton(nodes.binding!.rig.persistentId);\n }\n }\n for (const track of animationData.tracks) {\n const target = nodeMap.get(track.node)!;\n if (track.type === 'translation') {\n animation.addTrack(target, new NodeTranslationTrack(track.interpolator, true));\n target.jointTypeT = 'animated';\n } else if (track.type === 'scale') {\n animation.addTrack(target, new NodeScaleTrack(track.interpolator, true));\n target.jointTypeS = 'animated';\n } else if (track.type === 'rotation') {\n animation.addTrack(target, new NodeRotationTrack(track.interpolator, true));\n target.jointTypeR = 'animated';\n } else if (track.type === 'weights') {\n for (const m of track.node.mesh!.subMeshes) {\n const mesh = meshMap.get(m)!;\n if (track.interpolator.stride > MAX_MORPH_TARGETS) {\n console.error(\n `Morph target too large: ${track.interpolator.stride}, the maximum is ${MAX_MORPH_TARGETS}`\n );\n } else {\n const morphTrack = new MorphTargetTrack(\n track.interpolator,\n track.defaultMorphWeights,\n m.targetBox,\n mesh.getBoundingVolume()!.toAABB(),\n true\n );\n animation.addTrack(mesh, morphTrack);\n }\n }\n } else if (track.type === 'geometry-cache') {\n const subMesh = track.node.mesh?.subMeshes[track.subMeshIndex];\n const mesh = subMesh ? meshMap.get(subMesh) : null;\n if (!subMesh || !mesh) {\n console.error(`Invalid geometry cache sub mesh: ${track.subMeshIndex}`);\n } else {\n if (track.codec === 'pca') {\n const pcaData = this.remapPCAGeometryCacheData(subMesh, track);\n animation.addTrack(mesh, new PCAGeometryCacheTrack(pcaData, true));\n } else {\n const frames = this.remapGeometryCacheFrames(subMesh, track.frames);\n animation.addTrack(mesh, new FixedGeometryCacheTrack(track.times, frames, true));\n }\n }\n } else {\n console.error(`Invalid animation track type: ${track.type}`);\n }\n }\n }\n }\n }\n if (saveJointDynamics && saveSkeletons) {\n this.createJointDynamics(group, nodeMap);\n }\n this.createMorphTargetGroups(group, meshMap);\n return group;\n }\n\n private remapGeometryCacheFrames(subMesh: AssetSubMeshData, frames: FixedGeometryCacheFrame[]) {\n if (!subMesh.rawPositions || frames.length === 0) {\n return frames;\n }\n const sourcePositions = frames[0].positions;\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\n if (sourceVertexCount === targetVertexCount) {\n return frames;\n }\n const remap = this.buildGeometryCacheRemap(subMesh.rawPositions, sourcePositions);\n if (!remap) {\n console.error(\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\n `Export the base glb and zabc from the same final mesh layout.`\n );\n return frames;\n }\n return frames.map((frame) => ({\n positions: this.expandGeometryCacheData(frame.positions, remap),\n normals:\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\n ? this.expandGeometryCacheData(frame.normals, remap)\n : null,\n boundingBox: frame.boundingBox\n }));\n }\n\n private remapPCAGeometryCacheData(\n subMesh: AssetSubMeshData,\n track: AssetPCAGeometryCacheAnimationTrack\n ): PCAGeometryCacheTrackData {\n const remapReference = track.positionReference ?? this.reconstructPCAGeometryCacheReference(track);\n if (!subMesh.rawPositions || remapReference.length === 0) {\n return {\n times: track.times,\n bounds: track.bounds,\n positionReference: track.positionReference ?? null,\n positionMean: track.positionMean,\n positionBases: track.positionBases,\n positionCoefficients: track.positionCoefficients,\n normalMean: track.normalMean ?? null,\n normalBases: track.normalBases ?? null,\n normalCoefficients: track.normalCoefficients ?? null\n };\n }\n const sourceVertexCount = (remapReference.length / 3) >> 0;\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\n if (sourceVertexCount === targetVertexCount) {\n return {\n times: track.times,\n bounds: track.bounds,\n positionReference: track.positionReference ?? null,\n positionMean: track.positionMean,\n positionBases: track.positionBases,\n positionCoefficients: track.positionCoefficients,\n normalMean: track.normalMean ?? null,\n normalBases: track.normalBases ?? null,\n normalCoefficients: track.normalCoefficients ?? null\n };\n }\n const remap = this.buildGeometryCacheRemap(subMesh.rawPositions, remapReference);\n if (!remap) {\n console.error(\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\n `Export the base glb and zabc from the same final mesh layout.`\n );\n return {\n times: track.times,\n bounds: track.bounds,\n positionReference: track.positionReference ?? null,\n positionMean: track.positionMean,\n positionBases: track.positionBases,\n positionCoefficients: track.positionCoefficients,\n normalMean: track.normalMean ?? null,\n normalBases: track.normalBases ?? null,\n normalCoefficients: track.normalCoefficients ?? null\n };\n }\n return {\n times: track.times,\n bounds: track.bounds,\n positionReference: this.expandGeometryCacheData(remapReference, remap),\n positionMean: this.expandGeometryCacheData(track.positionMean, remap),\n positionBases: track.positionBases.map((basis) => this.expandGeometryCacheData(basis, remap)),\n positionCoefficients: track.positionCoefficients,\n normalMean:\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\n ? this.expandGeometryCacheData(track.normalMean, remap)\n : null,\n normalBases:\n track.normalBases?.map((basis) =>\n (basis.length / 3) >> 0 === sourceVertexCount ? this.expandGeometryCacheData(basis, remap) : basis\n ) ?? null,\n normalCoefficients: track.normalCoefficients ?? null\n };\n }\n\n private reconstructPCAGeometryCacheReference(track: AssetPCAGeometryCacheAnimationTrack) {\n const reference = new Float32Array(track.positionMean);\n const coefficients = track.positionCoefficients[0];\n if (!coefficients) {\n return reference;\n }\n const componentCount = Math.min(track.positionBases.length, coefficients.length);\n for (let component = 0; component < componentCount; component++) {\n const basis = track.positionBases[component];\n const coefficient = coefficients[component];\n if (!basis || coefficient === 0) {\n continue;\n }\n const count = Math.min(reference.length, basis.length);\n for (let i = 0; i < count; i++) {\n reference[i] += basis[i] * coefficient;\n }\n }\n return reference;\n }\n\n private buildGeometryCacheRemap(targetPositions: Float32Array, sourcePositions: Float32Array) {\n const sourceCount = (sourcePositions.length / 3) >> 0;\n const targetCount = (targetPositions.length / 3) >> 0;\n const buckets = new Map<string, number[]>();\n for (let i = 0; i < sourceCount; i++) {\n const key = this.geometryCachePositionKey(\n sourcePositions[i * 3],\n sourcePositions[i * 3 + 1],\n sourcePositions[i * 3 + 2]\n );\n const bucket = buckets.get(key);\n if (bucket) {\n bucket.push(i);\n } else {\n buckets.set(key, [i]);\n }\n }\n const remap = new Uint32Array(targetCount);\n for (let i = 0; i < targetCount; i++) {\n const x = targetPositions[i * 3];\n const y = targetPositions[i * 3 + 1];\n const z = targetPositions[i * 3 + 2];\n let sourceIndex = this.findGeometryCacheSourceIndex(sourcePositions, buckets, x, y, z);\n if (sourceIndex < 0) {\n sourceIndex = this.findNearestGeometryCacheSourceIndex(sourcePositions, x, y, z);\n }\n if (sourceIndex < 0) {\n return null;\n }\n remap[i] = sourceIndex;\n }\n return remap;\n }\n\n private expandGeometryCacheData(source: Float32Array, remap: Uint32Array) {\n const expanded = new Float32Array(remap.length * 3);\n for (let i = 0; i < remap.length; i++) {\n const sourceOffset = remap[i] * 3;\n const targetOffset = i * 3;\n expanded[targetOffset] = source[sourceOffset];\n expanded[targetOffset + 1] = source[sourceOffset + 1];\n expanded[targetOffset + 2] = source[sourceOffset + 2];\n }\n return expanded;\n }\n\n private findGeometryCacheSourceIndex(\n sourcePositions: Float32Array,\n buckets: Map<string, number[]>,\n x: number,\n y: number,\n z: number\n ) {\n const bucket = buckets.get(this.geometryCachePositionKey(x, y, z));\n if (!bucket) {\n return -1;\n }\n const epsilon = 1e-5;\n for (const index of bucket) {\n const offset = index * 3;\n if (\n Math.abs(sourcePositions[offset] - x) <= epsilon &&\n Math.abs(sourcePositions[offset + 1] - y) <= epsilon &&\n Math.abs(sourcePositions[offset + 2] - z) <= epsilon\n ) {\n return index;\n }\n }\n return -1;\n }\n\n private findNearestGeometryCacheSourceIndex(\n sourcePositions: Float32Array,\n x: number,\n y: number,\n z: number\n ) {\n const epsilonSquared = 1e-8;\n let bestIndex = -1;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (let i = 0; i < sourcePositions.length; i += 3) {\n const dx = sourcePositions[i] - x;\n const dy = sourcePositions[i + 1] - y;\n const dz = sourcePositions[i + 2] - z;\n const distance = dx * dx + dy * dy + dz * dz;\n if (distance < bestDistance) {\n bestDistance = distance;\n bestIndex = i / 3;\n }\n }\n return bestDistance <= epsilonSquared ? bestIndex : -1;\n }\n\n private geometryCachePositionKey(x: number, y: number, z: number) {\n return `${Math.round(x * 100000)}|${Math.round(y * 100000)}|${Math.round(z * 100000)}`;\n }\n\n protected onDispose() {\n super.onDispose();\n for (const prim of this._primitiveMap.values()) {\n prim.dispose();\n }\n for (const tex of this._textureMap.values()) {\n tex.dispose();\n }\n this._skeletons = [];\n this._scenes = [];\n this._animations = [];\n }\n private async setAssetNodeToSceneNode(\n manager: ResourceManager,\n scene: Scene,\n parent: SceneNode,\n assetNode: AssetHierarchyNode,\n skeletonMeshMap: Map<AssetSkeleton, { mesh: Mesh[]; bounding: AssetSubMeshData[] }>,\n nodeMap: Map<AssetHierarchyNode, SceneNode>,\n meshMap: Map<AssetSubMeshData, Mesh>,\n instancing: boolean,\n saveMeshes: boolean,\n saveSkeletons: boolean,\n saveAnimations: boolean,\n srcVFS: VFS\n ) {\n const node: SceneNode = new SceneNode(scene);\n nodeMap.set(assetNode, node);\n node.name = assetNode.name ?? '';\n node.position.set(assetNode.position);\n node.rotation.set(assetNode.rotation);\n node.scale.set(assetNode.scaling);\n if (saveMeshes && assetNode.mesh) {\n const meshData = assetNode.mesh;\n const skeleton = saveSkeletons ? assetNode.skeleton : null;\n for (const subMesh of meshData.subMeshes) {\n if (assetNode.instances.length === 0) {\n assetNode.instances.push({ t: Vector3.zero(), s: Vector3.one(), r: Quaternion.identity() });\n }\n for (const instance of assetNode.instances) {\n const meshNode = new Mesh(scene);\n meshNode.position = instance.t;\n meshNode.scale = instance.s;\n meshNode.rotation = instance.r;\n meshNode.name = subMesh.name;\n meshNode.clipTestEnabled = true;\n meshNode.showState = 'inherit';\n if (!this._primitiveMap.get(subMesh.primitive!)) {\n this._primitiveMap.set(\n subMesh.primitive!,\n new DRef((await this.createPrimitive(manager, subMesh.primitive!, srcVFS)) ?? undefined)\n );\n }\n meshNode.primitive = this._primitiveMap.get(subMesh.primitive!)!.get()!;\n if (!subMesh.material!.material) {\n subMesh.material!.material = new DRef(\n (await this.createMaterial(manager, subMesh.material!, srcVFS)) ?? undefined\n );\n }\n meshNode.material = subMesh.material!.material?.get() ?? null;\n if (instancing) {\n meshNode.material = meshNode.material!.createInstance();\n }\n meshNode.parent = node;\n meshMap.set(subMesh, meshNode);\n setSceneMeshAssetBinding(meshNode, { node: assetNode, mesh: meshData, subMesh });\n processMorphData(\n subMesh,\n meshNode,\n assetNode.weights ?? meshData.morphWeights,\n meshData.morphNames\n );\n if (skeleton) {\n if (!skeletonMeshMap.has(skeleton)) {\n skeletonMeshMap.set(skeleton, { mesh: [meshNode], bounding: [subMesh] });\n } else {\n skeletonMeshMap.get(skeleton)!.mesh.push(meshNode);\n skeletonMeshMap.get(skeleton)!.bounding.push(subMesh);\n }\n }\n }\n }\n }\n node.parent = parent;\n for (const child of assetNode.children) {\n await this.setAssetNodeToSceneNode(\n manager,\n scene,\n node,\n child,\n skeletonMeshMap,\n nodeMap,\n meshMap,\n instancing,\n saveMeshes,\n saveSkeletons,\n saveAnimations,\n srcVFS\n );\n }\n return node;\n }\n private async image2Texture(\n manager: ResourceManager,\n info: AssetTextureInfo,\n srcVFS: VFS\n ): Promise<Nullable<Texture2D>> {\n if (info.image!.uri) {\n const texture = await manager.fetchTexture<Texture2D>(info.image!.uri, {\n linearColorSpace: !info.sRGB,\n overrideVFS: srcVFS\n });\n texture.name = info.image!.uri;\n return texture;\n } else if (info.image!.data && info.image!.mimeType) {\n const texture = await manager.loadTextureFromBuffer<Texture2D>(\n info.image!.data,\n info.image!.mimeType,\n !!info.sRGB\n );\n return texture;\n }\n return null;\n }\n private async createTexture(\n manager: ResourceManager,\n info: AssetTextureInfo,\n srcVFS: VFS\n ): Promise<Nullable<MaterialTextureInfo>> {\n try {\n let textureRef = this._textureMap.get(info);\n if (!textureRef) {\n textureRef = new DRef(await this.image2Texture(manager, info, srcVFS));\n this._textureMap.set(info, textureRef);\n }\n const sampler = getDevice().createSampler({\n addressU: info.sampler!.wrapS,\n addressV: info.sampler!.wrapT,\n magFilter: info.sampler!.magFilter,\n minFilter: info.sampler!.minFilter,\n mipFilter: info.sampler!.mipFilter\n });\n const transform = info.transform!;\n const texCoord = info.texCoord;\n return {\n texture: textureRef.get()!,\n sampler,\n texCoord,\n transform\n };\n } catch (err) {\n console.error(`Load asset texture failed: ${err}`);\n return null;\n }\n }\n\n private async createPrimitive(\n manager: ResourceManager,\n info: AssetPrimitiveInfo,\n srcVFS: VFS\n ): Promise<Nullable<Primitive>> {\n if (info.path) {\n return manager.fetchPrimitive(info.path, { overrideVFS: srcVFS });\n }\n const primitive = new Primitive();\n for (const k in info.vertices) {\n const v = info.vertices[k as VertexSemantic];\n primitive.createAndSetVertexBuffer(v.format, v.data);\n }\n if (info.indices) {\n primitive.createAndSetIndexBuffer(info.indices);\n }\n primitive.primitiveType = info.type;\n primitive.indexCount = info.indexCount;\n primitive.setBoundingVolume(new BoundingBox(info.boxMin, info.boxMax));\n return primitive;\n }\n private async createMaterial(\n manager: ResourceManager,\n assetMaterial: AssetMaterial,\n srcVFS: VFS\n ): Promise<Nullable<MeshMaterial>> {\n if (assetMaterial.path) {\n return manager.fetchMaterial<MeshMaterial>(assetMaterial.path, { overrideVFS: srcVFS });\n }\n const infoMap: Map<AssetTextureInfo, Nullable<MaterialTextureInfo>> = new Map();\n const that = this;\n async function getTextureInfo(info: AssetTextureInfo): Promise<Nullable<MaterialTextureInfo>> {\n let t = infoMap.get(info);\n if (t === undefined) {\n t = await that.createTexture(manager, info, srcVFS);\n infoMap.set(info, t);\n }\n return t;\n }\n async function setMaterialTexture(\n material: Record<string, unknown>,\n propertyPrefix: string,\n textureInfo?: AssetTextureInfo\n ): Promise<void> {\n if (!textureInfo) {\n return;\n }\n const info = await getTextureInfo(textureInfo);\n if (info) {\n material[`${propertyPrefix}Texture`] = info.texture;\n material[`${propertyPrefix}TextureSampler`] = info.sampler;\n material[`${propertyPrefix}TexCoordIndex`] = info.texCoord;\n material[`${propertyPrefix}TexCoordMatrix`] = info.transform;\n }\n }\n if (assetMaterial.type === 'unlit') {\n const unlitAssetMaterial = assetMaterial as AssetUnlitMaterial;\n const unlitMaterial = new UnlitMaterial();\n unlitMaterial.albedoColor = unlitAssetMaterial.diffuse ?? Vector4.one();\n if (unlitAssetMaterial.diffuseMap) {\n const info = await getTextureInfo(unlitAssetMaterial.diffuseMap);\n if (info) {\n unlitMaterial.albedoTexture = info.texture;\n unlitMaterial.albedoTextureSampler = info.sampler;\n unlitMaterial.albedoTexCoordIndex = info.texCoord;\n unlitMaterial.albedoTexCoordMatrix = info.transform;\n }\n }\n unlitMaterial.vertexColor = unlitAssetMaterial.common.vertexColor!;\n if (assetMaterial.common.alphaMode === 'blend') {\n unlitMaterial.blendMode = 'blend';\n } else if (assetMaterial.common.alphaMode === 'mask') {\n unlitMaterial.alphaCutoff = assetMaterial.common.alphaCutoff!;\n }\n if (assetMaterial.common.doubleSided) {\n unlitMaterial.cullMode = 'none';\n }\n return unlitMaterial;\n } else if (assetMaterial.type === 'mtoon') {\n const mtoonAssetMaterial = assetMaterial as AssetMToonMaterial;\n const mtoonMaterial = new MToonMaterial();\n const mtoonTextureTarget = mtoonMaterial as unknown as Record<string, unknown>;\n mtoonMaterial.albedoColor = mtoonAssetMaterial.diffuse ?? Vector4.one();\n await setMaterialTexture(mtoonTextureTarget, 'albedo', mtoonAssetMaterial.diffuseMap);\n await setMaterialTexture(mtoonTextureTarget, 'normal', mtoonAssetMaterial.common.normalMap);\n mtoonMaterial.normalScale = mtoonAssetMaterial.common.bumpScale ?? 1;\n await setMaterialTexture(mtoonTextureTarget, 'emissive', mtoonAssetMaterial.common.emissiveMap);\n mtoonMaterial.emissiveColor = mtoonAssetMaterial.common.emissiveColor ?? Vector3.zero();\n mtoonMaterial.emissiveStrength = mtoonAssetMaterial.common.emissiveStrength ?? 1;\n if (mtoonAssetMaterial.shadeColorFactor) {\n mtoonMaterial.shadeColorFactor = mtoonAssetMaterial.shadeColorFactor;\n }\n await setMaterialTexture(mtoonTextureTarget, 'shadeMultiply', mtoonAssetMaterial.shadeMultiplyMap);\n if (mtoonAssetMaterial.shadingShiftFactor !== undefined) {\n mtoonMaterial.shadingShiftFactor = mtoonAssetMaterial.shadingShiftFactor;\n }\n await setMaterialTexture(mtoonTextureTarget, 'shadingShift', mtoonAssetMaterial.shadingShiftMap);\n if (mtoonAssetMaterial.shadingShiftTextureScale !== undefined) {\n mtoonMaterial.shadingShiftTextureScale = mtoonAssetMaterial.shadingShiftTextureScale;\n }\n if (mtoonAssetMaterial.shadingToonyFactor !== undefined) {\n mtoonMaterial.shadingToonyFactor = mtoonAssetMaterial.shadingToonyFactor;\n }\n if (mtoonAssetMaterial.giEqualizationFactor !== undefined) {\n mtoonMaterial.giEqualizationFactor = mtoonAssetMaterial.giEqualizationFactor;\n }\n if (mtoonAssetMaterial.matcapFactor) {\n mtoonMaterial.matcapFactor = mtoonAssetMaterial.matcapFactor;\n }\n await setMaterialTexture(mtoonTextureTarget, 'matcap', mtoonAssetMaterial.matcapMap);\n if (mtoonAssetMaterial.parametricRimColorFactor) {\n mtoonMaterial.parametricRimColorFactor = mtoonAssetMaterial.parametricRimColorFactor;\n }\n if (mtoonAssetMaterial.parametricRimFresnelPowerFactor !== undefined) {\n mtoonMaterial.parametricRimFresnelPowerFactor = mtoonAssetMaterial.parametricRimFresnelPowerFactor;\n }\n if (mtoonAssetMaterial.parametricRimLiftFactor !== undefined) {\n mtoonMaterial.parametricRimLiftFactor = mtoonAssetMaterial.parametricRimLiftFactor;\n }\n await setMaterialTexture(mtoonTextureTarget, 'rimMultiply', mtoonAssetMaterial.rimMultiplyMap);\n if (mtoonAssetMaterial.rimLightingMixFactor !== undefined) {\n mtoonMaterial.rimLightingMixFactor = mtoonAssetMaterial.rimLightingMixFactor;\n }\n if (mtoonAssetMaterial.outlineWidthMode !== undefined) {\n mtoonMaterial.outlineWidthMode = mtoonAssetMaterial.outlineWidthMode;\n }\n if (mtoonAssetMaterial.outlineWidthFactor !== undefined) {\n mtoonMaterial.outlineWidthFactor = mtoonAssetMaterial.outlineWidthFactor;\n }\n await setMaterialTexture(\n mtoonTextureTarget,\n 'outlineWidthMultiply',\n mtoonAssetMaterial.outlineWidthMultiplyMap\n );\n if (mtoonAssetMaterial.outlineColorFactor) {\n mtoonMaterial.outlineColorFactor = mtoonAssetMaterial.outlineColorFactor;\n }\n if (mtoonAssetMaterial.outlineLightingMixFactor !== undefined) {\n mtoonMaterial.outlineLightingMixFactor = mtoonAssetMaterial.outlineLightingMixFactor;\n }\n if (mtoonAssetMaterial.outlineUsesTangentNormals !== undefined) {\n mtoonMaterial.outlineUsesTangentNormals = mtoonAssetMaterial.outlineUsesTangentNormals;\n }\n await setMaterialTexture(mtoonTextureTarget, 'uvAnimationMask', mtoonAssetMaterial.uvAnimationMaskMap);\n if (mtoonAssetMaterial.uvAnimationScrollXSpeedFactor !== undefined) {\n mtoonMaterial.uvAnimationScrollXSpeedFactor = mtoonAssetMaterial.uvAnimationScrollXSpeedFactor;\n }\n if (mtoonAssetMaterial.uvAnimationScrollYSpeedFactor !== undefined) {\n mtoonMaterial.uvAnimationScrollYSpeedFactor = mtoonAssetMaterial.uvAnimationScrollYSpeedFactor;\n }\n if (mtoonAssetMaterial.uvAnimationRotationSpeedFactor !== undefined) {\n mtoonMaterial.uvAnimationRotationSpeedFactor = mtoonAssetMaterial.uvAnimationRotationSpeedFactor;\n }\n if (mtoonAssetMaterial.transparentWithZWrite !== undefined) {\n mtoonMaterial.transparentWithZWrite = mtoonAssetMaterial.transparentWithZWrite;\n }\n if (mtoonAssetMaterial.renderQueueOffsetNumber !== undefined) {\n mtoonMaterial.renderQueueOffsetNumber = mtoonAssetMaterial.renderQueueOffsetNumber;\n }\n if (mtoonAssetMaterial.common.alphaMode === 'blend') {\n mtoonMaterial.blendMode = 'blend';\n } else if (mtoonAssetMaterial.common.alphaMode === 'mask') {\n mtoonMaterial.alphaCutoff = mtoonAssetMaterial.common.alphaCutoff!;\n }\n if (mtoonAssetMaterial.common.doubleSided) {\n mtoonMaterial.cullMode = 'none';\n }\n return mtoonMaterial;\n } else if (assetMaterial.type === 'pbrSpecularGlossiness') {\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialSG;\n const pbrMaterial = new PBRSpecularGlossinessMaterial();\n pbrMaterial.ior = assetPBRMaterial.ior!;\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\n pbrMaterial.specularFactor = new Vector3(\n assetPBRMaterial.specular!.x,\n assetPBRMaterial.specular!.y,\n assetPBRMaterial.specular!.z\n );\n pbrMaterial.glossinessFactor = assetPBRMaterial.glossness!;\n if (assetPBRMaterial.diffuseMap) {\n const info = await getTextureInfo(assetPBRMaterial.diffuseMap);\n if (info) {\n pbrMaterial.albedoTexture = info.texture;\n pbrMaterial.albedoTextureSampler = info.sampler;\n pbrMaterial.albedoTexCoordIndex = info.texCoord;\n pbrMaterial.albedoTexCoordMatrix = info.transform;\n }\n }\n if (assetPBRMaterial.common.normalMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.normalMap);\n if (info) {\n pbrMaterial.normalTexture = info.texture;\n pbrMaterial.normalTextureSampler = info.sampler;\n pbrMaterial.normalTexCoordIndex = info.texCoord;\n pbrMaterial.normalTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\n if (assetPBRMaterial.common.emissiveMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.emissiveMap);\n if (info) {\n pbrMaterial.emissiveTexture = info.texture;\n pbrMaterial.emissiveTextureSampler = info.sampler;\n pbrMaterial.emissiveTexCoordIndex = info.texCoord;\n pbrMaterial.emissiveTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\n if (assetPBRMaterial.common.occlusionMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.occlusionMap);\n if (info) {\n pbrMaterial.occlusionTexture = info.texture;\n pbrMaterial.occlusionTextureSampler = info.sampler;\n pbrMaterial.occlusionTexCoordIndex = info.texCoord;\n pbrMaterial.occlusionTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\n if (assetPBRMaterial.specularGlossnessMap) {\n const info = await getTextureInfo(assetPBRMaterial.specularGlossnessMap);\n if (info) {\n pbrMaterial.specularTexture = info.texture;\n pbrMaterial.specularTextureSampler = info.sampler;\n pbrMaterial.specularTexCoordIndex = info.texCoord;\n pbrMaterial.specularTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\n if (assetPBRMaterial.common.alphaMode === 'blend') {\n pbrMaterial.blendMode = 'blend';\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\n }\n if (assetPBRMaterial.common.doubleSided) {\n pbrMaterial.cullMode = 'none';\n }\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\n return pbrMaterial;\n } else if (assetMaterial.type === 'pbrMetallicRoughness') {\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialMR;\n const pbrMaterial = new PBRMetallicRoughnessMaterial();\n pbrMaterial.ior = assetPBRMaterial.ior!;\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\n pbrMaterial.metallic = assetPBRMaterial.metallic!;\n pbrMaterial.roughness = assetPBRMaterial.roughness!;\n if (assetPBRMaterial.diffuseMap) {\n const info = await getTextureInfo(assetPBRMaterial.diffuseMap);\n if (info) {\n pbrMaterial.albedoTexture = info.texture;\n pbrMaterial.albedoTextureSampler = info.sampler;\n pbrMaterial.albedoTexCoordIndex = info.texCoord;\n pbrMaterial.albedoTexCoordMatrix = info.transform;\n }\n }\n if (assetPBRMaterial.common.normalMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.normalMap);\n if (info) {\n pbrMaterial.normalTexture = info.texture;\n pbrMaterial.normalTextureSampler = info.sampler;\n pbrMaterial.normalTexCoordIndex = info.texCoord;\n pbrMaterial.normalTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\n if (assetPBRMaterial.common.emissiveMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.emissiveMap);\n if (info) {\n pbrMaterial.emissiveTexture = info.texture;\n pbrMaterial.emissiveTextureSampler = info.sampler;\n pbrMaterial.emissiveTexCoordIndex = info.texCoord;\n pbrMaterial.emissiveTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\n if (assetPBRMaterial.common.occlusionMap) {\n const info = await getTextureInfo(assetPBRMaterial.common.occlusionMap);\n if (info) {\n pbrMaterial.occlusionTexture = info.texture;\n pbrMaterial.occlusionTextureSampler = info.sampler;\n pbrMaterial.occlusionTexCoordIndex = info.texCoord;\n pbrMaterial.occlusionTexCoordMatrix = info.transform;\n }\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\n }\n if (assetPBRMaterial.metallicMap) {\n const info = await getTextureInfo(assetPBRMaterial.metallicMap);\n if (info) {\n pbrMaterial.metallicRoughnessTexture = info.texture;\n pbrMaterial.metallicRoughnessTextureSampler = info.sampler;\n pbrMaterial.metallicRoughnessTexCoordIndex = info.texCoord;\n pbrMaterial.metallicRoughnessTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.specularFactor = assetPBRMaterial.specularFactor!;\n if (assetPBRMaterial.specularMap) {\n const info = await getTextureInfo(assetPBRMaterial.specularMap);\n if (info) {\n pbrMaterial.specularTexture = info.texture;\n pbrMaterial.specularTextureSampler = info.sampler;\n pbrMaterial.specularTexCoordIndex = info.texCoord;\n pbrMaterial.specularTexCoordMatrix = info.transform;\n }\n }\n if (assetPBRMaterial.specularColorMap) {\n const info = await getTextureInfo(assetPBRMaterial.specularColorMap);\n if (info) {\n pbrMaterial.specularColorTexture = info.texture;\n pbrMaterial.specularColorTextureSampler = info.sampler;\n pbrMaterial.specularColorTexCoordIndex = info.texCoord;\n pbrMaterial.specularColorTexCoordMatrix = info.transform;\n }\n }\n if (assetPBRMaterial.sheen) {\n const sheen = assetPBRMaterial.sheen;\n pbrMaterial.sheen = true;\n pbrMaterial.sheenColorFactor = sheen.sheenColorFactor!;\n pbrMaterial.sheenRoughnessFactor = sheen.sheenRoughnessFactor!;\n if (sheen.sheenColorMap) {\n const info = await getTextureInfo(sheen.sheenColorMap);\n if (info) {\n pbrMaterial.sheenColorTexture = info.texture;\n pbrMaterial.sheenColorTextureSampler = info.sampler;\n pbrMaterial.sheenColorTexCoordIndex = info.texCoord;\n pbrMaterial.sheenColorTexCoordMatrix = info.transform;\n }\n }\n if (sheen.sheenRoughnessMap) {\n const info = await getTextureInfo(sheen.sheenRoughnessMap);\n if (info) {\n pbrMaterial.sheenRoughnessTexture = info.texture;\n pbrMaterial.sheenRoughnessTextureSampler = info.sampler;\n pbrMaterial.sheenRoughnessTexCoordIndex = info.texCoord;\n pbrMaterial.sheenRoughnessTexCoordMatrix = info.transform;\n }\n }\n }\n if (assetPBRMaterial.iridescence) {\n const iridescence = assetPBRMaterial.iridescence;\n pbrMaterial.iridescence = true;\n pbrMaterial.iridescenceFactor = iridescence.iridescenceFactor!;\n pbrMaterial.iridescenceIor = iridescence.iridescenceIor!;\n if (iridescence.iridescenceMap) {\n const info = await getTextureInfo(iridescence.iridescenceMap);\n if (info) {\n pbrMaterial.iridescenceTexture = info.texture;\n pbrMaterial.iridescenceTextureSampler = info.sampler;\n pbrMaterial.iridescenceTexCoordIndex = info.texCoord;\n pbrMaterial.iridescenceTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.iridescenceThicknessMin = iridescence.iridescenceThicknessMinimum!;\n pbrMaterial.iridescenceThicknessMax = iridescence.iridescenceThicknessMaximum!;\n if (iridescence.iridescenceThicknessMap) {\n const info = await getTextureInfo(iridescence.iridescenceThicknessMap);\n if (info) {\n pbrMaterial.iridescenceThicknessTexture = info.texture;\n pbrMaterial.iridescenceThicknessTextureSampler = info.sampler;\n pbrMaterial.iridescenceThicknessTexCoordIndex = info.texCoord;\n pbrMaterial.iridescenceThicknessTexCoordMatrix = info.transform;\n }\n }\n }\n if (assetPBRMaterial.transmission) {\n const transmission = assetPBRMaterial.transmission;\n pbrMaterial.transmission = true;\n pbrMaterial.transmissionFactor = transmission.transmissionFactor!;\n if (transmission.transmissionMap) {\n const info = await getTextureInfo(transmission.transmissionMap);\n if (info) {\n pbrMaterial.transmissionTexture = info.texture;\n pbrMaterial.transmissionTextureSampler = info.sampler;\n pbrMaterial.transmissionTexCoordIndex = info.texCoord;\n pbrMaterial.transmissionTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.thicknessFactor = transmission.thicknessFactor!;\n if (transmission.thicknessMap) {\n const info = await getTextureInfo(transmission.thicknessMap);\n if (info) {\n pbrMaterial.thicknessTexture = info.texture;\n pbrMaterial.thicknessTextureSampler = info.sampler;\n pbrMaterial.thicknessTexCoordIndex = info.texCoord;\n pbrMaterial.thicknessTexCoordMatrix = info.transform;\n }\n }\n pbrMaterial.attenuationDistance = transmission.attenuationDistance!;\n pbrMaterial.attenuationColor = transmission.attenuationColor!;\n }\n if (assetPBRMaterial.clearcoat) {\n const cc = assetPBRMaterial.clearcoat;\n pbrMaterial.clearcoat = true;\n pbrMaterial.clearcoatIntensity = cc.clearCoatFactor!;\n pbrMaterial.clearcoatRoughnessFactor = cc.clearCoatRoughnessFactor!;\n if (cc.clearCoatIntensityMap) {\n const info = await getTextureInfo(cc.clearCoatIntensityMap);\n if (info) {\n pbrMaterial.clearcoatIntensityTexture = info.texture;\n pbrMaterial.clearcoatIntensityTextureSampler = info.sampler;\n pbrMaterial.clearcoatIntensityTexCoordIndex = info.texCoord;\n pbrMaterial.clearcoatIntensityTexCoordMatrix = info.transform;\n }\n }\n if (cc.clearCoatRoughnessMap) {\n const info = await getTextureInfo(cc.clearCoatRoughnessMap);\n if (info) {\n pbrMaterial.clearcoatRoughnessTexture = info.texture;\n pbrMaterial.clearcoatRoughnessTextureSampler = info.sampler;\n pbrMaterial.clearcoatRoughnessTexCoordIndex = info.texCoord;\n pbrMaterial.clearcoatRoughnessTexCoordMatrix = info.transform;\n }\n }\n if (cc.clearCoatNormalMap) {\n const info = await getTextureInfo(cc.clearCoatNormalMap);\n if (info) {\n pbrMaterial.clearcoatNormalTexture = info.texture;\n pbrMaterial.clearcoatNormalTextureSampler = info.sampler;\n pbrMaterial.clearcoatNormalTexCoordIndex = info.texCoord;\n pbrMaterial.clearcoatNormalTexCoordMatrix = info.transform;\n }\n }\n }\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\n if (assetPBRMaterial.common.alphaMode === 'blend') {\n pbrMaterial.blendMode = 'blend';\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\n }\n if (assetPBRMaterial.common.doubleSided) {\n pbrMaterial.cullMode = 'none';\n }\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\n return pbrMaterial;\n }\n return null;\n }\n}\n\n/** @internal */\nfunction processMorphData(\n subMesh: AssetSubMeshData,\n mesh: Mesh,\n morphWeights?: Nullable<number[]>,\n morphNames?: Nullable<string[]>\n) {\n const device = getDevice();\n const numTargets = subMesh.numTargets;\n if (numTargets === 0) {\n return;\n }\n const attributes = Object.getOwnPropertyNames(subMesh.targets);\n const positionInfo = subMesh.primitive!.vertices['position'];\n const numVertices = positionInfo\n ? (positionInfo.data.length / getVertexFormatComponentCount(positionInfo.format)) >> 0\n : 0;\n const weightsAndOffsets = new Float32Array(4 + MAX_MORPH_TARGETS + MAX_MORPH_ATTRIBUTES);\n for (let i = 0; i < numTargets; i++) {\n weightsAndOffsets[4 + i] = morphWeights?.[i] ?? 0;\n }\n const textureSize = Math.ceil(Math.sqrt(numVertices * attributes.length * numTargets));\n if (textureSize > device.getDeviceCaps().textureCaps.maxTextureSize) {\n // TODO: reduce morph attributes\n throw new Error(`Morph target data too large`);\n }\n weightsAndOffsets[0] = textureSize;\n weightsAndOffsets[1] = textureSize;\n weightsAndOffsets[2] = numVertices;\n weightsAndOffsets[3] = numTargets;\n let offset = 0;\n const textureData = new Float32Array(textureSize * textureSize * 4);\n for (let attrib = 0; attrib < MAX_MORPH_ATTRIBUTES; attrib++) {\n const index = attributes.indexOf(String(attrib));\n if (index < 0) {\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = -1;\n continue;\n }\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = offset >> 2;\n const info = subMesh.targets![attrib]!;\n if (info.data.length !== numTargets) {\n console.error(`Invalid morph target data`);\n return;\n }\n for (let t = 0; t < numTargets; t++) {\n const data = info.data[t];\n for (let i = 0; i < numVertices; i++) {\n for (let j = 0; j < 4; j++) {\n textureData[offset++] = j < info.numComponents ? data[i * info.numComponents + j] : 1;\n }\n }\n }\n }\n const morphBoundingBox = new BoundingBox();\n calculateMorphBoundingBox(\n morphBoundingBox,\n subMesh.targetBox!,\n weightsAndOffsets.subarray(4, 4 + MAX_MORPH_TARGETS),\n numTargets\n );\n const meshAABB = mesh.getBoundingVolume()!.toAABB();\n morphBoundingBox.minPoint.addBy(meshAABB.minPoint);\n morphBoundingBox.maxPoint.addBy(meshAABB.maxPoint);\n\n const names: Record<string, number> = {};\n for (let i = 0; i < numTargets; i++) {\n const name = morphNames?.[i] ?? `Target${i}`;\n names[name] = i;\n }\n mesh.setMorphData({ width: textureSize, height: textureSize, data: textureData });\n mesh.setMorphInfo({ data: weightsAndOffsets, names });\n mesh.setMorphBoundingInfo({ targetBoxes: subMesh.targetBox!, originBox: new BoundingBox(meshAABB) });\n mesh.setAnimatedBoundingBox(morphBoundingBox);\n}\n\n/** @internal */\nfunction getAssetMeshMorphTargetCount(mesh: AssetMeshData): number {\n let count = 0;\n for (const subMesh of mesh.subMeshes) {\n count = Math.max(count, subMesh.numTargets);\n }\n return count;\n}\n\n/** @internal */\nfunction getAssetMeshMorphTargetName(mesh: AssetMeshData, index: number): string {\n return mesh.morphNames?.[index] ?? `Target${index}`;\n}\n\n/** @internal */\nfunction calculateMorphBoundingBox(\n morphBoundingBox: BoundingBox,\n keyframeBoundingBox: BoundingBox[],\n weights: Float32Array,\n numTargets: number\n) {\n morphBoundingBox.minPoint.setXYZ(0, 0, 0);\n morphBoundingBox.maxPoint.setXYZ(0, 0, 0);\n for (let i = 0; i < numTargets; i++) {\n const weight = weights[i];\n const keyframeBox = keyframeBoundingBox[i];\n morphBoundingBox.minPoint.x += keyframeBox.minPoint.x * weight;\n morphBoundingBox.minPoint.y += keyframeBox.minPoint.y * weight;\n morphBoundingBox.minPoint.z += keyframeBox.minPoint.z * weight;\n morphBoundingBox.maxPoint.x += keyframeBox.maxPoint.x * weight;\n morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.y * weight;\n morphBoundingBox.maxPoint.z += keyframeBox.maxPoint.z * weight;\n }\n}\n"],"names":["NamedObject","name","AssetHierarchyNode","_parent","_position","_rotation","_scaling","_mesh","_skeleton","_attachToSkeleton","_matrix","_worldMatrix","_weights","_children","_instances","model","parent","nodes","push","Vector3","zero","Quaternion","identity","one","addChild","matrix","worldMatrix","mesh","data","instances","weights","val","skeleton","position","rotation","scaling","children","skeletonAttached","isParentOf","child","getWorldPosition","m03","m13","m23","computeTransforms","parentTransform","Matrix4x4","rotateLeft","translateLeft","multiply","Error","removeChild","index","indexOf","splice","attachToSkeleton","Set","add","AssetSkeleton","pivot","joints","inverseBindMatrices","bindPose","humanoidJointMapping","addJoint","joint","inverseBindMatrix","clone","scale","root","i","length","AssetScene","rootNodes","SharedModel","Disposable","_nodes","_skeletons","_scenes","_animations","_imageList","_primitiveList","_materialList","_springBoneColliders","_springBoneColliderGroups","_springBones","_jointDynamicsColliders","_jointDynamicsSpringBones","_morphTargetGroups","_activeScene","_textureMap","Map","_primitiveMap","scenes","primitives","animations","skeletons","springBoneColliders","springBoneColliderGroups","springBones","jointDynamicsColliders","jointDynamicsSpringBones","morphTargetGroups","activeScene","getImage","setImage","img","getMaterial","hash","setMaterial","material","addPrimitive","prim","sanitizeResourceName","fallback","normalized","trim","replace","getReimportPoolKey","baseName","ext","toLowerCase","getResourceBasename","path","PathUtils","basename","extname","getResourceNumericSuffix","candidateBaseName","match","RegExp","exec","Number","parseInt","MAX_SAFE_INTEGER","registerReusableResourcePath","pools","register","keyBaseName","key","candidates","get","set","strippedBaseName","collectReferencedAssetPaths","value","destPath","extensions","out","normalizedPath","normalize","normalizedDestPath","has","startsWith","endsWith","Array","isArray","item","Object","values","collectReferencedAssetPathsFromJsonFile","destVFS","jsonPath","exists","content","readFile","encoding","json","JSON","parse","err","console","warn","createReimportResourcePools","prefabPath","materialAndMeshPaths","materialPaths","from","filter","imageExtensions","materialPath","texturePaths","texturePath","consumeReusableResourcePath","usedPaths","size","sorted","sort","a","b","aSuffix","bSuffix","localeCompare","selected","createUniqueResourcePath","sanitizedBase","suffix","candidateName","candidatePath","join","tryReuseExactResourcePath","collapseCompositeTextureName","separatorIndex","left","slice","right","leftParts","split","rightParts","prefixLength","prefix","leftSuffix","rightSuffix","getImageBaseName","uri","getMaterialBaseName","getPrimitiveBaseName","info","addMorphTargetGroup","group","bindings","clearMorphTargetGroups","getMorphTargetGroup","find","buildMorphTargetGroupsByName","groups","meshes","node","count","getAssetMeshMorphTargetCount","targetName","getAssetMeshMorphTargetName","targetIndex","weight","addSkeleton","addAnimation","animation","writePrimitive","vfs","primitive","vertices","indices","uint8ArrayToBase64","Uint8Array","buffer","byteOffset","byteLength","indexType","Uint16Array","indexCount","type","boxMin","x","y","z","boxMax","k","v","format","stringify","writeFile","create","preprocess","manager","srcVFS","dstVFS","destName","rebuildMaterial","_preprocessOptions","prefabName","reusableResourcePools","mimeType","guessMIMEType","ASSERT","undefined","materialKeys","keys","m","createMaterial","serializeObject","dispose","createJointDynamics","rootNode","nodeMap","animationSet","rigs","jd","chains","map","chain","start","end","ref","every","includes","colliders","collider","SceneNode","scene","localPosition","localRotation","r","transform","createTransformAccess","flatPlanes","flatPlane","up","transformVectorAffine","magnitudeSq","inplaceNormalize","transformPointAffine","rig","system","JointDynamicsSystem","chainConfig","systemRoot","controllerConfig","modifier","JointDynamicsModifier","modifiers","createMorphTargetGroups","meshMap","runtimeGroups","binding","assetMesh","subMesh","subMeshes","isBinary","getInitialMorphTargetGroupWeight","result","found","targetWeight","getMorphTargetBindingWeight","groupWeight","Math","abs","getNumMorphTargets","getMorphTargetName","getMorphWeight","remapHumanoidJointMapping","mapping","remap","source","body","leftHand","rightHand","createSceneNode","instancing","saveMeshes","saveSkeletons","saveAnimations","saveJointDynamics","assetScene","skeletonMeshMap","setAssetNodeToSceneNode","sk","bounding","rigMap","jointTypeT","jointTypeS","jointTypeR","rootJoint","rigKey","SkeletonRig","getRigKey","DRef","SkinBinding","positions","rawPositions","blendIndices","rawBlendIndices","rawJointWeights","setSkinnedBoundingInfo","getBoundingInfo","skeletonName","persistentId","animationData","getAnimationClip","t","createAnimation","track","tracks","target","addTrack","NodeTranslationTrack","interpolator","NodeScaleTrack","NodeRotationTrack","stride","MAX_MORPH_TARGETS","error","morphTrack","MorphTargetTrack","defaultMorphWeights","targetBox","getBoundingVolume","toAABB","subMeshIndex","codec","pcaData","remapPCAGeometryCacheData","PCAGeometryCacheTrack","frames","remapGeometryCacheFrames","FixedGeometryCacheTrack","times","sourcePositions","sourceVertexCount","targetVertexCount","buildGeometryCacheRemap","frame","expandGeometryCacheData","normals","boundingBox","remapReference","positionReference","reconstructPCAGeometryCacheReference","bounds","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","basis","reference","Float32Array","coefficients","componentCount","min","component","coefficient","targetPositions","sourceCount","targetCount","buckets","geometryCachePositionKey","bucket","Uint32Array","sourceIndex","findGeometryCacheSourceIndex","findNearestGeometryCacheSourceIndex","expanded","sourceOffset","targetOffset","epsilon","offset","epsilonSquared","bestIndex","bestDistance","POSITIVE_INFINITY","dx","dy","dz","distance","round","onDispose","tex","assetNode","meshData","s","instance","meshNode","Mesh","clipTestEnabled","showState","createPrimitive","createInstance","setSceneMeshAssetBinding","processMorphData","morphWeights","morphNames","image2Texture","image","texture","fetchTexture","linearColorSpace","sRGB","overrideVFS","loadTextureFromBuffer","createTexture","textureRef","sampler","getDevice","createSampler","addressU","wrapS","addressV","wrapT","magFilter","minFilter","mipFilter","texCoord","fetchPrimitive","Primitive","createAndSetVertexBuffer","createAndSetIndexBuffer","primitiveType","setBoundingVolume","BoundingBox","assetMaterial","fetchMaterial","infoMap","that","getTextureInfo","setMaterialTexture","propertyPrefix","textureInfo","unlitAssetMaterial","unlitMaterial","UnlitMaterial","albedoColor","diffuse","Vector4","diffuseMap","albedoTexture","albedoTextureSampler","albedoTexCoordIndex","albedoTexCoordMatrix","vertexColor","common","alphaMode","blendMode","alphaCutoff","doubleSided","cullMode","mtoonAssetMaterial","mtoonMaterial","MToonMaterial","mtoonTextureTarget","normalMap","normalScale","bumpScale","emissiveMap","emissiveColor","emissiveStrength","shadeColorFactor","shadeMultiplyMap","shadingShiftFactor","shadingShiftMap","shadingShiftTextureScale","shadingToonyFactor","giEqualizationFactor","matcapFactor","matcapMap","parametricRimColorFactor","parametricRimFresnelPowerFactor","parametricRimLiftFactor","rimMultiplyMap","rimLightingMixFactor","outlineWidthMode","outlineWidthFactor","outlineWidthMultiplyMap","outlineColorFactor","outlineLightingMixFactor","outlineUsesTangentNormals","uvAnimationMaskMap","uvAnimationScrollXSpeedFactor","uvAnimationScrollYSpeedFactor","uvAnimationRotationSpeedFactor","transparentWithZWrite","renderQueueOffsetNumber","assetPBRMaterial","pbrMaterial","PBRSpecularGlossinessMaterial","ior","specularFactor","specular","glossinessFactor","glossness","normalTexture","normalTextureSampler","normalTexCoordIndex","normalTexCoordMatrix","emissiveTexture","emissiveTextureSampler","emissiveTexCoordIndex","emissiveTexCoordMatrix","occlusionMap","occlusionTexture","occlusionTextureSampler","occlusionTexCoordIndex","occlusionTexCoordMatrix","occlusionStrength","specularGlossnessMap","specularTexture","specularTextureSampler","specularTexCoordIndex","specularTexCoordMatrix","vertexTangent","useTangent","vertexNormal","PBRMetallicRoughnessMaterial","metallic","roughness","metallicMap","metallicRoughnessTexture","metallicRoughnessTextureSampler","metallicRoughnessTexCoordIndex","metallicRoughnessTexCoordMatrix","specularMap","specularColorMap","specularColorTexture","specularColorTextureSampler","specularColorTexCoordIndex","specularColorTexCoordMatrix","sheen","sheenColorFactor","sheenRoughnessFactor","sheenColorMap","sheenColorTexture","sheenColorTextureSampler","sheenColorTexCoordIndex","sheenColorTexCoordMatrix","sheenRoughnessMap","sheenRoughnessTexture","sheenRoughnessTextureSampler","sheenRoughnessTexCoordIndex","sheenRoughnessTexCoordMatrix","iridescence","iridescenceFactor","iridescenceIor","iridescenceMap","iridescenceTexture","iridescenceTextureSampler","iridescenceTexCoordIndex","iridescenceTexCoordMatrix","iridescenceThicknessMin","iridescenceThicknessMinimum","iridescenceThicknessMax","iridescenceThicknessMaximum","iridescenceThicknessMap","iridescenceThicknessTexture","iridescenceThicknessTextureSampler","iridescenceThicknessTexCoordIndex","iridescenceThicknessTexCoordMatrix","transmission","transmissionFactor","transmissionMap","transmissionTexture","transmissionTextureSampler","transmissionTexCoordIndex","transmissionTexCoordMatrix","thicknessFactor","thicknessMap","thicknessTexture","thicknessTextureSampler","thicknessTexCoordIndex","thicknessTexCoordMatrix","attenuationDistance","attenuationColor","clearcoat","cc","clearcoatIntensity","clearCoatFactor","clearcoatRoughnessFactor","clearCoatRoughnessFactor","clearCoatIntensityMap","clearcoatIntensityTexture","clearcoatIntensityTextureSampler","clearcoatIntensityTexCoordIndex","clearcoatIntensityTexCoordMatrix","clearCoatRoughnessMap","clearcoatRoughnessTexture","clearcoatRoughnessTextureSampler","clearcoatRoughnessTexCoordIndex","clearcoatRoughnessTexCoordMatrix","clearCoatNormalMap","clearcoatNormalTexture","clearcoatNormalTextureSampler","clearcoatNormalTexCoordIndex","clearcoatNormalTexCoordMatrix","device","numTargets","attributes","getOwnPropertyNames","targets","positionInfo","numVertices","getVertexFormatComponentCount","weightsAndOffsets","MAX_MORPH_ATTRIBUTES","textureSize","ceil","sqrt","getDeviceCaps","textureCaps","maxTextureSize","textureData","attrib","String","j","numComponents","morphBoundingBox","calculateMorphBoundingBox","subarray","meshAABB","minPoint","addBy","maxPoint","names","setMorphData","width","height","setMorphInfo","setMorphBoundingInfo","targetBoxes","originBox","setAnimatedBoundingBox","max","keyframeBoundingBox","setXYZ","keyframeBox"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.js","sources":["../../src/asset/model.ts"],"sourcesContent":["import type { TypedArray, Interpolator, Nullable, DeepPartial, VFS } from '@zephyr3d/base';\r\nimport {\r\n ASSERT,\r\n DRef,\r\n PathUtils,\r\n uint8ArrayToBase64,\r\n Vector4,\r\n Disposable,\r\n Matrix4x4,\r\n Quaternion,\r\n Vector3\r\n} from '@zephyr3d/base';\r\nimport type {\r\n PrimitiveType,\r\n Texture2D,\r\n TextureAddressMode,\r\n TextureFilterMode,\r\n TextureSampler,\r\n VertexAttribFormat,\r\n VertexSemantic\r\n} from '@zephyr3d/device';\r\nimport { getVertexFormatComponentCount } from '@zephyr3d/device';\r\nimport { Mesh } from '../scene/mesh';\r\nimport { BoundingBox } from '../utility/bounding_volume';\r\nimport type { ColliderR } from '../animation/joint_dynamics/types';\r\nimport type { ControllerConfig } from '../animation/joint_dynamics/controller';\r\nimport type { ResourceManager } from '../utility/serialization/manager';\r\nimport type { Scene } from '../scene/scene';\r\nimport {\r\n SceneNode,\r\n setSceneMeshAssetBinding,\r\n type SceneMorphTargetBinding,\r\n type SceneMorphTargetGroup\r\n} from '../scene/scene_node';\r\nimport type { HumanoidJointMapping } from '../animation/skeleton';\r\nimport { SkeletonRig, SkinBinding } from '../animation/skeleton';\r\nimport type { FixedGeometryCacheFrame } from '../animation/fixed_geometry_cache_track';\r\nimport type { PCAGeometryCacheTrackData } from '../animation';\r\nimport {\r\n FixedGeometryCacheTrack,\r\n createTransformAccess,\r\n JointDynamicsModifier,\r\n JointDynamicsSystem,\r\n MorphTargetTrack,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack,\r\n PCAGeometryCacheTrack\r\n} from '../animation';\r\nimport { MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS } from '../values';\r\nimport { getDevice } from '../app/api';\r\nimport { Primitive } from '../render/primitive';\r\nimport type { MeshMaterial } from '../material/meshmaterial';\r\nimport { UnlitMaterial } from '../material/unlit';\r\nimport { PBRSpecularGlossinessMaterial } from '../material/pbrsg';\r\nimport { PBRMetallicRoughnessMaterial } from '../material/pbrmr';\r\nimport { MToonMaterial, type MToonOutlineWidthMode } from '../material/mtoon';\r\n\r\ntype ReimportResourcePools = Map<string, Set<string>>;\r\n\r\n/**\r\n * Named object interface for model loading\r\n * @public\r\n */\r\nexport class NamedObject {\r\n name: string;\r\n /**\r\n * Creates an instance of NamedObject\r\n * @param name - Name of the object\r\n */\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n}\r\n\r\n/**\r\n * Texture sampler settings for model loading.\r\n * @public\r\n */\r\nexport interface AssetSamplerInfo {\r\n wrapS: TextureAddressMode;\r\n wrapT: TextureAddressMode;\r\n magFilter: TextureFilterMode;\r\n mipFilter: TextureFilterMode;\r\n minFilter: TextureFilterMode;\r\n}\r\n\r\n/**\r\n * Image payload information for model loading.\r\n * @public\r\n */\r\nexport interface AssetImageInfo {\r\n name?: string;\r\n uri?: string;\r\n data?: Uint8Array<ArrayBuffer>;\r\n mimeType?: string;\r\n}\r\n\r\n/**\r\n * Vertex buffer payload information for model loading.\r\n * @public\r\n */\r\nexport interface AssetVertexBufferInfo {\r\n attrib: VertexAttribFormat;\r\n data: TypedArray;\r\n}\r\n\r\n/**\r\n * Primitive geometry information for model loading.\r\n * @public\r\n */\r\nexport interface AssetPrimitiveInfo {\r\n name?: string;\r\n vertices: Record<VertexSemantic, { format: VertexAttribFormat; data: TypedArray }>;\r\n indices: Nullable<Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>>;\r\n indexCount: number;\r\n type: PrimitiveType;\r\n boxMin: Vector3;\r\n boxMax: Vector3;\r\n path?: string;\r\n}\r\n\r\n/**\r\n * Texture information for model loading\r\n * @public\r\n */\r\nexport interface AssetTextureInfo {\r\n name?: string;\r\n image: Nullable<AssetImageInfo>;\r\n sRGB?: boolean;\r\n sampler: Nullable<AssetSamplerInfo>;\r\n texCoord: number;\r\n transform: Nullable<Matrix4x4>;\r\n}\r\n\r\n/**\r\n * Resolved material texture information.\r\n * @public\r\n */\r\nexport interface MaterialTextureInfo {\r\n texture: Texture2D;\r\n sampler: TextureSampler;\r\n texCoord: number;\r\n transform: Matrix4x4;\r\n}\r\n\r\n/**\r\n * Common properties of material for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialCommon {\r\n vertexColor?: boolean;\r\n vertexNormal?: boolean;\r\n useTangent?: boolean;\r\n alphaMode?: 'blend' | 'mask';\r\n alphaCutoff?: number;\r\n doubleSided?: boolean;\r\n normalMap?: AssetTextureInfo;\r\n bumpScale?: number;\r\n emissiveMap?: AssetTextureInfo;\r\n emissiveColor?: Vector3;\r\n emissiveStrength?: number;\r\n occlusionMap?: AssetTextureInfo;\r\n occlusionStrength?: number;\r\n}\r\n\r\n/**\r\n * Base material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterial {\r\n name?: string;\r\n type: string;\r\n common: AssetMaterialCommon;\r\n path?: string;\r\n material?: DRef<MeshMaterial>;\r\n}\r\n\r\n/**\r\n * Unlit related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetUnlitMaterial extends AssetMaterial {\r\n diffuseMap?: AssetTextureInfo;\r\n diffuse?: Vector4;\r\n}\r\n\r\n/**\r\n * MToon related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMToonMaterial extends AssetUnlitMaterial {\r\n shadeColorFactor?: Vector3;\r\n shadeMultiplyMap?: AssetTextureInfo;\r\n shadingShiftFactor?: number;\r\n shadingShiftMap?: AssetTextureInfo;\r\n shadingShiftTextureScale?: number;\r\n shadingToonyFactor?: number;\r\n giEqualizationFactor?: number;\r\n matcapFactor?: Vector3;\r\n matcapMap?: AssetTextureInfo;\r\n parametricRimColorFactor?: Vector3;\r\n parametricRimFresnelPowerFactor?: number;\r\n parametricRimLiftFactor?: number;\r\n rimMultiplyMap?: AssetTextureInfo;\r\n rimLightingMixFactor?: number;\r\n outlineWidthMode?: MToonOutlineWidthMode;\r\n outlineWidthFactor?: number;\r\n outlineWidthMultiplyMap?: AssetTextureInfo;\r\n outlineColorFactor?: Vector3;\r\n outlineLightingMixFactor?: number;\r\n outlineUsesTangentNormals?: boolean;\r\n uvAnimationMaskMap?: AssetTextureInfo;\r\n uvAnimationScrollXSpeedFactor?: number;\r\n uvAnimationScrollYSpeedFactor?: number;\r\n uvAnimationRotationSpeedFactor?: number;\r\n transparentWithZWrite?: boolean;\r\n renderQueueOffsetNumber?: number;\r\n}\r\n\r\n/**\r\n * Sheen related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialSheen {\r\n sheenColorFactor?: Vector3;\r\n sheenColorMap?: AssetTextureInfo;\r\n sheenRoughnessFactor?: number;\r\n sheenRoughnessMap?: AssetTextureInfo;\r\n}\r\n\r\n/**\r\n * Clearcoat related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialClearcoat {\r\n clearCoatFactor?: number;\r\n clearCoatIntensityMap?: AssetTextureInfo;\r\n clearCoatRoughnessFactor?: number;\r\n clearCoatRoughnessMap?: AssetTextureInfo;\r\n clearCoatNormalMap?: AssetTextureInfo;\r\n}\r\n\r\n/**\r\n * Transmission related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialTransmission {\r\n transmissionFactor?: number;\r\n transmissionMap?: AssetTextureInfo;\r\n thicknessFactor?: number;\r\n thicknessMap?: AssetTextureInfo;\r\n attenuationColor?: Vector3;\r\n attenuationDistance?: number;\r\n}\r\n\r\n/**\r\n * Iridescence related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialIridescence {\r\n iridescenceFactor?: number;\r\n iridescenceMap?: AssetTextureInfo;\r\n iridescenceIor?: number;\r\n iridescenceThicknessMinimum?: number;\r\n iridescenceThicknessMaximum?: number;\r\n iridescenceThicknessMap?: AssetTextureInfo;\r\n}\r\n\r\n/**\r\n * PBR related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialCommon extends AssetUnlitMaterial {\r\n ior?: number;\r\n}\r\n\r\n/**\r\n * PBR of Metallic-Roughness workflow related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialMR extends AssetPBRMaterialCommon {\r\n metallic?: number;\r\n roughness?: number;\r\n metallicMap?: AssetTextureInfo;\r\n metallicIndex?: number;\r\n roughnessIndex?: number;\r\n specularMap?: AssetTextureInfo;\r\n specularColorMap?: AssetTextureInfo;\r\n specularFactor?: Vector4;\r\n sheen?: AssetMaterialSheen;\r\n clearcoat?: AssetMaterialClearcoat;\r\n transmission?: AssetMaterialTransmission;\r\n iridescence?: AssetMaterialIridescence;\r\n}\r\n\r\n/**\r\n * PBR of Specular-Glossness workfow related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialSG extends AssetPBRMaterialCommon {\r\n specular?: Vector3;\r\n glossness?: number;\r\n specularGlossnessMap?: AssetTextureInfo;\r\n}\r\n\r\n/**\r\n * Sub mesh data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetSubMeshData {\r\n primitive: Nullable<AssetPrimitiveInfo>;\r\n material: Nullable<AssetMaterial>;\r\n rawPositions: Nullable<Float32Array>;\r\n rawBlendIndices: Nullable<TypedArray>;\r\n rawJointWeights: Nullable<TypedArray>;\r\n name: string;\r\n numTargets: number;\r\n targets?: Partial<Record<number, { numComponents: number; data: Float32Array[] }>>;\r\n targetBox?: BoundingBox[];\r\n morphAttribCount?: number;\r\n}\r\n\r\n/**\r\n * Mesh data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetMeshData {\r\n morphWeights?: number[];\r\n morphNames?: string[];\r\n subMeshes: AssetSubMeshData[];\r\n}\r\n\r\n/**\r\n * Morph target binding in a model-level expression/group.\r\n * @public\r\n */\r\nexport interface AssetMorphTargetBinding {\r\n /** Restrict this binding to runtime meshes created from this asset node. */\r\n node?: AssetHierarchyNode;\r\n /** Restrict this binding to runtime meshes created from this asset mesh. */\r\n mesh?: AssetMeshData;\r\n /** Morph target index in the source mesh. */\r\n targetIndex?: number;\r\n /** Morph target name in the source mesh. */\r\n targetName?: string;\r\n /** Weight contributed by this binding when the group weight is 1. */\r\n weight: number;\r\n}\r\n\r\n/**\r\n * Model-level morph target group, commonly used as a complete facial expression.\r\n * @public\r\n */\r\nexport interface AssetMorphTargetGroup {\r\n name: string;\r\n bindings: AssetMorphTargetBinding[];\r\n isBinary?: boolean;\r\n}\r\n\r\n/**\r\n * Animation track interface for model loading\r\n * @public\r\n */\r\nexport interface AssetAnimationTrack {\r\n node: AssetHierarchyNode;\r\n type: 'translation' | 'scale' | 'rotation' | 'weights';\r\n interpolator: Interpolator;\r\n defaultMorphWeights?: number[];\r\n}\r\n\r\n/**\r\n * A single geometry cache frame.\r\n * @public\r\n */\r\nexport interface AssetGeometryCacheFrame {\r\n positions: Float32Array;\r\n normals?: Nullable<Float32Array>;\r\n boundingBox: BoundingBox;\r\n}\r\n\r\n/**\r\n * Fixed-vertex geometry cache animation track information.\r\n * @public\r\n */\r\nexport interface AssetFixedGeometryCacheAnimationTrack {\r\n node: AssetHierarchyNode;\r\n type: 'geometry-cache';\r\n codec?: 'fixed';\r\n subMeshIndex: number;\r\n times: Float32Array;\r\n frames: AssetGeometryCacheFrame[];\r\n}\r\n\r\n/**\r\n * PCA-compressed geometry cache animation track information.\r\n * @public\r\n */\r\nexport interface AssetPCAGeometryCacheAnimationTrack {\r\n node: AssetHierarchyNode;\r\n type: 'geometry-cache';\r\n codec: 'pca';\r\n subMeshIndex: number;\r\n times: Float32Array;\r\n bounds: [number, number, number, number, number, number][];\r\n positionReference?: Nullable<Float32Array>;\r\n positionMean: Float32Array;\r\n positionBases: Float32Array[];\r\n positionCoefficients: Float32Array[];\r\n normalMean?: Nullable<Float32Array>;\r\n normalBases?: Nullable<Float32Array[]>;\r\n normalCoefficients?: Nullable<Float32Array[]>;\r\n}\r\n\r\n/**\r\n * Geometry cache animation track information.\r\n * @public\r\n */\r\nexport type AssetGeometryCacheAnimationTrack =\r\n | AssetFixedGeometryCacheAnimationTrack\r\n | AssetPCAGeometryCacheAnimationTrack;\r\n\r\n/**\r\n * Animation data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetAnimationData {\r\n name: string;\r\n tracks: (AssetAnimationTrack | AssetGeometryCacheAnimationTrack)[];\r\n skeletons: AssetSkeleton[];\r\n nodes: AssetHierarchyNode[];\r\n}\r\n\r\n/**\r\n * Skeletal animation track interface for model loading\r\n * @public\r\n */\r\nexport interface AssetSkeletalAnimationTrack extends AssetAnimationTrack {\r\n skeleton: AssetSkeleton;\r\n keyFrames: Record<number, { translation: Vector3; rotation: Quaternion; scale: Vector3 }[]>;\r\n}\r\n\r\n/**\r\n * Rotation track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetRotationTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Quaternion[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Translation track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetTranslationTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Vector3[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Scale track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetScaleTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Vector3[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Heirarchical node interface for model loading\r\n * @public\r\n */\r\nexport class AssetHierarchyNode extends NamedObject {\r\n private _parent: Nullable<AssetHierarchyNode>;\r\n private _position: Vector3;\r\n private _rotation: Quaternion;\r\n private _scaling: Vector3;\r\n private _mesh: Nullable<AssetMeshData>;\r\n private _skeleton: Nullable<AssetSkeleton>;\r\n private _attachToSkeleton: Nullable<Set<AssetSkeleton>>;\r\n private _matrix: Nullable<Matrix4x4>;\r\n private _worldMatrix: Nullable<Matrix4x4>;\r\n private _weights: Nullable<number[]>;\r\n private readonly _children: AssetHierarchyNode[];\r\n private readonly _instances: { t: Vector3; s: Vector3; r: Quaternion }[];\r\n /**\r\n * Creates an instance of AssetHierarchyNode\r\n * @param name - Name of the node\r\n * @param parent - Parent of the node\r\n */\r\n constructor(name: string, model: SharedModel, parent?: AssetHierarchyNode) {\r\n super(name);\r\n model.nodes.push(this);\r\n this._parent = null;\r\n this._position = Vector3.zero();\r\n this._rotation = Quaternion.identity();\r\n this._scaling = Vector3.one();\r\n this._children = [];\r\n this._mesh = null;\r\n this._skeleton = null;\r\n this._attachToSkeleton = null;\r\n this._matrix = null;\r\n this._weights = null;\r\n this._worldMatrix = null;\r\n this._instances = [];\r\n parent?.addChild(this);\r\n }\r\n /** Parent of the node */\r\n get parent(): Nullable<AssetHierarchyNode> {\r\n return this._parent;\r\n }\r\n /** Local transformation matrix of the node */\r\n get matrix() {\r\n return this._matrix;\r\n }\r\n /** World transformation matrix of the node */\r\n get worldMatrix() {\r\n return this._worldMatrix;\r\n }\r\n /** Mesh data of the node, or null if this is not a mesh node */\r\n get mesh() {\r\n return this._mesh;\r\n }\r\n set mesh(data) {\r\n this._mesh = data;\r\n }\r\n /** instances */\r\n get instances() {\r\n return this._instances;\r\n }\r\n /** Default morph target weights */\r\n get weights() {\r\n return this._weights;\r\n }\r\n set weights(val) {\r\n this._weights = val;\r\n }\r\n /** The skeleton used to control the node */\r\n get skeleton() {\r\n return this._skeleton;\r\n }\r\n set skeleton(skeleton) {\r\n this._skeleton = skeleton;\r\n }\r\n /** The translation of the node */\r\n get position(): Vector3 {\r\n return this._position;\r\n }\r\n set position(val: Vector3) {\r\n this._position = val;\r\n }\r\n /** The rotation of the node */\r\n get rotation(): Quaternion {\r\n return this._rotation;\r\n }\r\n set rotation(val: Quaternion) {\r\n this._rotation = val;\r\n }\r\n /** The scale of the node */\r\n get scaling(): Vector3 {\r\n return this._scaling;\r\n }\r\n set scaling(val: Vector3) {\r\n this._scaling = val;\r\n }\r\n /** Children of the node */\r\n get children(): AssetHierarchyNode[] {\r\n return this._children;\r\n }\r\n /** The skeleton to which the node belongs if this is a joint node */\r\n get skeletonAttached() {\r\n return this._attachToSkeleton;\r\n }\r\n isParentOf(child: Nullable<AssetHierarchyNode>) {\r\n while (child && child !== this) {\r\n child = child.parent!;\r\n }\r\n return child === this;\r\n }\r\n getWorldPosition() {\r\n return new Vector3(this.worldMatrix!.m03, this.worldMatrix!.m13, this.worldMatrix!.m23);\r\n }\r\n computeTransforms(parentTransform: Nullable<Matrix4x4>) {\r\n this._matrix = Matrix4x4.scaling(this._scaling).rotateLeft(this._rotation).translateLeft(this._position);\r\n this._worldMatrix = parentTransform\r\n ? Matrix4x4.multiply(parentTransform, this._matrix)\r\n : new Matrix4x4(this._matrix);\r\n for (const child of this._children) {\r\n child.computeTransforms(this._worldMatrix);\r\n }\r\n }\r\n /**\r\n * Adds a child to this node\r\n * @param child - The child node to be added\r\n */\r\n addChild(child: AssetHierarchyNode) {\r\n if (!child || child.parent) {\r\n throw new Error('AssetHierarchyNode.addChild(): invalid child node');\r\n }\r\n this._children.push(child);\r\n child._parent = this;\r\n }\r\n /**\r\n * Removes a child of this node\r\n * @param child - The child node to be removed\r\n */\r\n removeChild(child: AssetHierarchyNode) {\r\n const index = this._children.indexOf(child);\r\n if (index < 0) {\r\n throw new Error('AssetHierarchyNode.removeChild(): invalid child node');\r\n }\r\n this._children[index]._parent = null;\r\n this._children.splice(index, 1);\r\n }\r\n /**\r\n * Attach this node to a skeleton\r\n * @param skeleton - The skeleton to which to node will attach\r\n * @param index - The joint index\r\n */\r\n attachToSkeleton(skeleton: AssetSkeleton) {\r\n if (!this._attachToSkeleton) {\r\n this._attachToSkeleton = new Set();\r\n }\r\n this._attachToSkeleton.add(skeleton);\r\n }\r\n}\r\n\r\n/**\r\n * Skeleton information for model loading\r\n * @public\r\n */\r\nexport class AssetSkeleton extends NamedObject {\r\n /** The pivot node */\r\n pivot: Nullable<AssetHierarchyNode>;\r\n /** Joints of the skeleton */\r\n joints: AssetHierarchyNode[];\r\n /** Inverse of the binding matrices of the joints */\r\n inverseBindMatrices: Matrix4x4[];\r\n /** Binding pose matrices of the joints */\r\n bindPose: { position: Vector3; rotation: Quaternion; scale: Vector3 }[];\r\n /** Explicit humanoid joint mapping, when supplied by the source asset. */\r\n humanoidJointMapping: Nullable<HumanoidJointMapping<AssetHierarchyNode>>;\r\n /**\r\n * Creates an instance of AssetSkeleton\r\n * @param name - Name of the skeleton\r\n */\r\n constructor(name: string) {\r\n super(name);\r\n this.name = name;\r\n this.pivot = null;\r\n this.joints = [];\r\n this.inverseBindMatrices = [];\r\n this.bindPose = [];\r\n this.humanoidJointMapping = null;\r\n }\r\n /**\r\n * Adds a joint to the skeleton\r\n * @param joint - The joint node\r\n * @param inverseBindMatrix - Inverse binding matrix of the joint\r\n */\r\n addJoint(joint: AssetHierarchyNode, inverseBindMatrix: Matrix4x4) {\r\n joint.attachToSkeleton(this);\r\n this.joints.push(joint);\r\n this.inverseBindMatrices.push(inverseBindMatrix);\r\n this.bindPose.push({\r\n position: joint.position.clone(),\r\n rotation: joint.rotation.clone(),\r\n scale: joint.scaling.clone()\r\n });\r\n }\r\n get root() {\r\n if (this.pivot) {\r\n return this.pivot;\r\n }\r\n let root = this.joints[0];\r\n for (let i = 1; i < this.joints.length; i++) {\r\n while (root && !root.isParentOf(this.joints[i])) {\r\n root = root.parent!;\r\n }\r\n }\r\n return root;\r\n }\r\n}\r\n\r\n/**\r\n * Scene for model loading\r\n * @public\r\n */\r\nexport class AssetScene extends NamedObject {\r\n /** Root nodes of the scene */\r\n rootNodes: AssetHierarchyNode[];\r\n /**\r\n * Creates an instance of AssetScene\r\n * @param name - Name of the scene\r\n */\r\n constructor(name: string) {\r\n super(name);\r\n this.rootNodes = [];\r\n }\r\n}\r\n\r\n/**\r\n * Spring bone collider shape information.\r\n * @public\r\n */\r\nexport type AssetSpringBoneColliderShape =\r\n | {\r\n type: 'sphere';\r\n offset: Vector3;\r\n radius: number;\r\n inside?: boolean;\r\n }\r\n | {\r\n type: 'capsule';\r\n offset: Vector3;\r\n tail: Vector3;\r\n radius: number;\r\n inside?: boolean;\r\n }\r\n | {\r\n type: 'plane';\r\n offset: Vector3;\r\n normal: Vector3;\r\n };\r\n\r\n/**\r\n * Spring bone collider information.\r\n * @public\r\n */\r\nexport interface AssetSpringBoneCollider {\r\n name?: string;\r\n node: AssetHierarchyNode;\r\n shape: AssetSpringBoneColliderShape;\r\n}\r\n\r\n/**\r\n * Spring bone collider group information.\r\n * @public\r\n */\r\nexport interface AssetSpringBoneColliderGroup {\r\n name?: string;\r\n colliders: AssetSpringBoneCollider[];\r\n}\r\n\r\n/**\r\n * Spring bone joint information.\r\n * @public\r\n */\r\nexport interface AssetSpringBoneJoint {\r\n node: AssetHierarchyNode;\r\n hitRadius: number;\r\n stiffness: number;\r\n gravityPower: number;\r\n gravityDir: Vector3;\r\n dragForce: number;\r\n}\r\n\r\n/**\r\n * Spring bone chain information.\r\n * @public\r\n */\r\nexport interface AssetSpringBone {\r\n name?: string;\r\n center?: AssetHierarchyNode;\r\n joints: AssetSpringBoneJoint[];\r\n rootBones?: AssetHierarchyNode[];\r\n colliderGroups: AssetSpringBoneColliderGroup[];\r\n}\r\n\r\n/**\r\n * Joint dynamics collider information.\r\n * @public\r\n */\r\nexport interface AssetJointDynamicsCollider {\r\n name?: string;\r\n node: AssetHierarchyNode;\r\n localPosition: Vector3;\r\n localRotation: Quaternion;\r\n collider: ColliderR;\r\n}\r\n\r\n/**\r\n * Joint dynamics chain information.\r\n * @public\r\n */\r\nexport interface AssetJointDynamicsChain {\r\n start: AssetHierarchyNode;\r\n end: AssetHierarchyNode;\r\n}\r\n\r\n/**\r\n * Joint dynamics flat plane information.\r\n * @public\r\n */\r\nexport interface AssetJointDynamicsFlatPlane {\r\n node: AssetHierarchyNode;\r\n position: Vector3;\r\n up: Vector3;\r\n}\r\n\r\n/**\r\n * Joint dynamics spring bone information.\r\n * @public\r\n */\r\nexport interface AssetJointDynamicsSpringBone {\r\n name?: string;\r\n center?: AssetHierarchyNode;\r\n chains: AssetJointDynamicsChain[];\r\n controllerConfig: DeepPartial<ControllerConfig, 2>;\r\n colliders: AssetJointDynamicsCollider[];\r\n flatPlanes: AssetJointDynamicsFlatPlane[];\r\n}\r\n\r\n/**\r\n * Options controlling which model resources are persisted.\r\n * @public\r\n */\r\nexport type SaveOptions = {\r\n importMeshes: boolean;\r\n importSkeletons: boolean;\r\n importAnimations: boolean;\r\n rebuildMaterial?: boolean;\r\n};\r\n\r\ntype PreprocessOptions = {\r\n rebuildMaterial?: boolean;\r\n};\r\n\r\ntype SharedModelWithPreprocessOptions = SharedModel & {\r\n _preprocessOptions?: PreprocessOptions;\r\n};\r\n\r\n/**\r\n * Model information that can be shared by multiple model nodes\r\n * @public\r\n */\r\nexport class SharedModel extends Disposable {\r\n /** @internal */\r\n private _nodes: AssetHierarchyNode[];\r\n /** @internal */\r\n private _skeletons: AssetSkeleton[];\r\n /** @internal */\r\n private _animations: AssetAnimationData[];\r\n /** @internal */\r\n private _scenes: AssetScene[];\r\n /** @internal */\r\n private _activeScene: number;\r\n /** @internal */\r\n private _imageList: AssetImageInfo[];\r\n /** @internal */\r\n private _primitiveList: AssetPrimitiveInfo[];\r\n /** @internal */\r\n private _materialList: Record<string, AssetMaterial>;\r\n /** @internal */\r\n private _springBoneColliders: AssetSpringBoneCollider[];\r\n /** @internal */\r\n private _springBoneColliderGroups: AssetSpringBoneColliderGroup[];\r\n /** @internal */\r\n private _springBones: AssetSpringBone[];\r\n /** @internal */\r\n private _jointDynamicsColliders: AssetJointDynamicsCollider[];\r\n /** @internal */\r\n private _jointDynamicsSpringBones: AssetJointDynamicsSpringBone[];\r\n /** @internal */\r\n private _morphTargetGroups: AssetMorphTargetGroup[];\r\n /** @internal */\r\n private _textureMap: Map<AssetTextureInfo, DRef<Texture2D>>;\r\n /** @internal */\r\n private _primitiveMap: Map<AssetPrimitiveInfo, DRef<Primitive>>;\r\n\r\n /**\r\n * Creates an instance of SharedModel\r\n */\r\n constructor() {\r\n super();\r\n this._nodes = [];\r\n this._skeletons = [];\r\n this._scenes = [];\r\n this._animations = [];\r\n this._imageList = [];\r\n this._primitiveList = [];\r\n this._materialList = {};\r\n this._springBoneColliders = [];\r\n this._springBoneColliderGroups = [];\r\n this._springBones = [];\r\n this._jointDynamicsColliders = [];\r\n this._jointDynamicsSpringBones = [];\r\n this._morphTargetGroups = [];\r\n this._activeScene = -1;\r\n this._textureMap = new Map();\r\n this._primitiveMap = new Map();\r\n }\r\n /** All scenes that the model contains */\r\n get scenes(): AssetScene[] {\r\n return this._scenes;\r\n }\r\n /** All Primitives that the model contains */\r\n get primitives(): AssetPrimitiveInfo[] {\r\n return this._primitiveList;\r\n }\r\n /** All nodes that the model contains */\r\n get nodes(): AssetHierarchyNode[] {\r\n return this._nodes;\r\n }\r\n /** All animations that the model contains */\r\n get animations(): AssetAnimationData[] {\r\n return this._animations;\r\n }\r\n /** All skeletons that the model contains */\r\n get skeletons(): AssetSkeleton[] {\r\n return this._skeletons;\r\n }\r\n /** All SpringBone colliders that the model contains */\r\n get springBoneColliders(): AssetSpringBoneCollider[] {\r\n return this._springBoneColliders;\r\n }\r\n /** All SpringBone collider groups that the model contains */\r\n get springBoneColliderGroups(): AssetSpringBoneColliderGroup[] {\r\n return this._springBoneColliderGroups;\r\n }\r\n /** All SpringBone springs that the model contains */\r\n get springBones(): AssetSpringBone[] {\r\n return this._springBones;\r\n }\r\n /** SpringBone colliders converted to Zephyr3D JointDynamics collider format */\r\n get jointDynamicsColliders(): AssetJointDynamicsCollider[] {\r\n return this._jointDynamicsColliders;\r\n }\r\n /** SpringBone springs converted to Zephyr3D JointDynamics system format */\r\n get jointDynamicsSpringBones(): AssetJointDynamicsSpringBone[] {\r\n return this._jointDynamicsSpringBones;\r\n }\r\n /** Model-level morph target groups, commonly facial expressions. */\r\n get morphTargetGroups(): AssetMorphTargetGroup[] {\r\n return this._morphTargetGroups;\r\n }\r\n /** The active scene of the model */\r\n get activeScene(): number {\r\n return this._activeScene;\r\n }\r\n set activeScene(val: number) {\r\n this._activeScene = val;\r\n }\r\n getImage(index: number) {\r\n return this._imageList[index];\r\n }\r\n setImage(index: number, img: AssetImageInfo) {\r\n this._imageList[index] = img;\r\n }\r\n getMaterial(hash: string) {\r\n return this._materialList[hash];\r\n }\r\n setMaterial(hash: string, material: AssetMaterial) {\r\n this._materialList[hash] = material;\r\n }\r\n addPrimitive(prim: AssetPrimitiveInfo) {\r\n this._primitiveList.push(prim);\r\n }\r\n private sanitizeResourceName(name: string, fallback: string) {\r\n let normalized = (name ?? '').trim();\r\n if (!normalized) {\r\n normalized = fallback;\r\n }\r\n normalized = normalized.replace(/[<>:\"/\\\\|?*\\u0000-\\u001f]/g, '_');\r\n normalized = normalized.replace(/\\s+/g, ' ').trim();\r\n normalized = normalized.replace(/[. ]+$/g, '');\r\n return normalized || fallback;\r\n }\r\n private getReimportPoolKey(baseName: string, ext: string) {\r\n return `${ext.toLowerCase()}|${baseName}`;\r\n }\r\n private getResourceBasename(path: string, ext: string) {\r\n return path ? PathUtils.basename(path, ext || PathUtils.extname(path)) : '';\r\n }\r\n private getResourceNumericSuffix(baseName: string, candidateBaseName: string) {\r\n if (candidateBaseName === baseName) {\r\n return 0;\r\n }\r\n const match = new RegExp(`^${baseName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}_([0-9]+)$`).exec(\r\n candidateBaseName\r\n );\r\n return match ? Number.parseInt(match[1], 10) : Number.MAX_SAFE_INTEGER;\r\n }\r\n private registerReusableResourcePath(pools: ReimportResourcePools, path: string) {\r\n const ext = PathUtils.extname(path).toLowerCase();\r\n const baseName = this.getResourceBasename(path, ext);\r\n const register = (keyBaseName: string) => {\r\n const key = this.getReimportPoolKey(keyBaseName, ext);\r\n let candidates = pools.get(key);\r\n if (!candidates) {\r\n candidates = new Set<string>();\r\n pools.set(key, candidates);\r\n }\r\n candidates.add(path);\r\n };\r\n register(baseName);\r\n const strippedBaseName = baseName.replace(/_[0-9]+$/u, '');\r\n if (strippedBaseName && strippedBaseName !== baseName) {\r\n register(strippedBaseName);\r\n }\r\n }\r\n private collectReferencedAssetPaths(\r\n value: unknown,\r\n destPath: string,\r\n extensions: Set<string>,\r\n out: Set<string>\r\n ) {\r\n if (typeof value === 'string') {\r\n const normalizedPath = PathUtils.normalize(value);\r\n const ext = PathUtils.extname(normalizedPath).toLowerCase();\r\n const normalizedDestPath = PathUtils.normalize(destPath);\r\n if (\r\n extensions.has(ext) &&\r\n (normalizedPath === normalizedDestPath ||\r\n normalizedPath.startsWith(\r\n normalizedDestPath.endsWith('/') ? normalizedDestPath : `${normalizedDestPath}/`\r\n ))\r\n ) {\r\n out.add(normalizedPath);\r\n }\r\n return;\r\n }\r\n if (Array.isArray(value)) {\r\n for (const item of value) {\r\n this.collectReferencedAssetPaths(item, destPath, extensions, out);\r\n }\r\n return;\r\n }\r\n if (value && typeof value === 'object') {\r\n for (const item of Object.values(value)) {\r\n this.collectReferencedAssetPaths(item, destPath, extensions, out);\r\n }\r\n }\r\n }\r\n private async collectReferencedAssetPathsFromJsonFile(\r\n destVFS: VFS,\r\n jsonPath: string,\r\n destPath: string,\r\n extensions: Set<string>\r\n ) {\r\n if (!(await destVFS.exists(jsonPath))) {\r\n return new Set<string>();\r\n }\r\n try {\r\n const content = (await destVFS.readFile(jsonPath, { encoding: 'utf8' })) as string;\r\n const json = JSON.parse(content) as unknown;\r\n const out = new Set<string>();\r\n this.collectReferencedAssetPaths(json, destPath, extensions, out);\r\n return out;\r\n } catch (err) {\r\n console.warn(`Read existing import manifest failed: ${jsonPath}: ${err}`);\r\n return new Set<string>();\r\n }\r\n }\r\n private async createReimportResourcePools(destVFS: VFS, destPath: string, prefabPath: string) {\r\n const pools: ReimportResourcePools = new Map();\r\n if (!(await destVFS.exists(prefabPath))) {\r\n return pools;\r\n }\r\n const materialAndMeshPaths = await this.collectReferencedAssetPathsFromJsonFile(\r\n destVFS,\r\n prefabPath,\r\n destPath,\r\n new Set(['.zmtl', '.zmsh'])\r\n );\r\n for (const path of materialAndMeshPaths) {\r\n this.registerReusableResourcePath(pools, path);\r\n }\r\n const materialPaths = Array.from(materialAndMeshPaths).filter(\r\n (path) => PathUtils.extname(path).toLowerCase() === '.zmtl'\r\n );\r\n const imageExtensions = new Set(['.jpg', '.jpeg', '.png', '.webp', '.tga', '.hdr', '.ktx', '.ktx2']);\r\n for (const materialPath of materialPaths) {\r\n const texturePaths = await this.collectReferencedAssetPathsFromJsonFile(\r\n destVFS,\r\n materialPath,\r\n destPath,\r\n imageExtensions\r\n );\r\n for (const texturePath of texturePaths) {\r\n this.registerReusableResourcePath(pools, texturePath);\r\n }\r\n }\r\n return pools;\r\n }\r\n private consumeReusableResourcePath(\r\n pools: ReimportResourcePools,\r\n baseName: string,\r\n ext: string,\r\n usedPaths: Set<string>\r\n ) {\r\n const candidates = pools.get(this.getReimportPoolKey(baseName, ext));\r\n if (!candidates || candidates.size === 0) {\r\n return null;\r\n }\r\n const sorted = Array.from(candidates)\r\n .filter((path) => !usedPaths.has(path))\r\n .sort((a, b) => {\r\n const aSuffix = this.getResourceNumericSuffix(baseName, this.getResourceBasename(a, ext));\r\n const bSuffix = this.getResourceNumericSuffix(baseName, this.getResourceBasename(b, ext));\r\n if (aSuffix !== bSuffix) {\r\n return aSuffix - bSuffix;\r\n }\r\n return a.localeCompare(b);\r\n });\r\n const selected = sorted[0] ?? null;\r\n if (selected) {\r\n usedPaths.add(selected);\r\n }\r\n return selected;\r\n }\r\n private async createUniqueResourcePath(\r\n destVFS: VFS,\r\n destPath: string,\r\n baseName: string,\r\n ext: string,\r\n usedPaths: Set<string>,\r\n fallback: string\r\n ) {\r\n const sanitizedBase = this.sanitizeResourceName(baseName, fallback);\r\n for (let suffix = 0; ; suffix++) {\r\n const candidateName = suffix > 0 ? `${sanitizedBase}_${suffix}` : sanitizedBase;\r\n const candidatePath = destVFS.join(destPath, `${candidateName}${ext}`);\r\n if (!usedPaths.has(candidatePath) && !(await destVFS.exists(candidatePath))) {\r\n usedPaths.add(candidatePath);\r\n return candidatePath;\r\n }\r\n }\r\n }\r\n private async tryReuseExactResourcePath(\r\n destVFS: VFS,\r\n destPath: string,\r\n baseName: string,\r\n ext: string,\r\n usedPaths: Set<string>,\r\n fallback: string\r\n ) {\r\n const sanitizedBase = this.sanitizeResourceName(baseName, fallback);\r\n const candidatePath = destVFS.join(destPath, `${sanitizedBase}${ext}`);\r\n if (!usedPaths.has(candidatePath) && (await destVFS.exists(candidatePath))) {\r\n usedPaths.add(candidatePath);\r\n return candidatePath;\r\n }\r\n return null;\r\n }\r\n private collapseCompositeTextureName(name: string) {\r\n const normalized = (name ?? '').trim();\r\n if (!normalized) {\r\n return normalized;\r\n }\r\n const separatorIndex = normalized.indexOf('-');\r\n if (separatorIndex <= 0 || separatorIndex >= normalized.length - 1) {\r\n return normalized;\r\n }\r\n const left = normalized.slice(0, separatorIndex).trim();\r\n const right = normalized.slice(separatorIndex + 1).trim();\r\n if (!left || !right) {\r\n return normalized;\r\n }\r\n const leftParts = left.split('_');\r\n const rightParts = right.split('_');\r\n let prefixLength = 0;\r\n while (\r\n prefixLength < leftParts.length - 1 &&\r\n prefixLength < rightParts.length - 1 &&\r\n leftParts[prefixLength] === rightParts[prefixLength]\r\n ) {\r\n prefixLength++;\r\n }\r\n if (prefixLength <= 0) {\r\n return normalized;\r\n }\r\n const prefix = leftParts.slice(0, prefixLength).join('_');\r\n const leftSuffix = leftParts.slice(prefixLength).join('_');\r\n const rightSuffix = rightParts.slice(prefixLength).join('_');\r\n if (!leftSuffix || !rightSuffix) {\r\n return normalized;\r\n }\r\n return `${prefix}_${leftSuffix}-${rightSuffix}`;\r\n }\r\n private getImageBaseName(img: AssetImageInfo, index: number, fallback: string) {\r\n if (img?.name?.trim()) {\r\n return this.collapseCompositeTextureName(img.name);\r\n }\r\n if (img?.uri) {\r\n return this.collapseCompositeTextureName(PathUtils.basename(img.uri, PathUtils.extname(img.uri)));\r\n }\r\n return `${fallback}_texture_${index}`;\r\n }\r\n private getMaterialBaseName(material: AssetMaterial, key: string, fallback: string) {\r\n return material?.name?.trim() || `${fallback}_material_${key}`;\r\n }\r\n private getPrimitiveBaseName(info: AssetPrimitiveInfo, index: number, fallback: string) {\r\n return info?.name?.trim() || `${fallback}_mesh_${index}`;\r\n }\r\n /**\r\n * Adds a model-level morph target group.\r\n * @param group - Morph target group to add\r\n */\r\n addMorphTargetGroup(group: AssetMorphTargetGroup) {\r\n if (group?.name && group.bindings?.length > 0) {\r\n this._morphTargetGroups.push(group);\r\n }\r\n }\r\n /**\r\n * Removes all model-level morph target groups.\r\n */\r\n clearMorphTargetGroups() {\r\n this._morphTargetGroups = [];\r\n }\r\n /**\r\n * Finds a model-level morph target group by name.\r\n * @param name - Group name\r\n * @returns The matching group, or null if not found\r\n */\r\n getMorphTargetGroup(name: string): Nullable<AssetMorphTargetGroup> {\r\n return this._morphTargetGroups.find((group) => group.name === name) ?? null;\r\n }\r\n /**\r\n * Builds morph target groups by collecting morph target names from every mesh.\r\n * @returns Generated morph target groups\r\n */\r\n buildMorphTargetGroupsByName(): AssetMorphTargetGroup[] {\r\n this.clearMorphTargetGroups();\r\n const groups = new Map<string, AssetMorphTargetGroup>();\r\n const meshes = new Set<AssetMeshData>();\r\n for (const node of this._nodes) {\r\n if (node.mesh) {\r\n meshes.add(node.mesh);\r\n }\r\n }\r\n for (const mesh of meshes) {\r\n const count = getAssetMeshMorphTargetCount(mesh);\r\n for (let i = 0; i < count; i++) {\r\n const targetName = getAssetMeshMorphTargetName(mesh, i);\r\n let group = groups.get(targetName);\r\n if (!group) {\r\n group = { name: targetName, bindings: [] };\r\n groups.set(targetName, group);\r\n }\r\n group.bindings.push({\r\n mesh,\r\n targetIndex: i,\r\n targetName,\r\n weight: 1\r\n });\r\n }\r\n }\r\n this._morphTargetGroups = Array.from(groups.values());\r\n return this._morphTargetGroups;\r\n }\r\n /**\r\n * Adds a skeleton to the scene\r\n * @param skeleton - The skeleton to be added\r\n */\r\n addSkeleton(skeleton: AssetSkeleton) {\r\n this._skeletons.push(skeleton);\r\n }\r\n /**\r\n * Adds an animation to the scene\r\n * @param animation - The animation to be added\r\n */\r\n addAnimation(animation: AssetAnimationData) {\r\n this._animations.push(animation);\r\n }\r\n static async writePrimitive(vfs: VFS, primitive: AssetPrimitiveInfo, path: string) {\r\n const data = {\r\n vertices: {} as Record<VertexSemantic, { format: VertexAttribFormat; data: string }>,\r\n indices: primitive.indices\r\n ? uint8ArrayToBase64(\r\n new Uint8Array(\r\n primitive.indices.buffer,\r\n primitive.indices.byteOffset,\r\n primitive.indices.byteLength\r\n )\r\n )\r\n : null,\r\n indexType: primitive.indices ? (primitive.indices instanceof Uint16Array ? 'u16' : 'u32') : '',\r\n indexCount: primitive.indexCount,\r\n type: primitive.type,\r\n boxMin: [primitive.boxMin.x, primitive.boxMin.y, primitive.boxMin.z],\r\n boxMax: [primitive.boxMax.x, primitive.boxMax.y, primitive.boxMax.z]\r\n };\r\n for (const k in primitive.vertices) {\r\n const v = primitive.vertices[k as VertexSemantic];\r\n data.vertices[k as VertexSemantic] = {\r\n format: v.format,\r\n data: uint8ArrayToBase64(new Uint8Array(v.data.buffer, v.data.byteOffset, v.data.byteLength))\r\n };\r\n }\r\n const content = JSON.stringify({ type: 'Primitive', data }, null, 2);\r\n await vfs.writeFile(path, content, { encoding: 'utf8', create: true });\r\n }\r\n /** preprocess */\r\n async preprocess(\r\n manager: ResourceManager,\r\n name: string,\r\n destPath: string,\r\n srcVFS: VFS,\r\n dstVFS: VFS\r\n ): Promise<void> {\r\n const destName = name;\r\n const usedPaths = new Set<string>();\r\n const rebuildMaterial =\r\n (this as SharedModelWithPreprocessOptions)._preprocessOptions?.rebuildMaterial ?? true;\r\n const prefabName = name.endsWith('.zprefab') ? name : `${name}.zprefab`;\r\n const prefabPath = dstVFS.join(destPath, prefabName);\r\n const reusableResourcePools = await this.createReimportResourcePools(dstVFS, destPath, prefabPath);\r\n if (this._imageList.length > 0) {\r\n console.info(`Importing ${this._imageList.length} textures`);\r\n for (let i = 0; i < this._imageList.length; i++) {\r\n const img = this._imageList[i];\r\n if (!img) {\r\n continue;\r\n }\r\n let ext: string = '';\r\n const mimeType = img.uri ? srcVFS.guessMIMEType(img.uri) : img.data ? img.mimeType : '';\r\n if (mimeType === 'image/jpeg') {\r\n ext = '.jpg';\r\n } else if (mimeType === 'image/png') {\r\n ext = '.png';\r\n } else if (mimeType === 'image/webp') {\r\n ext = '.webp';\r\n } else if (mimeType === 'image/tga') {\r\n ext = '.tga';\r\n } else if (mimeType === 'image/vnd.radiance') {\r\n ext = '.hdr';\r\n } else if (mimeType === 'image/ktx') {\r\n ext = '.ktx';\r\n } else if (mimeType === 'image/ktx2') {\r\n ext = '.ktx2';\r\n } else {\r\n continue;\r\n }\r\n ASSERT(!!ext, `Unknown image mime type: ${mimeType}`);\r\n const baseName = this.sanitizeResourceName(\r\n this.getImageBaseName(img, i, destName),\r\n `${destName}_texture_${i}`\r\n );\r\n const path =\r\n (await this.tryReuseExactResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n ext,\r\n usedPaths,\r\n `${destName}_texture_${i}`\r\n )) ??\r\n this.consumeReusableResourcePath(reusableResourcePools, baseName, ext, usedPaths) ??\r\n (await this.createUniqueResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n ext,\r\n usedPaths,\r\n `${destName}_texture_${i}`\r\n ));\r\n if (img.uri) {\r\n img.data = new Uint8Array((await srcVFS.readFile(img.uri, { encoding: 'binary' })) as ArrayBuffer);\r\n }\r\n await dstVFS.writeFile(\r\n path,\r\n img.data!.buffer.slice(img.data!.byteOffset, img.data!.byteOffset + img.data!.byteLength),\r\n { encoding: 'binary', create: true }\r\n );\r\n img.uri = path;\r\n img.data = undefined;\r\n img.mimeType = '';\r\n }\r\n }\r\n const materialKeys = Object.keys(this._materialList);\r\n if (materialKeys.length > 0) {\r\n console.info(`Importing ${materialKeys.length} materials`);\r\n for (const k of materialKeys) {\r\n const material = this._materialList[k];\r\n const baseName = this.sanitizeResourceName(\r\n this.getMaterialBaseName(material, k, destName),\r\n `${destName}_material_${k}`\r\n );\r\n const path =\r\n (await this.tryReuseExactResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n '.zmtl',\r\n usedPaths,\r\n `${destName}_material_${k}`\r\n )) ??\r\n this.consumeReusableResourcePath(reusableResourcePools, baseName, '.zmtl', usedPaths) ??\r\n (await this.createUniqueResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n '.zmtl',\r\n usedPaths,\r\n `${destName}_material_${k}`\r\n ));\r\n if (!rebuildMaterial && (await dstVFS.exists(path))) {\r\n material.path = path;\r\n continue;\r\n }\r\n material.path = '';\r\n const m = await this.createMaterial(manager, material, dstVFS);\r\n material.path = path;\r\n const data = await manager.serializeObject(m);\r\n const content = JSON.stringify({ type: 'Default', data }, null, 2);\r\n await dstVFS.writeFile(path, content, { encoding: 'utf8', create: true });\r\n m!.dispose();\r\n }\r\n }\r\n if (this._primitiveList.length > 0) {\r\n console.info(`Importing ${this._primitiveList.length} meshes`);\r\n for (let i = 0; i < this._primitiveList.length; i++) {\r\n const info = this._primitiveList[i];\r\n if (!info) {\r\n continue;\r\n }\r\n const baseName = this.sanitizeResourceName(\r\n this.getPrimitiveBaseName(info, i, destName),\r\n `${destName}_mesh_${i}`\r\n );\r\n const path =\r\n (await this.tryReuseExactResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n '.zmsh',\r\n usedPaths,\r\n `${destName}_mesh_${i}`\r\n )) ??\r\n this.consumeReusableResourcePath(reusableResourcePools, baseName, '.zmsh', usedPaths) ??\r\n (await this.createUniqueResourcePath(\r\n dstVFS,\r\n destPath,\r\n baseName,\r\n '.zmsh',\r\n usedPaths,\r\n `${destName}_mesh_${i}`\r\n ));\r\n await SharedModel.writePrimitive(dstVFS, info, path);\r\n info.path = path;\r\n }\r\n }\r\n }\r\n createJointDynamics(rootNode: SceneNode, nodeMap: Map<AssetHierarchyNode, SceneNode>) {\r\n if (rootNode.animationSet.rigs.length === 0) {\r\n return;\r\n }\r\n for (const jd of this._jointDynamicsSpringBones) {\r\n const chains = jd.chains\r\n .map((chain) => {\r\n const start = nodeMap.get(chain.start)!;\r\n const end = nodeMap.get(chain.end)!;\r\n return { start, end };\r\n })\r\n .filter((chain) => {\r\n if (!chain.start || !chain.end) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n const rigs = rootNode.animationSet.rigs.filter((ref) => {\r\n const joints = ref.get()!.joints;\r\n return chains.every((chain) => joints.includes(chain.start));\r\n });\r\n if (rigs.length === 0) {\r\n continue;\r\n }\r\n const colliders = jd.colliders\r\n .map((collider) => {\r\n const parent = nodeMap.get(collider.node);\r\n if (!parent) {\r\n return null;\r\n }\r\n const node = new SceneNode(parent.scene);\r\n node.name = collider.name ? `${collider.name}_JointDynamicsCollider` : 'JointDynamicsCollider';\r\n node.parent = parent;\r\n node.position.set(collider.localPosition);\r\n node.rotation.set(collider.localRotation);\r\n return {\r\n r: { ...collider.collider },\r\n transform: createTransformAccess(node)\r\n };\r\n })\r\n .filter(\r\n (collider): collider is { r: ColliderR; transform: ReturnType<typeof createTransformAccess> } => {\r\n return !!collider;\r\n }\r\n );\r\n const flatPlanes = jd.flatPlanes\r\n .map((flatPlane) => {\r\n const node = nodeMap.get(flatPlane.node);\r\n if (!node) {\r\n return null;\r\n }\r\n const up = node.worldMatrix.transformVectorAffine(flatPlane.up, new Vector3());\r\n if (up.magnitudeSq === 0) {\r\n return null;\r\n }\r\n return {\r\n up: up.inplaceNormalize(),\r\n position: node.worldMatrix.transformPointAffine(flatPlane.position, new Vector3())\r\n };\r\n })\r\n .filter((flatPlane): flatPlane is { up: Vector3; position: Vector3 } => {\r\n return !!flatPlane;\r\n });\r\n for (const rig of rigs) {\r\n const system = new JointDynamicsSystem(\r\n {\r\n chainConfig: {\r\n chains,\r\n systemRoot: rootNode\r\n },\r\n controllerConfig: jd.controllerConfig\r\n },\r\n colliders,\r\n [],\r\n flatPlanes\r\n );\r\n const modifier = new JointDynamicsModifier(system);\r\n rig.get()!.modifiers.push(modifier);\r\n }\r\n }\r\n }\r\n private createMorphTargetGroups(rootNode: SceneNode, meshMap: Map<AssetSubMeshData, Mesh>) {\r\n const runtimeGroups: SceneMorphTargetGroup[] = [];\r\n for (const group of this._morphTargetGroups) {\r\n const bindings: SceneMorphTargetBinding[] = [];\r\n for (const binding of group.bindings) {\r\n const assetMesh = binding.node?.mesh ?? binding.mesh ?? null;\r\n if (!assetMesh) {\r\n continue;\r\n }\r\n for (const subMesh of assetMesh.subMeshes) {\r\n const mesh = meshMap.get(subMesh);\r\n if (mesh) {\r\n bindings.push({\r\n mesh,\r\n targetIndex: binding.targetIndex,\r\n targetName: binding.targetName,\r\n weight: binding.weight\r\n });\r\n }\r\n }\r\n }\r\n if (bindings.length > 0) {\r\n runtimeGroups.push({\r\n name: group.name,\r\n bindings,\r\n isBinary: group.isBinary,\r\n weight: this.getInitialMorphTargetGroupWeight(bindings, group.isBinary)\r\n });\r\n }\r\n }\r\n rootNode.morphTargetGroups = runtimeGroups;\r\n }\r\n private getInitialMorphTargetGroupWeight(bindings: SceneMorphTargetBinding[], isBinary?: boolean): number {\r\n let result = 0;\r\n let found = false;\r\n for (const binding of bindings) {\r\n if (!binding.weight) {\r\n continue;\r\n }\r\n const targetWeight = this.getMorphTargetBindingWeight(binding);\r\n if (targetWeight === null) {\r\n continue;\r\n }\r\n const groupWeight = targetWeight / binding.weight;\r\n if (!found || Math.abs(groupWeight) > Math.abs(result)) {\r\n result = groupWeight;\r\n found = true;\r\n }\r\n }\r\n return isBinary ? (result > 0.5 ? 1 : 0) : result;\r\n }\r\n private getMorphTargetBindingWeight(binding: SceneMorphTargetBinding): Nullable<number> {\r\n const targetIndex = binding.targetIndex;\r\n if (\r\n typeof targetIndex === 'number' &&\r\n targetIndex >= 0 &&\r\n targetIndex < binding.mesh.getNumMorphTargets()\r\n ) {\r\n const targetName = binding.mesh.getMorphTargetName(targetIndex);\r\n if (targetName) {\r\n return binding.mesh.getMorphWeight(targetName);\r\n }\r\n }\r\n if (binding.targetName) {\r\n return binding.mesh.getMorphWeight(binding.targetName);\r\n }\r\n return null;\r\n }\r\n private remapHumanoidJointMapping(\r\n mapping: Nullable<HumanoidJointMapping<AssetHierarchyNode>>,\r\n nodeMap: Map<AssetHierarchyNode, SceneNode>\r\n ): Nullable<HumanoidJointMapping<SceneNode>> {\r\n if (!mapping) {\r\n return null;\r\n }\r\n const remap = <T extends string>(\r\n source: Record<T, AssetHierarchyNode> | undefined\r\n ): Record<T, SceneNode> | undefined => {\r\n if (!source) {\r\n return undefined;\r\n }\r\n const result = {} as Partial<Record<T, SceneNode>>;\r\n for (const key of Object.keys(source) as T[]) {\r\n const node = nodeMap.get(source[key]);\r\n if (node) {\r\n result[key] = node;\r\n }\r\n }\r\n return Object.keys(result).length > 0 ? (result as Record<T, SceneNode>) : undefined;\r\n };\r\n const body = remap(mapping.body);\r\n return body\r\n ? {\r\n body,\r\n leftHand: remap(mapping.leftHand),\r\n rightHand: remap(mapping.rightHand)\r\n }\r\n : null;\r\n }\r\n async createSceneNode(\r\n manager: ResourceManager,\r\n scene: Scene,\r\n instancing: boolean,\r\n saveMeshes: boolean,\r\n saveSkeletons: boolean,\r\n saveAnimations: boolean,\r\n saveJointDynamics: boolean,\r\n srcVFS: VFS\r\n ): Promise<SceneNode> {\r\n const group = new SceneNode(scene);\r\n const nodeMap: Map<AssetHierarchyNode, SceneNode> = new Map();\r\n const meshMap: Map<AssetSubMeshData, Mesh> = new Map();\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n const assetScene = this.scenes[i];\r\n const skeletonMeshMap: Map<\r\n AssetSkeleton,\r\n { mesh: Mesh[]; bounding: AssetSubMeshData[]; binding?: SkinBinding }\r\n > = new Map();\r\n for (let k = 0; k < assetScene.rootNodes.length; k++) {\r\n await this.setAssetNodeToSceneNode(\r\n manager,\r\n scene,\r\n group,\r\n assetScene.rootNodes[k],\r\n skeletonMeshMap,\r\n nodeMap,\r\n meshMap,\r\n instancing,\r\n saveMeshes,\r\n saveSkeletons,\r\n saveAnimations,\r\n srcVFS\r\n );\r\n }\r\n if (saveSkeletons) {\r\n for (const sk of this.skeletons) {\r\n if (!skeletonMeshMap.has(sk)) {\r\n skeletonMeshMap.set(sk, {\r\n mesh: [],\r\n bounding: []\r\n });\r\n }\r\n }\r\n const rigMap = new Map<string, SkeletonRig>();\r\n for (const v of skeletonMeshMap) {\r\n const sk = v[0];\r\n const joints = sk.joints.map((val) => {\r\n const node = nodeMap.get(val)!;\r\n node.jointTypeT = 'static';\r\n node.jointTypeS = 'static';\r\n node.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = sk.root ? (nodeMap.get(sk.root) ?? null) : null;\r\n const rigKey = SkeletonRig.getRigKey(joints, rootJoint);\r\n let rig = rigMap.get(rigKey);\r\n if (!rig) {\r\n const humanoidJointMapping = this.remapHumanoidJointMapping(sk.humanoidJointMapping, nodeMap);\r\n rig = new SkeletonRig(\r\n joints,\r\n sk.bindPose,\r\n humanoidJointMapping ? { rootJoint, humanoidJointMapping } : { rootJoint }\r\n );\r\n rigMap.set(rigKey, rig);\r\n group.animationSet.rigs.push(new DRef(rig));\r\n }\r\n const binding = new SkinBinding(rig, sk.inverseBindMatrices, joints);\r\n const nodes = skeletonMeshMap.get(sk);\r\n if (nodes) {\r\n if (!nodes.binding) {\r\n nodes.binding = binding;\r\n for (let i = 0; i < nodes.mesh.length; i++) {\r\n const mesh = nodes.mesh[i];\r\n const v = {\r\n positions: nodes.bounding[i].rawPositions!,\r\n blendIndices: nodes.bounding[i].rawBlendIndices!,\r\n weights: nodes.bounding[i].rawJointWeights!\r\n };\r\n mesh.setSkinnedBoundingInfo(nodes.binding.getBoundingInfo(v));\r\n mesh.skeletonName = nodes.binding.persistentId;\r\n }\r\n }\r\n }\r\n group.animationSet.skeletons.push(new DRef(nodes!.binding));\r\n }\r\n }\r\n if (saveAnimations) {\r\n for (const animationData of this.animations) {\r\n if (animationData.skeletons.length > 0 && !saveSkeletons) {\r\n continue;\r\n }\r\n let name = animationData.name ?? `_embbeded_animation`;\r\n if (group.animationSet.getAnimationClip(name)) {\r\n const baseName = name;\r\n for (let t = 1; ; t++) {\r\n name = `${baseName}_${t}`;\r\n if (!group.animationSet.getAnimationClip(name)) {\r\n break;\r\n }\r\n }\r\n }\r\n const animation = group.animationSet.createAnimation(name, true)!;\r\n for (const sk of animationData.skeletons) {\r\n const nodes = skeletonMeshMap.get(sk);\r\n if (nodes) {\r\n animation.addSkeleton(nodes.binding!.rig.persistentId);\r\n }\r\n }\r\n for (const track of animationData.tracks) {\r\n const target = nodeMap.get(track.node)!;\r\n if (track.type === 'translation') {\r\n animation.addTrack(target, new NodeTranslationTrack(track.interpolator, true));\r\n target.jointTypeT = 'animated';\r\n } else if (track.type === 'scale') {\r\n animation.addTrack(target, new NodeScaleTrack(track.interpolator, true));\r\n target.jointTypeS = 'animated';\r\n } else if (track.type === 'rotation') {\r\n animation.addTrack(target, new NodeRotationTrack(track.interpolator, true));\r\n target.jointTypeR = 'animated';\r\n } else if (track.type === 'weights') {\r\n for (const m of track.node.mesh!.subMeshes) {\r\n const mesh = meshMap.get(m)!;\r\n if (track.interpolator.stride > MAX_MORPH_TARGETS) {\r\n console.error(\r\n `Morph target too large: ${track.interpolator.stride}, the maximum is ${MAX_MORPH_TARGETS}`\r\n );\r\n } else {\r\n const morphTrack = new MorphTargetTrack(\r\n track.interpolator,\r\n track.defaultMorphWeights,\r\n m.targetBox,\r\n mesh.getBoundingVolume()!.toAABB(),\r\n true\r\n );\r\n animation.addTrack(mesh, morphTrack);\r\n }\r\n }\r\n } else if (track.type === 'geometry-cache') {\r\n const subMesh = track.node.mesh?.subMeshes[track.subMeshIndex];\r\n const mesh = subMesh ? meshMap.get(subMesh) : null;\r\n if (!subMesh || !mesh) {\r\n console.error(`Invalid geometry cache sub mesh: ${track.subMeshIndex}`);\r\n } else {\r\n if (track.codec === 'pca') {\r\n const pcaData = this.remapPCAGeometryCacheData(subMesh, track);\r\n animation.addTrack(mesh, new PCAGeometryCacheTrack(pcaData, true));\r\n } else {\r\n const frames = this.remapGeometryCacheFrames(subMesh, track.frames);\r\n animation.addTrack(mesh, new FixedGeometryCacheTrack(track.times, frames, true));\r\n }\r\n }\r\n } else {\r\n console.error(`Invalid animation track type: ${track.type}`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (saveJointDynamics && saveSkeletons) {\r\n this.createJointDynamics(group, nodeMap);\r\n }\r\n this.createMorphTargetGroups(group, meshMap);\r\n return group;\r\n }\r\n\r\n private remapGeometryCacheFrames(subMesh: AssetSubMeshData, frames: FixedGeometryCacheFrame[]) {\r\n if (!subMesh.rawPositions || frames.length === 0) {\r\n return frames;\r\n }\r\n const sourcePositions = frames[0].positions;\r\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return frames;\r\n }\r\n const remap = this.buildGeometryCacheRemap(subMesh.rawPositions, sourcePositions);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return frames;\r\n }\r\n return frames.map((frame) => ({\r\n positions: this.expandGeometryCacheData(frame.positions, remap),\r\n normals:\r\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\r\n ? this.expandGeometryCacheData(frame.normals, remap)\r\n : null,\r\n boundingBox: frame.boundingBox\r\n }));\r\n }\r\n\r\n private remapPCAGeometryCacheData(\r\n subMesh: AssetSubMeshData,\r\n track: AssetPCAGeometryCacheAnimationTrack\r\n ): PCAGeometryCacheTrackData {\r\n const remapReference = track.positionReference ?? this.reconstructPCAGeometryCacheReference(track);\r\n if (!subMesh.rawPositions || remapReference.length === 0) {\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: track.positionReference ?? null,\r\n positionMean: track.positionMean,\r\n positionBases: track.positionBases,\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean: track.normalMean ?? null,\r\n normalBases: track.normalBases ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n }\r\n const sourceVertexCount = (remapReference.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: track.positionReference ?? null,\r\n positionMean: track.positionMean,\r\n positionBases: track.positionBases,\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean: track.normalMean ?? null,\r\n normalBases: track.normalBases ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n }\r\n const remap = this.buildGeometryCacheRemap(subMesh.rawPositions, remapReference);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: track.positionReference ?? null,\r\n positionMean: track.positionMean,\r\n positionBases: track.positionBases,\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean: track.normalMean ?? null,\r\n normalBases: track.normalBases ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n }\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: this.expandGeometryCacheData(remapReference, remap),\r\n positionMean: this.expandGeometryCacheData(track.positionMean, remap),\r\n positionBases: track.positionBases.map((basis) => this.expandGeometryCacheData(basis, remap)),\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean:\r\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\r\n ? this.expandGeometryCacheData(track.normalMean, remap)\r\n : null,\r\n normalBases:\r\n track.normalBases?.map((basis) =>\r\n (basis.length / 3) >> 0 === sourceVertexCount ? this.expandGeometryCacheData(basis, remap) : basis\r\n ) ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n }\r\n\r\n private reconstructPCAGeometryCacheReference(track: AssetPCAGeometryCacheAnimationTrack) {\r\n const reference = new Float32Array(track.positionMean);\r\n const coefficients = track.positionCoefficients[0];\r\n if (!coefficients) {\r\n return reference;\r\n }\r\n const componentCount = Math.min(track.positionBases.length, coefficients.length);\r\n for (let component = 0; component < componentCount; component++) {\r\n const basis = track.positionBases[component];\r\n const coefficient = coefficients[component];\r\n if (!basis || coefficient === 0) {\r\n continue;\r\n }\r\n const count = Math.min(reference.length, basis.length);\r\n for (let i = 0; i < count; i++) {\r\n reference[i] += basis[i] * coefficient;\r\n }\r\n }\r\n return reference;\r\n }\r\n\r\n private buildGeometryCacheRemap(targetPositions: Float32Array, sourcePositions: Float32Array) {\r\n const sourceCount = (sourcePositions.length / 3) >> 0;\r\n const targetCount = (targetPositions.length / 3) >> 0;\r\n const buckets = new Map<string, number[]>();\r\n for (let i = 0; i < sourceCount; i++) {\r\n const key = this.geometryCachePositionKey(\r\n sourcePositions[i * 3],\r\n sourcePositions[i * 3 + 1],\r\n sourcePositions[i * 3 + 2]\r\n );\r\n const bucket = buckets.get(key);\r\n if (bucket) {\r\n bucket.push(i);\r\n } else {\r\n buckets.set(key, [i]);\r\n }\r\n }\r\n const remap = new Uint32Array(targetCount);\r\n for (let i = 0; i < targetCount; i++) {\r\n const x = targetPositions[i * 3];\r\n const y = targetPositions[i * 3 + 1];\r\n const z = targetPositions[i * 3 + 2];\r\n let sourceIndex = this.findGeometryCacheSourceIndex(sourcePositions, buckets, x, y, z);\r\n if (sourceIndex < 0) {\r\n sourceIndex = this.findNearestGeometryCacheSourceIndex(sourcePositions, x, y, z);\r\n }\r\n if (sourceIndex < 0) {\r\n return null;\r\n }\r\n remap[i] = sourceIndex;\r\n }\r\n return remap;\r\n }\r\n\r\n private expandGeometryCacheData(source: Float32Array, remap: Uint32Array) {\r\n const expanded = new Float32Array(remap.length * 3);\r\n for (let i = 0; i < remap.length; i++) {\r\n const sourceOffset = remap[i] * 3;\r\n const targetOffset = i * 3;\r\n expanded[targetOffset] = source[sourceOffset];\r\n expanded[targetOffset + 1] = source[sourceOffset + 1];\r\n expanded[targetOffset + 2] = source[sourceOffset + 2];\r\n }\r\n return expanded;\r\n }\r\n\r\n private findGeometryCacheSourceIndex(\r\n sourcePositions: Float32Array,\r\n buckets: Map<string, number[]>,\r\n x: number,\r\n y: number,\r\n z: number\r\n ) {\r\n const bucket = buckets.get(this.geometryCachePositionKey(x, y, z));\r\n if (!bucket) {\r\n return -1;\r\n }\r\n const epsilon = 1e-5;\r\n for (const index of bucket) {\r\n const offset = index * 3;\r\n if (\r\n Math.abs(sourcePositions[offset] - x) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 1] - y) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 2] - z) <= epsilon\r\n ) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n private findNearestGeometryCacheSourceIndex(\r\n sourcePositions: Float32Array,\r\n x: number,\r\n y: number,\r\n z: number\r\n ) {\r\n const epsilonSquared = 1e-8;\r\n let bestIndex = -1;\r\n let bestDistance = Number.POSITIVE_INFINITY;\r\n for (let i = 0; i < sourcePositions.length; i += 3) {\r\n const dx = sourcePositions[i] - x;\r\n const dy = sourcePositions[i + 1] - y;\r\n const dz = sourcePositions[i + 2] - z;\r\n const distance = dx * dx + dy * dy + dz * dz;\r\n if (distance < bestDistance) {\r\n bestDistance = distance;\r\n bestIndex = i / 3;\r\n }\r\n }\r\n return bestDistance <= epsilonSquared ? bestIndex : -1;\r\n }\r\n\r\n private geometryCachePositionKey(x: number, y: number, z: number) {\r\n return `${Math.round(x * 100000)}|${Math.round(y * 100000)}|${Math.round(z * 100000)}`;\r\n }\r\n\r\n protected onDispose() {\r\n super.onDispose();\r\n for (const prim of this._primitiveMap.values()) {\r\n prim.dispose();\r\n }\r\n for (const tex of this._textureMap.values()) {\r\n tex.dispose();\r\n }\r\n this._skeletons = [];\r\n this._scenes = [];\r\n this._animations = [];\r\n }\r\n private async setAssetNodeToSceneNode(\r\n manager: ResourceManager,\r\n scene: Scene,\r\n parent: SceneNode,\r\n assetNode: AssetHierarchyNode,\r\n skeletonMeshMap: Map<AssetSkeleton, { mesh: Mesh[]; bounding: AssetSubMeshData[] }>,\r\n nodeMap: Map<AssetHierarchyNode, SceneNode>,\r\n meshMap: Map<AssetSubMeshData, Mesh>,\r\n instancing: boolean,\r\n saveMeshes: boolean,\r\n saveSkeletons: boolean,\r\n saveAnimations: boolean,\r\n srcVFS: VFS\r\n ) {\r\n const node: SceneNode = new SceneNode(scene);\r\n nodeMap.set(assetNode, node);\r\n node.name = assetNode.name ?? '';\r\n node.position.set(assetNode.position);\r\n node.rotation.set(assetNode.rotation);\r\n node.scale.set(assetNode.scaling);\r\n if (saveMeshes && assetNode.mesh) {\r\n const meshData = assetNode.mesh;\r\n const skeleton = saveSkeletons ? assetNode.skeleton : null;\r\n for (const subMesh of meshData.subMeshes) {\r\n if (assetNode.instances.length === 0) {\r\n assetNode.instances.push({ t: Vector3.zero(), s: Vector3.one(), r: Quaternion.identity() });\r\n }\r\n for (const instance of assetNode.instances) {\r\n const meshNode = new Mesh(scene);\r\n meshNode.position = instance.t;\r\n meshNode.scale = instance.s;\r\n meshNode.rotation = instance.r;\r\n meshNode.name = subMesh.name;\r\n meshNode.clipTestEnabled = true;\r\n meshNode.showState = 'inherit';\r\n if (!this._primitiveMap.get(subMesh.primitive!)) {\r\n this._primitiveMap.set(\r\n subMesh.primitive!,\r\n new DRef((await this.createPrimitive(manager, subMesh.primitive!, srcVFS)) ?? undefined)\r\n );\r\n }\r\n meshNode.primitive = this._primitiveMap.get(subMesh.primitive!)!.get()!;\r\n if (!subMesh.material!.material) {\r\n subMesh.material!.material = new DRef(\r\n (await this.createMaterial(manager, subMesh.material!, srcVFS)) ?? undefined\r\n );\r\n }\r\n meshNode.material = subMesh.material!.material?.get() ?? null;\r\n if (instancing) {\r\n meshNode.material = meshNode.material!.createInstance();\r\n }\r\n meshNode.parent = node;\r\n meshMap.set(subMesh, meshNode);\r\n setSceneMeshAssetBinding(meshNode, { node: assetNode, mesh: meshData, subMesh });\r\n processMorphData(\r\n subMesh,\r\n meshNode,\r\n assetNode.weights ?? meshData.morphWeights,\r\n meshData.morphNames\r\n );\r\n if (skeleton) {\r\n if (!skeletonMeshMap.has(skeleton)) {\r\n skeletonMeshMap.set(skeleton, { mesh: [meshNode], bounding: [subMesh] });\r\n } else {\r\n skeletonMeshMap.get(skeleton)!.mesh.push(meshNode);\r\n skeletonMeshMap.get(skeleton)!.bounding.push(subMesh);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n node.parent = parent;\r\n for (const child of assetNode.children) {\r\n await this.setAssetNodeToSceneNode(\r\n manager,\r\n scene,\r\n node,\r\n child,\r\n skeletonMeshMap,\r\n nodeMap,\r\n meshMap,\r\n instancing,\r\n saveMeshes,\r\n saveSkeletons,\r\n saveAnimations,\r\n srcVFS\r\n );\r\n }\r\n return node;\r\n }\r\n private async image2Texture(\r\n manager: ResourceManager,\r\n info: AssetTextureInfo,\r\n srcVFS: VFS\r\n ): Promise<Nullable<Texture2D>> {\r\n if (info.image!.uri) {\r\n const texture = await manager.fetchTexture<Texture2D>(info.image!.uri, {\r\n linearColorSpace: !info.sRGB,\r\n overrideVFS: srcVFS\r\n });\r\n texture.name = info.image!.uri;\r\n return texture;\r\n } else if (info.image!.data && info.image!.mimeType) {\r\n const texture = await manager.loadTextureFromBuffer<Texture2D>(\r\n info.image!.data,\r\n info.image!.mimeType,\r\n !!info.sRGB\r\n );\r\n return texture;\r\n }\r\n return null;\r\n }\r\n private async createTexture(\r\n manager: ResourceManager,\r\n info: AssetTextureInfo,\r\n srcVFS: VFS\r\n ): Promise<Nullable<MaterialTextureInfo>> {\r\n try {\r\n let textureRef = this._textureMap.get(info);\r\n if (!textureRef) {\r\n textureRef = new DRef(await this.image2Texture(manager, info, srcVFS));\r\n this._textureMap.set(info, textureRef);\r\n }\r\n const sampler = getDevice().createSampler({\r\n addressU: info.sampler!.wrapS,\r\n addressV: info.sampler!.wrapT,\r\n magFilter: info.sampler!.magFilter,\r\n minFilter: info.sampler!.minFilter,\r\n mipFilter: info.sampler!.mipFilter\r\n });\r\n const transform = info.transform!;\r\n const texCoord = info.texCoord;\r\n return {\r\n texture: textureRef.get()!,\r\n sampler,\r\n texCoord,\r\n transform\r\n };\r\n } catch (err) {\r\n console.error(`Load asset texture failed: ${err}`);\r\n return null;\r\n }\r\n }\r\n\r\n private async createPrimitive(\r\n manager: ResourceManager,\r\n info: AssetPrimitiveInfo,\r\n srcVFS: VFS\r\n ): Promise<Nullable<Primitive>> {\r\n if (info.path) {\r\n return manager.fetchPrimitive(info.path, { overrideVFS: srcVFS });\r\n }\r\n const primitive = new Primitive();\r\n for (const k in info.vertices) {\r\n const v = info.vertices[k as VertexSemantic];\r\n primitive.createAndSetVertexBuffer(v.format, v.data);\r\n }\r\n if (info.indices) {\r\n primitive.createAndSetIndexBuffer(info.indices);\r\n }\r\n primitive.primitiveType = info.type;\r\n primitive.indexCount = info.indexCount;\r\n primitive.setBoundingVolume(new BoundingBox(info.boxMin, info.boxMax));\r\n return primitive;\r\n }\r\n private async createMaterial(\r\n manager: ResourceManager,\r\n assetMaterial: AssetMaterial,\r\n srcVFS: VFS\r\n ): Promise<Nullable<MeshMaterial>> {\r\n if (assetMaterial.path) {\r\n return manager.fetchMaterial<MeshMaterial>(assetMaterial.path, { overrideVFS: srcVFS });\r\n }\r\n const infoMap: Map<AssetTextureInfo, Nullable<MaterialTextureInfo>> = new Map();\r\n const that = this;\r\n async function getTextureInfo(info: AssetTextureInfo): Promise<Nullable<MaterialTextureInfo>> {\r\n let t = infoMap.get(info);\r\n if (t === undefined) {\r\n t = await that.createTexture(manager, info, srcVFS);\r\n infoMap.set(info, t);\r\n }\r\n return t;\r\n }\r\n async function setMaterialTexture(\r\n material: Record<string, unknown>,\r\n propertyPrefix: string,\r\n textureInfo?: AssetTextureInfo\r\n ): Promise<void> {\r\n if (!textureInfo) {\r\n return;\r\n }\r\n const info = await getTextureInfo(textureInfo);\r\n if (info) {\r\n material[`${propertyPrefix}Texture`] = info.texture;\r\n material[`${propertyPrefix}TextureSampler`] = info.sampler;\r\n material[`${propertyPrefix}TexCoordIndex`] = info.texCoord;\r\n material[`${propertyPrefix}TexCoordMatrix`] = info.transform;\r\n }\r\n }\r\n if (assetMaterial.type === 'unlit') {\r\n const unlitAssetMaterial = assetMaterial as AssetUnlitMaterial;\r\n const unlitMaterial = new UnlitMaterial();\r\n unlitMaterial.albedoColor = unlitAssetMaterial.diffuse ?? Vector4.one();\r\n if (unlitAssetMaterial.diffuseMap) {\r\n const info = await getTextureInfo(unlitAssetMaterial.diffuseMap);\r\n if (info) {\r\n unlitMaterial.albedoTexture = info.texture;\r\n unlitMaterial.albedoTextureSampler = info.sampler;\r\n unlitMaterial.albedoTexCoordIndex = info.texCoord;\r\n unlitMaterial.albedoTexCoordMatrix = info.transform;\r\n }\r\n }\r\n unlitMaterial.vertexColor = unlitAssetMaterial.common.vertexColor!;\r\n if (assetMaterial.common.alphaMode === 'blend') {\r\n unlitMaterial.blendMode = 'blend';\r\n } else if (assetMaterial.common.alphaMode === 'mask') {\r\n unlitMaterial.alphaCutoff = assetMaterial.common.alphaCutoff!;\r\n }\r\n if (assetMaterial.common.doubleSided) {\r\n unlitMaterial.cullMode = 'none';\r\n }\r\n return unlitMaterial;\r\n } else if (assetMaterial.type === 'mtoon') {\r\n const mtoonAssetMaterial = assetMaterial as AssetMToonMaterial;\r\n const mtoonMaterial = new MToonMaterial();\r\n const mtoonTextureTarget = mtoonMaterial as unknown as Record<string, unknown>;\r\n mtoonMaterial.albedoColor = mtoonAssetMaterial.diffuse ?? Vector4.one();\r\n await setMaterialTexture(mtoonTextureTarget, 'albedo', mtoonAssetMaterial.diffuseMap);\r\n await setMaterialTexture(mtoonTextureTarget, 'normal', mtoonAssetMaterial.common.normalMap);\r\n mtoonMaterial.normalScale = mtoonAssetMaterial.common.bumpScale ?? 1;\r\n await setMaterialTexture(mtoonTextureTarget, 'emissive', mtoonAssetMaterial.common.emissiveMap);\r\n mtoonMaterial.emissiveColor = mtoonAssetMaterial.common.emissiveColor ?? Vector3.zero();\r\n mtoonMaterial.emissiveStrength = mtoonAssetMaterial.common.emissiveStrength ?? 1;\r\n if (mtoonAssetMaterial.shadeColorFactor) {\r\n mtoonMaterial.shadeColorFactor = mtoonAssetMaterial.shadeColorFactor;\r\n }\r\n await setMaterialTexture(mtoonTextureTarget, 'shadeMultiply', mtoonAssetMaterial.shadeMultiplyMap);\r\n if (mtoonAssetMaterial.shadingShiftFactor !== undefined) {\r\n mtoonMaterial.shadingShiftFactor = mtoonAssetMaterial.shadingShiftFactor;\r\n }\r\n await setMaterialTexture(mtoonTextureTarget, 'shadingShift', mtoonAssetMaterial.shadingShiftMap);\r\n if (mtoonAssetMaterial.shadingShiftTextureScale !== undefined) {\r\n mtoonMaterial.shadingShiftTextureScale = mtoonAssetMaterial.shadingShiftTextureScale;\r\n }\r\n if (mtoonAssetMaterial.shadingToonyFactor !== undefined) {\r\n mtoonMaterial.shadingToonyFactor = mtoonAssetMaterial.shadingToonyFactor;\r\n }\r\n if (mtoonAssetMaterial.giEqualizationFactor !== undefined) {\r\n mtoonMaterial.giEqualizationFactor = mtoonAssetMaterial.giEqualizationFactor;\r\n }\r\n if (mtoonAssetMaterial.matcapFactor) {\r\n mtoonMaterial.matcapFactor = mtoonAssetMaterial.matcapFactor;\r\n }\r\n await setMaterialTexture(mtoonTextureTarget, 'matcap', mtoonAssetMaterial.matcapMap);\r\n if (mtoonAssetMaterial.parametricRimColorFactor) {\r\n mtoonMaterial.parametricRimColorFactor = mtoonAssetMaterial.parametricRimColorFactor;\r\n }\r\n if (mtoonAssetMaterial.parametricRimFresnelPowerFactor !== undefined) {\r\n mtoonMaterial.parametricRimFresnelPowerFactor = mtoonAssetMaterial.parametricRimFresnelPowerFactor;\r\n }\r\n if (mtoonAssetMaterial.parametricRimLiftFactor !== undefined) {\r\n mtoonMaterial.parametricRimLiftFactor = mtoonAssetMaterial.parametricRimLiftFactor;\r\n }\r\n await setMaterialTexture(mtoonTextureTarget, 'rimMultiply', mtoonAssetMaterial.rimMultiplyMap);\r\n if (mtoonAssetMaterial.rimLightingMixFactor !== undefined) {\r\n mtoonMaterial.rimLightingMixFactor = mtoonAssetMaterial.rimLightingMixFactor;\r\n }\r\n if (mtoonAssetMaterial.outlineWidthMode !== undefined) {\r\n mtoonMaterial.outlineWidthMode = mtoonAssetMaterial.outlineWidthMode;\r\n }\r\n if (mtoonAssetMaterial.outlineWidthFactor !== undefined) {\r\n mtoonMaterial.outlineWidthFactor = mtoonAssetMaterial.outlineWidthFactor;\r\n }\r\n await setMaterialTexture(\r\n mtoonTextureTarget,\r\n 'outlineWidthMultiply',\r\n mtoonAssetMaterial.outlineWidthMultiplyMap\r\n );\r\n if (mtoonAssetMaterial.outlineColorFactor) {\r\n mtoonMaterial.outlineColorFactor = mtoonAssetMaterial.outlineColorFactor;\r\n }\r\n if (mtoonAssetMaterial.outlineLightingMixFactor !== undefined) {\r\n mtoonMaterial.outlineLightingMixFactor = mtoonAssetMaterial.outlineLightingMixFactor;\r\n }\r\n if (mtoonAssetMaterial.outlineUsesTangentNormals !== undefined) {\r\n mtoonMaterial.outlineUsesTangentNormals = mtoonAssetMaterial.outlineUsesTangentNormals;\r\n }\r\n await setMaterialTexture(mtoonTextureTarget, 'uvAnimationMask', mtoonAssetMaterial.uvAnimationMaskMap);\r\n if (mtoonAssetMaterial.uvAnimationScrollXSpeedFactor !== undefined) {\r\n mtoonMaterial.uvAnimationScrollXSpeedFactor = mtoonAssetMaterial.uvAnimationScrollXSpeedFactor;\r\n }\r\n if (mtoonAssetMaterial.uvAnimationScrollYSpeedFactor !== undefined) {\r\n mtoonMaterial.uvAnimationScrollYSpeedFactor = mtoonAssetMaterial.uvAnimationScrollYSpeedFactor;\r\n }\r\n if (mtoonAssetMaterial.uvAnimationRotationSpeedFactor !== undefined) {\r\n mtoonMaterial.uvAnimationRotationSpeedFactor = mtoonAssetMaterial.uvAnimationRotationSpeedFactor;\r\n }\r\n if (mtoonAssetMaterial.transparentWithZWrite !== undefined) {\r\n mtoonMaterial.transparentWithZWrite = mtoonAssetMaterial.transparentWithZWrite;\r\n }\r\n if (mtoonAssetMaterial.renderQueueOffsetNumber !== undefined) {\r\n mtoonMaterial.renderQueueOffsetNumber = mtoonAssetMaterial.renderQueueOffsetNumber;\r\n }\r\n if (mtoonAssetMaterial.common.alphaMode === 'blend') {\r\n mtoonMaterial.blendMode = 'blend';\r\n } else if (mtoonAssetMaterial.common.alphaMode === 'mask') {\r\n mtoonMaterial.alphaCutoff = mtoonAssetMaterial.common.alphaCutoff!;\r\n }\r\n if (mtoonAssetMaterial.common.doubleSided) {\r\n mtoonMaterial.cullMode = 'none';\r\n }\r\n return mtoonMaterial;\r\n } else if (assetMaterial.type === 'pbrSpecularGlossiness') {\r\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialSG;\r\n const pbrMaterial = new PBRSpecularGlossinessMaterial();\r\n pbrMaterial.ior = assetPBRMaterial.ior!;\r\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\r\n pbrMaterial.specularFactor = new Vector3(\r\n assetPBRMaterial.specular!.x,\r\n assetPBRMaterial.specular!.y,\r\n assetPBRMaterial.specular!.z\r\n );\r\n pbrMaterial.glossinessFactor = assetPBRMaterial.glossness!;\r\n if (assetPBRMaterial.diffuseMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.diffuseMap);\r\n if (info) {\r\n pbrMaterial.albedoTexture = info.texture;\r\n pbrMaterial.albedoTextureSampler = info.sampler;\r\n pbrMaterial.albedoTexCoordIndex = info.texCoord;\r\n pbrMaterial.albedoTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (assetPBRMaterial.common.normalMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.normalMap);\r\n if (info) {\r\n pbrMaterial.normalTexture = info.texture;\r\n pbrMaterial.normalTextureSampler = info.sampler;\r\n pbrMaterial.normalTexCoordIndex = info.texCoord;\r\n pbrMaterial.normalTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\r\n if (assetPBRMaterial.common.emissiveMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.emissiveMap);\r\n if (info) {\r\n pbrMaterial.emissiveTexture = info.texture;\r\n pbrMaterial.emissiveTextureSampler = info.sampler;\r\n pbrMaterial.emissiveTexCoordIndex = info.texCoord;\r\n pbrMaterial.emissiveTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\r\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\r\n if (assetPBRMaterial.common.occlusionMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.occlusionMap);\r\n if (info) {\r\n pbrMaterial.occlusionTexture = info.texture;\r\n pbrMaterial.occlusionTextureSampler = info.sampler;\r\n pbrMaterial.occlusionTexCoordIndex = info.texCoord;\r\n pbrMaterial.occlusionTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\r\n if (assetPBRMaterial.specularGlossnessMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.specularGlossnessMap);\r\n if (info) {\r\n pbrMaterial.specularTexture = info.texture;\r\n pbrMaterial.specularTextureSampler = info.sampler;\r\n pbrMaterial.specularTexCoordIndex = info.texCoord;\r\n pbrMaterial.specularTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\r\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\r\n if (assetPBRMaterial.common.alphaMode === 'blend') {\r\n pbrMaterial.blendMode = 'blend';\r\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\r\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\r\n }\r\n if (assetPBRMaterial.common.doubleSided) {\r\n pbrMaterial.cullMode = 'none';\r\n }\r\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\r\n return pbrMaterial;\r\n } else if (assetMaterial.type === 'pbrMetallicRoughness') {\r\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialMR;\r\n const pbrMaterial = new PBRMetallicRoughnessMaterial();\r\n pbrMaterial.ior = assetPBRMaterial.ior!;\r\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\r\n pbrMaterial.metallic = assetPBRMaterial.metallic!;\r\n pbrMaterial.roughness = assetPBRMaterial.roughness!;\r\n if (assetPBRMaterial.diffuseMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.diffuseMap);\r\n if (info) {\r\n pbrMaterial.albedoTexture = info.texture;\r\n pbrMaterial.albedoTextureSampler = info.sampler;\r\n pbrMaterial.albedoTexCoordIndex = info.texCoord;\r\n pbrMaterial.albedoTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (assetPBRMaterial.common.normalMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.normalMap);\r\n if (info) {\r\n pbrMaterial.normalTexture = info.texture;\r\n pbrMaterial.normalTextureSampler = info.sampler;\r\n pbrMaterial.normalTexCoordIndex = info.texCoord;\r\n pbrMaterial.normalTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\r\n if (assetPBRMaterial.common.emissiveMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.emissiveMap);\r\n if (info) {\r\n pbrMaterial.emissiveTexture = info.texture;\r\n pbrMaterial.emissiveTextureSampler = info.sampler;\r\n pbrMaterial.emissiveTexCoordIndex = info.texCoord;\r\n pbrMaterial.emissiveTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\r\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\r\n if (assetPBRMaterial.common.occlusionMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.common.occlusionMap);\r\n if (info) {\r\n pbrMaterial.occlusionTexture = info.texture;\r\n pbrMaterial.occlusionTextureSampler = info.sampler;\r\n pbrMaterial.occlusionTexCoordIndex = info.texCoord;\r\n pbrMaterial.occlusionTexCoordMatrix = info.transform;\r\n }\r\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\r\n }\r\n if (assetPBRMaterial.metallicMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.metallicMap);\r\n if (info) {\r\n pbrMaterial.metallicRoughnessTexture = info.texture;\r\n pbrMaterial.metallicRoughnessTextureSampler = info.sampler;\r\n pbrMaterial.metallicRoughnessTexCoordIndex = info.texCoord;\r\n pbrMaterial.metallicRoughnessTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.specularFactor = assetPBRMaterial.specularFactor!;\r\n if (assetPBRMaterial.specularMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.specularMap);\r\n if (info) {\r\n pbrMaterial.specularTexture = info.texture;\r\n pbrMaterial.specularTextureSampler = info.sampler;\r\n pbrMaterial.specularTexCoordIndex = info.texCoord;\r\n pbrMaterial.specularTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (assetPBRMaterial.specularColorMap) {\r\n const info = await getTextureInfo(assetPBRMaterial.specularColorMap);\r\n if (info) {\r\n pbrMaterial.specularColorTexture = info.texture;\r\n pbrMaterial.specularColorTextureSampler = info.sampler;\r\n pbrMaterial.specularColorTexCoordIndex = info.texCoord;\r\n pbrMaterial.specularColorTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (assetPBRMaterial.sheen) {\r\n const sheen = assetPBRMaterial.sheen;\r\n pbrMaterial.sheen = true;\r\n pbrMaterial.sheenColorFactor = sheen.sheenColorFactor!;\r\n pbrMaterial.sheenRoughnessFactor = sheen.sheenRoughnessFactor!;\r\n if (sheen.sheenColorMap) {\r\n const info = await getTextureInfo(sheen.sheenColorMap);\r\n if (info) {\r\n pbrMaterial.sheenColorTexture = info.texture;\r\n pbrMaterial.sheenColorTextureSampler = info.sampler;\r\n pbrMaterial.sheenColorTexCoordIndex = info.texCoord;\r\n pbrMaterial.sheenColorTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (sheen.sheenRoughnessMap) {\r\n const info = await getTextureInfo(sheen.sheenRoughnessMap);\r\n if (info) {\r\n pbrMaterial.sheenRoughnessTexture = info.texture;\r\n pbrMaterial.sheenRoughnessTextureSampler = info.sampler;\r\n pbrMaterial.sheenRoughnessTexCoordIndex = info.texCoord;\r\n pbrMaterial.sheenRoughnessTexCoordMatrix = info.transform;\r\n }\r\n }\r\n }\r\n if (assetPBRMaterial.iridescence) {\r\n const iridescence = assetPBRMaterial.iridescence;\r\n pbrMaterial.iridescence = true;\r\n pbrMaterial.iridescenceFactor = iridescence.iridescenceFactor!;\r\n pbrMaterial.iridescenceIor = iridescence.iridescenceIor!;\r\n if (iridescence.iridescenceMap) {\r\n const info = await getTextureInfo(iridescence.iridescenceMap);\r\n if (info) {\r\n pbrMaterial.iridescenceTexture = info.texture;\r\n pbrMaterial.iridescenceTextureSampler = info.sampler;\r\n pbrMaterial.iridescenceTexCoordIndex = info.texCoord;\r\n pbrMaterial.iridescenceTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.iridescenceThicknessMin = iridescence.iridescenceThicknessMinimum!;\r\n pbrMaterial.iridescenceThicknessMax = iridescence.iridescenceThicknessMaximum!;\r\n if (iridescence.iridescenceThicknessMap) {\r\n const info = await getTextureInfo(iridescence.iridescenceThicknessMap);\r\n if (info) {\r\n pbrMaterial.iridescenceThicknessTexture = info.texture;\r\n pbrMaterial.iridescenceThicknessTextureSampler = info.sampler;\r\n pbrMaterial.iridescenceThicknessTexCoordIndex = info.texCoord;\r\n pbrMaterial.iridescenceThicknessTexCoordMatrix = info.transform;\r\n }\r\n }\r\n }\r\n if (assetPBRMaterial.transmission) {\r\n const transmission = assetPBRMaterial.transmission;\r\n pbrMaterial.transmission = true;\r\n pbrMaterial.transmissionFactor = transmission.transmissionFactor!;\r\n if (transmission.transmissionMap) {\r\n const info = await getTextureInfo(transmission.transmissionMap);\r\n if (info) {\r\n pbrMaterial.transmissionTexture = info.texture;\r\n pbrMaterial.transmissionTextureSampler = info.sampler;\r\n pbrMaterial.transmissionTexCoordIndex = info.texCoord;\r\n pbrMaterial.transmissionTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.thicknessFactor = transmission.thicknessFactor!;\r\n if (transmission.thicknessMap) {\r\n const info = await getTextureInfo(transmission.thicknessMap);\r\n if (info) {\r\n pbrMaterial.thicknessTexture = info.texture;\r\n pbrMaterial.thicknessTextureSampler = info.sampler;\r\n pbrMaterial.thicknessTexCoordIndex = info.texCoord;\r\n pbrMaterial.thicknessTexCoordMatrix = info.transform;\r\n }\r\n }\r\n pbrMaterial.attenuationDistance = transmission.attenuationDistance!;\r\n pbrMaterial.attenuationColor = transmission.attenuationColor!;\r\n }\r\n if (assetPBRMaterial.clearcoat) {\r\n const cc = assetPBRMaterial.clearcoat;\r\n pbrMaterial.clearcoat = true;\r\n pbrMaterial.clearcoatIntensity = cc.clearCoatFactor!;\r\n pbrMaterial.clearcoatRoughnessFactor = cc.clearCoatRoughnessFactor!;\r\n if (cc.clearCoatIntensityMap) {\r\n const info = await getTextureInfo(cc.clearCoatIntensityMap);\r\n if (info) {\r\n pbrMaterial.clearcoatIntensityTexture = info.texture;\r\n pbrMaterial.clearcoatIntensityTextureSampler = info.sampler;\r\n pbrMaterial.clearcoatIntensityTexCoordIndex = info.texCoord;\r\n pbrMaterial.clearcoatIntensityTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (cc.clearCoatRoughnessMap) {\r\n const info = await getTextureInfo(cc.clearCoatRoughnessMap);\r\n if (info) {\r\n pbrMaterial.clearcoatRoughnessTexture = info.texture;\r\n pbrMaterial.clearcoatRoughnessTextureSampler = info.sampler;\r\n pbrMaterial.clearcoatRoughnessTexCoordIndex = info.texCoord;\r\n pbrMaterial.clearcoatRoughnessTexCoordMatrix = info.transform;\r\n }\r\n }\r\n if (cc.clearCoatNormalMap) {\r\n const info = await getTextureInfo(cc.clearCoatNormalMap);\r\n if (info) {\r\n pbrMaterial.clearcoatNormalTexture = info.texture;\r\n pbrMaterial.clearcoatNormalTextureSampler = info.sampler;\r\n pbrMaterial.clearcoatNormalTexCoordIndex = info.texCoord;\r\n pbrMaterial.clearcoatNormalTexCoordMatrix = info.transform;\r\n }\r\n }\r\n }\r\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\r\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\r\n if (assetPBRMaterial.common.alphaMode === 'blend') {\r\n pbrMaterial.blendMode = 'blend';\r\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\r\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\r\n }\r\n if (assetPBRMaterial.common.doubleSided) {\r\n pbrMaterial.cullMode = 'none';\r\n }\r\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\r\n return pbrMaterial;\r\n }\r\n return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nfunction processMorphData(\r\n subMesh: AssetSubMeshData,\r\n mesh: Mesh,\r\n morphWeights?: Nullable<number[]>,\r\n morphNames?: Nullable<string[]>\r\n) {\r\n const device = getDevice();\r\n const numTargets = subMesh.numTargets;\r\n if (numTargets === 0) {\r\n return;\r\n }\r\n const attributes = Object.getOwnPropertyNames(subMesh.targets);\r\n const positionInfo = subMesh.primitive!.vertices['position'];\r\n const numVertices = positionInfo\r\n ? (positionInfo.data.length / getVertexFormatComponentCount(positionInfo.format)) >> 0\r\n : 0;\r\n const weightsAndOffsets = new Float32Array(4 + MAX_MORPH_TARGETS + MAX_MORPH_ATTRIBUTES);\r\n for (let i = 0; i < numTargets; i++) {\r\n weightsAndOffsets[4 + i] = morphWeights?.[i] ?? 0;\r\n }\r\n const textureSize = Math.ceil(Math.sqrt(numVertices * attributes.length * numTargets));\r\n if (textureSize > device.getDeviceCaps().textureCaps.maxTextureSize) {\r\n // TODO: reduce morph attributes\r\n throw new Error(`Morph target data too large`);\r\n }\r\n weightsAndOffsets[0] = textureSize;\r\n weightsAndOffsets[1] = textureSize;\r\n weightsAndOffsets[2] = numVertices;\r\n weightsAndOffsets[3] = numTargets;\r\n let offset = 0;\r\n const textureData = new Float32Array(textureSize * textureSize * 4);\r\n for (let attrib = 0; attrib < MAX_MORPH_ATTRIBUTES; attrib++) {\r\n const index = attributes.indexOf(String(attrib));\r\n if (index < 0) {\r\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = -1;\r\n continue;\r\n }\r\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = offset >> 2;\r\n const info = subMesh.targets![attrib]!;\r\n if (info.data.length !== numTargets) {\r\n console.error(`Invalid morph target data`);\r\n return;\r\n }\r\n for (let t = 0; t < numTargets; t++) {\r\n const data = info.data[t];\r\n for (let i = 0; i < numVertices; i++) {\r\n for (let j = 0; j < 4; j++) {\r\n textureData[offset++] = j < info.numComponents ? data[i * info.numComponents + j] : 1;\r\n }\r\n }\r\n }\r\n }\r\n const morphBoundingBox = new BoundingBox();\r\n calculateMorphBoundingBox(\r\n morphBoundingBox,\r\n subMesh.targetBox!,\r\n weightsAndOffsets.subarray(4, 4 + MAX_MORPH_TARGETS),\r\n numTargets\r\n );\r\n const meshAABB = mesh.getBoundingVolume()!.toAABB();\r\n morphBoundingBox.minPoint.addBy(meshAABB.minPoint);\r\n morphBoundingBox.maxPoint.addBy(meshAABB.maxPoint);\r\n\r\n const names: Record<string, number> = {};\r\n for (let i = 0; i < numTargets; i++) {\r\n const name = morphNames?.[i] ?? `Target${i}`;\r\n names[name] = i;\r\n }\r\n mesh.setMorphData({ width: textureSize, height: textureSize, data: textureData });\r\n mesh.setMorphInfo({ data: weightsAndOffsets, names });\r\n mesh.setMorphBoundingInfo({ targetBoxes: subMesh.targetBox!, originBox: new BoundingBox(meshAABB) });\r\n mesh.setAnimatedBoundingBox(morphBoundingBox);\r\n}\r\n\r\n/** @internal */\r\nfunction getAssetMeshMorphTargetCount(mesh: AssetMeshData): number {\r\n let count = 0;\r\n for (const subMesh of mesh.subMeshes) {\r\n count = Math.max(count, subMesh.numTargets);\r\n }\r\n return count;\r\n}\r\n\r\n/** @internal */\r\nfunction getAssetMeshMorphTargetName(mesh: AssetMeshData, index: number): string {\r\n return mesh.morphNames?.[index] ?? `Target${index}`;\r\n}\r\n\r\n/** @internal */\r\nfunction calculateMorphBoundingBox(\r\n morphBoundingBox: BoundingBox,\r\n keyframeBoundingBox: BoundingBox[],\r\n weights: Float32Array,\r\n numTargets: number\r\n) {\r\n morphBoundingBox.minPoint.setXYZ(0, 0, 0);\r\n morphBoundingBox.maxPoint.setXYZ(0, 0, 0);\r\n for (let i = 0; i < numTargets; i++) {\r\n const weight = weights[i];\r\n const keyframeBox = keyframeBoundingBox[i];\r\n morphBoundingBox.minPoint.x += keyframeBox.minPoint.x * weight;\r\n morphBoundingBox.minPoint.y += keyframeBox.minPoint.y * weight;\r\n morphBoundingBox.minPoint.z += keyframeBox.minPoint.z * weight;\r\n morphBoundingBox.maxPoint.x += keyframeBox.maxPoint.x * weight;\r\n morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.y * weight;\r\n morphBoundingBox.maxPoint.z += keyframeBox.maxPoint.z * weight;\r\n }\r\n}\r\n"],"names":["NamedObject","name","AssetHierarchyNode","_parent","_position","_rotation","_scaling","_mesh","_skeleton","_attachToSkeleton","_matrix","_worldMatrix","_weights","_children","_instances","model","parent","nodes","push","Vector3","zero","Quaternion","identity","one","addChild","matrix","worldMatrix","mesh","data","instances","weights","val","skeleton","position","rotation","scaling","children","skeletonAttached","isParentOf","child","getWorldPosition","m03","m13","m23","computeTransforms","parentTransform","Matrix4x4","rotateLeft","translateLeft","multiply","Error","removeChild","index","indexOf","splice","attachToSkeleton","Set","add","AssetSkeleton","pivot","joints","inverseBindMatrices","bindPose","humanoidJointMapping","addJoint","joint","inverseBindMatrix","clone","scale","root","i","length","AssetScene","rootNodes","SharedModel","Disposable","_nodes","_skeletons","_scenes","_animations","_imageList","_primitiveList","_materialList","_springBoneColliders","_springBoneColliderGroups","_springBones","_jointDynamicsColliders","_jointDynamicsSpringBones","_morphTargetGroups","_activeScene","_textureMap","Map","_primitiveMap","scenes","primitives","animations","skeletons","springBoneColliders","springBoneColliderGroups","springBones","jointDynamicsColliders","jointDynamicsSpringBones","morphTargetGroups","activeScene","getImage","setImage","img","getMaterial","hash","setMaterial","material","addPrimitive","prim","sanitizeResourceName","fallback","normalized","trim","replace","getReimportPoolKey","baseName","ext","toLowerCase","getResourceBasename","path","PathUtils","basename","extname","getResourceNumericSuffix","candidateBaseName","match","RegExp","exec","Number","parseInt","MAX_SAFE_INTEGER","registerReusableResourcePath","pools","register","keyBaseName","key","candidates","get","set","strippedBaseName","collectReferencedAssetPaths","value","destPath","extensions","out","normalizedPath","normalize","normalizedDestPath","has","startsWith","endsWith","Array","isArray","item","Object","values","collectReferencedAssetPathsFromJsonFile","destVFS","jsonPath","exists","content","readFile","encoding","json","JSON","parse","err","console","warn","createReimportResourcePools","prefabPath","materialAndMeshPaths","materialPaths","from","filter","imageExtensions","materialPath","texturePaths","texturePath","consumeReusableResourcePath","usedPaths","size","sorted","sort","a","b","aSuffix","bSuffix","localeCompare","selected","createUniqueResourcePath","sanitizedBase","suffix","candidateName","candidatePath","join","tryReuseExactResourcePath","collapseCompositeTextureName","separatorIndex","left","slice","right","leftParts","split","rightParts","prefixLength","prefix","leftSuffix","rightSuffix","getImageBaseName","uri","getMaterialBaseName","getPrimitiveBaseName","info","addMorphTargetGroup","group","bindings","clearMorphTargetGroups","getMorphTargetGroup","find","buildMorphTargetGroupsByName","groups","meshes","node","count","getAssetMeshMorphTargetCount","targetName","getAssetMeshMorphTargetName","targetIndex","weight","addSkeleton","addAnimation","animation","writePrimitive","vfs","primitive","vertices","indices","uint8ArrayToBase64","Uint8Array","buffer","byteOffset","byteLength","indexType","Uint16Array","indexCount","type","boxMin","x","y","z","boxMax","k","v","format","stringify","writeFile","create","preprocess","manager","srcVFS","dstVFS","destName","rebuildMaterial","_preprocessOptions","prefabName","reusableResourcePools","mimeType","guessMIMEType","ASSERT","undefined","materialKeys","keys","m","createMaterial","serializeObject","dispose","createJointDynamics","rootNode","nodeMap","animationSet","rigs","jd","chains","map","chain","start","end","ref","every","includes","colliders","collider","SceneNode","scene","localPosition","localRotation","r","transform","createTransformAccess","flatPlanes","flatPlane","up","transformVectorAffine","magnitudeSq","inplaceNormalize","transformPointAffine","rig","system","JointDynamicsSystem","chainConfig","systemRoot","controllerConfig","modifier","JointDynamicsModifier","modifiers","createMorphTargetGroups","meshMap","runtimeGroups","binding","assetMesh","subMesh","subMeshes","isBinary","getInitialMorphTargetGroupWeight","result","found","targetWeight","getMorphTargetBindingWeight","groupWeight","Math","abs","getNumMorphTargets","getMorphTargetName","getMorphWeight","remapHumanoidJointMapping","mapping","remap","source","body","leftHand","rightHand","createSceneNode","instancing","saveMeshes","saveSkeletons","saveAnimations","saveJointDynamics","assetScene","skeletonMeshMap","setAssetNodeToSceneNode","sk","bounding","rigMap","jointTypeT","jointTypeS","jointTypeR","rootJoint","rigKey","SkeletonRig","getRigKey","DRef","SkinBinding","positions","rawPositions","blendIndices","rawBlendIndices","rawJointWeights","setSkinnedBoundingInfo","getBoundingInfo","skeletonName","persistentId","animationData","getAnimationClip","t","createAnimation","track","tracks","target","addTrack","NodeTranslationTrack","interpolator","NodeScaleTrack","NodeRotationTrack","stride","MAX_MORPH_TARGETS","error","morphTrack","MorphTargetTrack","defaultMorphWeights","targetBox","getBoundingVolume","toAABB","subMeshIndex","codec","pcaData","remapPCAGeometryCacheData","PCAGeometryCacheTrack","frames","remapGeometryCacheFrames","FixedGeometryCacheTrack","times","sourcePositions","sourceVertexCount","targetVertexCount","buildGeometryCacheRemap","frame","expandGeometryCacheData","normals","boundingBox","remapReference","positionReference","reconstructPCAGeometryCacheReference","bounds","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","basis","reference","Float32Array","coefficients","componentCount","min","component","coefficient","targetPositions","sourceCount","targetCount","buckets","geometryCachePositionKey","bucket","Uint32Array","sourceIndex","findGeometryCacheSourceIndex","findNearestGeometryCacheSourceIndex","expanded","sourceOffset","targetOffset","epsilon","offset","epsilonSquared","bestIndex","bestDistance","POSITIVE_INFINITY","dx","dy","dz","distance","round","onDispose","tex","assetNode","meshData","s","instance","meshNode","Mesh","clipTestEnabled","showState","createPrimitive","createInstance","setSceneMeshAssetBinding","processMorphData","morphWeights","morphNames","image2Texture","image","texture","fetchTexture","linearColorSpace","sRGB","overrideVFS","loadTextureFromBuffer","createTexture","textureRef","sampler","getDevice","createSampler","addressU","wrapS","addressV","wrapT","magFilter","minFilter","mipFilter","texCoord","fetchPrimitive","Primitive","createAndSetVertexBuffer","createAndSetIndexBuffer","primitiveType","setBoundingVolume","BoundingBox","assetMaterial","fetchMaterial","infoMap","that","getTextureInfo","setMaterialTexture","propertyPrefix","textureInfo","unlitAssetMaterial","unlitMaterial","UnlitMaterial","albedoColor","diffuse","Vector4","diffuseMap","albedoTexture","albedoTextureSampler","albedoTexCoordIndex","albedoTexCoordMatrix","vertexColor","common","alphaMode","blendMode","alphaCutoff","doubleSided","cullMode","mtoonAssetMaterial","mtoonMaterial","MToonMaterial","mtoonTextureTarget","normalMap","normalScale","bumpScale","emissiveMap","emissiveColor","emissiveStrength","shadeColorFactor","shadeMultiplyMap","shadingShiftFactor","shadingShiftMap","shadingShiftTextureScale","shadingToonyFactor","giEqualizationFactor","matcapFactor","matcapMap","parametricRimColorFactor","parametricRimFresnelPowerFactor","parametricRimLiftFactor","rimMultiplyMap","rimLightingMixFactor","outlineWidthMode","outlineWidthFactor","outlineWidthMultiplyMap","outlineColorFactor","outlineLightingMixFactor","outlineUsesTangentNormals","uvAnimationMaskMap","uvAnimationScrollXSpeedFactor","uvAnimationScrollYSpeedFactor","uvAnimationRotationSpeedFactor","transparentWithZWrite","renderQueueOffsetNumber","assetPBRMaterial","pbrMaterial","PBRSpecularGlossinessMaterial","ior","specularFactor","specular","glossinessFactor","glossness","normalTexture","normalTextureSampler","normalTexCoordIndex","normalTexCoordMatrix","emissiveTexture","emissiveTextureSampler","emissiveTexCoordIndex","emissiveTexCoordMatrix","occlusionMap","occlusionTexture","occlusionTextureSampler","occlusionTexCoordIndex","occlusionTexCoordMatrix","occlusionStrength","specularGlossnessMap","specularTexture","specularTextureSampler","specularTexCoordIndex","specularTexCoordMatrix","vertexTangent","useTangent","vertexNormal","PBRMetallicRoughnessMaterial","metallic","roughness","metallicMap","metallicRoughnessTexture","metallicRoughnessTextureSampler","metallicRoughnessTexCoordIndex","metallicRoughnessTexCoordMatrix","specularMap","specularColorMap","specularColorTexture","specularColorTextureSampler","specularColorTexCoordIndex","specularColorTexCoordMatrix","sheen","sheenColorFactor","sheenRoughnessFactor","sheenColorMap","sheenColorTexture","sheenColorTextureSampler","sheenColorTexCoordIndex","sheenColorTexCoordMatrix","sheenRoughnessMap","sheenRoughnessTexture","sheenRoughnessTextureSampler","sheenRoughnessTexCoordIndex","sheenRoughnessTexCoordMatrix","iridescence","iridescenceFactor","iridescenceIor","iridescenceMap","iridescenceTexture","iridescenceTextureSampler","iridescenceTexCoordIndex","iridescenceTexCoordMatrix","iridescenceThicknessMin","iridescenceThicknessMinimum","iridescenceThicknessMax","iridescenceThicknessMaximum","iridescenceThicknessMap","iridescenceThicknessTexture","iridescenceThicknessTextureSampler","iridescenceThicknessTexCoordIndex","iridescenceThicknessTexCoordMatrix","transmission","transmissionFactor","transmissionMap","transmissionTexture","transmissionTextureSampler","transmissionTexCoordIndex","transmissionTexCoordMatrix","thicknessFactor","thicknessMap","thicknessTexture","thicknessTextureSampler","thicknessTexCoordIndex","thicknessTexCoordMatrix","attenuationDistance","attenuationColor","clearcoat","cc","clearcoatIntensity","clearCoatFactor","clearcoatRoughnessFactor","clearCoatRoughnessFactor","clearCoatIntensityMap","clearcoatIntensityTexture","clearcoatIntensityTextureSampler","clearcoatIntensityTexCoordIndex","clearcoatIntensityTexCoordMatrix","clearCoatRoughnessMap","clearcoatRoughnessTexture","clearcoatRoughnessTextureSampler","clearcoatRoughnessTexCoordIndex","clearcoatRoughnessTexCoordMatrix","clearCoatNormalMap","clearcoatNormalTexture","clearcoatNormalTextureSampler","clearcoatNormalTexCoordIndex","clearcoatNormalTexCoordMatrix","device","numTargets","attributes","getOwnPropertyNames","targets","positionInfo","numVertices","getVertexFormatComponentCount","weightsAndOffsets","MAX_MORPH_ATTRIBUTES","textureSize","ceil","sqrt","getDeviceCaps","textureCaps","maxTextureSize","textureData","attrib","String","j","numComponents","morphBoundingBox","calculateMorphBoundingBox","subarray","meshAABB","minPoint","addBy","maxPoint","names","setMorphData","width","height","setMorphInfo","setMorphBoundingInfo","targetBoxes","originBox","setAnimatedBoundingBox","max","keyframeBoundingBox","setXYZ","keyframeBox"],"mappings":"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"}
|