Pilot für eine generierte Figur: der Kohlenbeißer g01 kommt als Meshy-Ergebnis in den Port und ersetzt dort das Phase-4-Modell. Eine Figur genügt, um Pipeline, Bild und Leistung zu bewerten; Anatomie, Gesichter und Haare bleiben Künstler-Sculpts oder lizenzierte Packs (Vorgabe vom 1. Oktober). - Meshy-Pipeline unter tools/meshy/: API-Client (meshy.py, Ledger, Schlüssel nie geloggt) und Blender-Generator (build_figure.py) aus den unveränderten Downloads in assets-source/meshy/g01/. Export über den Manifest-Eintrag kohlenbeisser mit "replaces": "g01"; LuneUnitLibraryBuilder hängt die Figur zusätzlich unter der Godot-ID ein. - UV-Material AI_Kohlenbeisser (Familie authored): die Karten der Figur selbst, Lava-Glut aus der Albedo-Alpha (Meshy 7.1 ohne Emission-Map) mit _Glow 1,25. - Schatten ohne Normalen-Versatz (LuneShadowBias, _ShadowNormalScale 0): die UV-Naht-Kopien tragen geknickte Normalen; URP ApplyShadowBias zog helle Nähte durch den Schatten. Die Figur wirft nur mit Tiefen-Bias. - GPU-Batched-Skinning (PlayerSettings.meshDeformation, LuneProjectSetup): 35 Meshy-Kohlenbeißer kosteten mit CPU-Skinning rund 1 ms Haupt- und 1,7 ms Render-Thread je Bild. - LuneBenchmark: -luneBenchmarkRound und -luneBenchmarkArmy (Figuren-Stress). LuneAssetPreview: LUNE_ONLY für Vorher/Nachher, Trefferframe aus der Kontaktzeit des Manifests. FigureViewsTests (Explicit) für die vier Spielmomente der Figur. - Tests: EditMode 29/29, PlayMode 14/14 (6 Explicit), Verify 718/0, Player-Selbsttest 30/30, Kerntests 457/457, Fingerabdrücke unverändert (DCE95C96556F3A1A, 7B8E43AEFC0D60C5). - Leistung (A/B im selben Fenster, 35x g01): Meshy -21 % Mid (109,7 zu 138,8) und -13 % Karte (91,7 zu 105,6) gegenüber Phase-4. GPU-Skinning hebt Mid um 7-27 % und entlastet Haupt- und Render-Thread. Standard-Partie ab Runde 21 ohne g01 im Bild: drei Varianten bis 6 %. - Doku: U5-VISUAL (U5.5), PORT-QA, PORT-STATUS, KNOWN-BEHAVIOR-DIFFERENCES; Bilder screenshots/u5.5/ und u5.5-gpu/, Rohdaten logs/u5.5/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
335 lines
9 KiB
Text
335 lines
9 KiB
Text
fileFormatVersion: 2
|
|
guid: cb652a88669c64f4d98a351c01bf9642
|
|
ModelImporter:
|
|
serializedVersion: 24300
|
|
internalIDToNameTable: []
|
|
externalObjects: {}
|
|
materials:
|
|
materialImportMode: 2
|
|
materialName: 0
|
|
materialSearch: 1
|
|
materialLocation: 1
|
|
searchTexturesGlobally: 0
|
|
animations:
|
|
legacyGenerateAnimations: 4
|
|
bakeSimulation: 0
|
|
resampleCurves: 0
|
|
optimizeGameObjects: 0
|
|
removeConstantScaleCurves: 0
|
|
motionNodeName:
|
|
animationImportErrors:
|
|
animationImportWarnings:
|
|
animationRetargetingWarnings:
|
|
animationDoRetargetingWarnings: 0
|
|
importAnimatedCustomProperties: 0
|
|
importConstraints: 0
|
|
animationCompression: 0
|
|
animationRotationError: 0.5
|
|
animationPositionError: 0.5
|
|
animationScaleError: 0.5
|
|
animationWrapMode: 0
|
|
extraExposedTransformPaths: []
|
|
extraUserProperties: []
|
|
clipAnimations:
|
|
- serializedVersion: 16
|
|
name: ability
|
|
takeName: KohlenbeisserRig|ability
|
|
internalID: 3705849776427491170
|
|
firstFrame: 0
|
|
lastFrame: 29
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events:
|
|
- time: 0.6034925
|
|
functionName: OnLuneContact
|
|
data:
|
|
objectReferenceParameter: {instanceID: 0}
|
|
floatParameter: 0
|
|
intParameter: 0
|
|
messageOptions: 0
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: attack_a
|
|
takeName: KohlenbeisserRig|attack_a
|
|
internalID: -3405177721873534211
|
|
firstFrame: 0
|
|
lastFrame: 25
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events:
|
|
- time: 0.38888356
|
|
functionName: OnLuneContact
|
|
data:
|
|
objectReferenceParameter: {instanceID: 0}
|
|
floatParameter: 0
|
|
intParameter: 0
|
|
messageOptions: 0
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: attack_b
|
|
takeName: KohlenbeisserRig|attack_b
|
|
internalID: -2483013763081702321
|
|
firstFrame: 0
|
|
lastFrame: 24
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events:
|
|
- time: 0.4737
|
|
functionName: OnLuneContact
|
|
data:
|
|
objectReferenceParameter: {instanceID: 0}
|
|
floatParameter: 0
|
|
intParameter: 0
|
|
messageOptions: 0
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: death
|
|
takeName: KohlenbeisserRig|death
|
|
internalID: 1991740894720693960
|
|
firstFrame: 0
|
|
lastFrame: 53
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: hit
|
|
takeName: KohlenbeisserRig|hit
|
|
internalID: -6630987000881563956
|
|
firstFrame: 0
|
|
lastFrame: 12
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: idle
|
|
takeName: KohlenbeisserRig|idle
|
|
internalID: 6469625564475280535
|
|
firstFrame: 0
|
|
lastFrame: 96
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 1
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
- serializedVersion: 16
|
|
name: walk
|
|
takeName: KohlenbeisserRig|walk
|
|
internalID: -3533893897849437368
|
|
firstFrame: 0
|
|
lastFrame: 67
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 1
|
|
loopBlend: 0
|
|
loopBlendOrientation: 0
|
|
loopBlendPositionY: 0
|
|
loopBlendPositionXZ: 0
|
|
keepOriginalOrientation: 0
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 0
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
isReadable: 1
|
|
meshes:
|
|
lODScreenPercentages: []
|
|
globalScale: 1
|
|
meshCompression: 0
|
|
addColliders: 0
|
|
useSRGBMaterialColor: 1
|
|
sortHierarchyByName: 1
|
|
importPhysicalCameras: 1
|
|
importVisibility: 0
|
|
importBlendShapes: 0
|
|
importCameras: 0
|
|
importLights: 0
|
|
nodeNameCollisionStrategy: 1
|
|
fileIdsGeneration: 2
|
|
swapUVChannels: 0
|
|
generateSecondaryUV: 0
|
|
useFileUnits: 1
|
|
keepQuads: 0
|
|
weldVertices: 1
|
|
bakeAxisConversion: 1
|
|
preserveHierarchy: 0
|
|
skinWeightsMode: 0
|
|
maxBonesPerVertex: 4
|
|
minBoneWeight: 0.001
|
|
optimizeBones: 1
|
|
generateMeshLods: 0
|
|
meshLodGenerationFlags: 0
|
|
maximumMeshLod: -1
|
|
meshOptimizationFlags: -1
|
|
indexFormat: 0
|
|
secondaryUVAngleDistortion: 8
|
|
secondaryUVAreaDistortion: 15.000001
|
|
secondaryUVHardAngle: 88
|
|
secondaryUVMarginMethod: 1
|
|
secondaryUVMinLightmapResolution: 40
|
|
secondaryUVMinObjectScale: 1
|
|
secondaryUVPackMargin: 4
|
|
useFileScale: 1
|
|
strictVertexDataChecks: 0
|
|
tangentSpace:
|
|
normalSmoothAngle: 60
|
|
normalImportMode: 0
|
|
tangentImportMode: 3
|
|
normalCalculationMode: 4
|
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
|
blendShapeNormalImportMode: 1
|
|
normalSmoothingSource: 0
|
|
referencedClips: []
|
|
importAnimation: 1
|
|
humanDescription:
|
|
serializedVersion: 3
|
|
human: []
|
|
skeleton: []
|
|
armTwist: 0.5
|
|
foreArmTwist: 0.5
|
|
upperLegTwist: 0.5
|
|
legTwist: 0.5
|
|
armStretch: 0.05
|
|
legStretch: 0.05
|
|
feetSpacing: 0
|
|
globalScale: 1
|
|
rootMotionBoneName:
|
|
hasTranslationDoF: 0
|
|
hasExtraRoot: 0
|
|
skeletonHasParents: 1
|
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
|
autoGenerateAvatarMappingIfUnspecified: 1
|
|
animationType: 2
|
|
humanoidOversampling: 1
|
|
avatarSetup: 1
|
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
|
importBlendShapeDeformPercent: 1
|
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
|
additionalBone: 0
|
|
userData:
|
|
assetBundleName:
|
|
assetBundleVariant:
|