U5.5 Schlackenwacht: dritte Meshy-Figur (g03)
Schildplatten-Golem aus Icon, Phase-4-Bild und Kohlenbeißer-Konzept als Stilvorlage, 68 Credits, Lane-Fassung inklusive. FigureViewsTests erkennt Grund- und Aufwertungstruppen selbst. Stresstest 35 Schlackenwachten: Mid 161,9 -> 148,5 fps, Karte unverändert 124,5. Tests grün, Fingerabdrücke unverändert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
490
Assets/Luneraria/Art/Characters/schlackenwacht.export.json
Normal file
|
|
@ -0,0 +1,490 @@
|
|||
{
|
||||
"id": "schlackenwacht",
|
||||
"group": "Characters",
|
||||
"source": "tools/meshy/build_figure.py",
|
||||
"exporter_version": 11,
|
||||
"blender": "5.2.2 LTS",
|
||||
"fbx_settings": {
|
||||
"use_selection": true,
|
||||
"use_visible": false,
|
||||
"use_active_collection": false,
|
||||
"global_scale": 1.0,
|
||||
"apply_unit_scale": true,
|
||||
"apply_scale_options": "FBX_SCALE_UNITS",
|
||||
"axis_forward": "Y",
|
||||
"axis_up": "Z",
|
||||
"bake_space_transform": false,
|
||||
"object_types": [
|
||||
"ARMATURE",
|
||||
"EMPTY",
|
||||
"MESH"
|
||||
],
|
||||
"use_mesh_modifiers": true,
|
||||
"use_mesh_modifiers_render": true,
|
||||
"mesh_smooth_type": "OFF",
|
||||
"use_subsurf": false,
|
||||
"use_mesh_edges": false,
|
||||
"use_tspace": false,
|
||||
"use_triangles": false,
|
||||
"colors_type": "LINEAR",
|
||||
"prioritize_active_color": true,
|
||||
"use_custom_props": false,
|
||||
"add_leaf_bones": false,
|
||||
"primary_bone_axis": "Y",
|
||||
"secondary_bone_axis": "X",
|
||||
"use_armature_deform_only": true,
|
||||
"armature_nodetype": "NULL",
|
||||
"bake_anim": true,
|
||||
"bake_anim_use_all_bones": true,
|
||||
"bake_anim_use_nla_strips": false,
|
||||
"bake_anim_use_all_actions": true,
|
||||
"bake_anim_force_startend_keying": true,
|
||||
"bake_anim_step": 1.0,
|
||||
"bake_anim_simplify_factor": 0.0,
|
||||
"path_mode": "STRIP",
|
||||
"embed_textures": false,
|
||||
"batch_mode": "OFF"
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"check": "turn_applied",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "units_metric",
|
||||
"ok": true,
|
||||
"detail": "METRIC"
|
||||
},
|
||||
{
|
||||
"check": "unit_scale_1",
|
||||
"ok": true,
|
||||
"detail": "1.0"
|
||||
},
|
||||
{
|
||||
"check": "no_negative_scale",
|
||||
"ok": true,
|
||||
"detail": "{}"
|
||||
},
|
||||
{
|
||||
"check": "object_scale_1",
|
||||
"ok": true,
|
||||
"detail": "{}"
|
||||
},
|
||||
{
|
||||
"check": "mesh_names_unique",
|
||||
"ok": true,
|
||||
"detail": "['SchlackenwachtBody_LOD0', 'SchlackenwachtBody_LOD1']"
|
||||
},
|
||||
{
|
||||
"check": "material_slots_filled",
|
||||
"ok": true,
|
||||
"detail": "{}"
|
||||
},
|
||||
{
|
||||
"check": "normals_unit_length",
|
||||
"ok": true,
|
||||
"detail": "{}"
|
||||
},
|
||||
{
|
||||
"check": "no_blend_shapes",
|
||||
"ok": true,
|
||||
"detail": "{}"
|
||||
},
|
||||
{
|
||||
"check": "triangles_match_godot",
|
||||
"ok": true,
|
||||
"detail": "25142 fbx / 25142 godot"
|
||||
},
|
||||
{
|
||||
"check": "one_armature",
|
||||
"ok": true,
|
||||
"detail": "['SchlackenwachtRig']"
|
||||
},
|
||||
{
|
||||
"check": "single_root_bone",
|
||||
"ok": true,
|
||||
"detail": "['Root']"
|
||||
},
|
||||
{
|
||||
"check": "root_bone_name",
|
||||
"ok": true,
|
||||
"detail": "['Root']"
|
||||
},
|
||||
{
|
||||
"check": "bone_count_match_godot",
|
||||
"ok": true,
|
||||
"detail": "25 / 25"
|
||||
},
|
||||
{
|
||||
"check": "bone_names_portable",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "skinned_meshes_present",
|
||||
"ok": true,
|
||||
"detail": ""
|
||||
},
|
||||
{
|
||||
"check": "clips_match_godot",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "required_clips_present",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "roundtrip_mesh_names",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "roundtrip_triangles",
|
||||
"ok": true,
|
||||
"detail": "25142 / 25142"
|
||||
},
|
||||
{
|
||||
"check": "roundtrip_materials",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "roundtrip_bones",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "roundtrip_clips",
|
||||
"ok": true,
|
||||
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'walk']"
|
||||
}
|
||||
],
|
||||
"generator": {
|
||||
"clips": {
|
||||
"idle": {
|
||||
"source": "Idle",
|
||||
"frames": [
|
||||
0.0,
|
||||
96.0
|
||||
],
|
||||
"seconds": 4.0,
|
||||
"loop": true,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
"walk": {
|
||||
"source": "Slow_Orc_Walk",
|
||||
"frames": [
|
||||
0.0,
|
||||
132.0
|
||||
],
|
||||
"seconds": 2.7917,
|
||||
"loop": true,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
"attack_a": {
|
||||
"source": "Right_Hand_Sword_Slash",
|
||||
"frames": [
|
||||
0,
|
||||
36
|
||||
],
|
||||
"seconds": 1.0417,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.4051
|
||||
},
|
||||
"attack_b": {
|
||||
"source": "Punch_Forward_with_Both_Fists",
|
||||
"frames": [
|
||||
18,
|
||||
56
|
||||
],
|
||||
"seconds": 1.0,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.4737
|
||||
},
|
||||
"hit": {
|
||||
"source": "Hit_Reaction",
|
||||
"frames": [
|
||||
0,
|
||||
12
|
||||
],
|
||||
"seconds": 0.5,
|
||||
"loop": false,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
"ability": {
|
||||
"source": "Charged_Ground_Slam",
|
||||
"frames": [
|
||||
6,
|
||||
64
|
||||
],
|
||||
"seconds": 1.2083,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.7292
|
||||
},
|
||||
"death": {
|
||||
"source": "dying_backwards",
|
||||
"frames": [
|
||||
0.0,
|
||||
52.80000305175781
|
||||
],
|
||||
"seconds": 2.2083,
|
||||
"loop": false,
|
||||
"contact_seconds": -1.0
|
||||
}
|
||||
},
|
||||
"textures": {
|
||||
"glow_share": 0.0087,
|
||||
"palette_gains": {
|
||||
"rock": [
|
||||
1.1155,
|
||||
1.2312,
|
||||
1.5128
|
||||
],
|
||||
"metal": [
|
||||
1.5139,
|
||||
1.2913,
|
||||
0.8064
|
||||
]
|
||||
},
|
||||
"size": [
|
||||
2048,
|
||||
2048
|
||||
]
|
||||
},
|
||||
"unit": 0.009999999776482582,
|
||||
"lod": {
|
||||
"lod0_triangles": 20145,
|
||||
"lod1_triangles": 4997,
|
||||
"lod1_vertices": 2505,
|
||||
"welded_triangles": 20145,
|
||||
"lod0_screen": 0.2
|
||||
}
|
||||
},
|
||||
"inputs_sha256": {
|
||||
"tools/meshy/g03/figure.json": "6934efc31f06faeafa189ba5f399b66d1c6662871aa9fce0e6b6c44a1add9dd8",
|
||||
"assets-source/meshy/g03/schlackenwacht-skelett.glb": "0c6477bdcb262c36b5df2d7de1580742ea2dc6f51aa7259ef4273c97f9bb7b29",
|
||||
"assets-source/meshy/g03/schlackenwacht-animationen.glb": "fdde8ad1b5ef713d4df1beb2c307054e1c83eaf552c8ddd986b11698aa159ec4"
|
||||
},
|
||||
"source_sha256": "9eb17a4e3dc7029b7031f3be85f6676877c521788835137eb199c352c5b35aa4",
|
||||
"removed_modifiers": 0,
|
||||
"kind": "skinned",
|
||||
"fps": 24.0,
|
||||
"objects": 3,
|
||||
"meshes": {
|
||||
"SchlackenwachtBody_LOD0": {
|
||||
"mesh": "SchlackenwachtBody_LOD0",
|
||||
"triangles": 20145,
|
||||
"vertices": 23967,
|
||||
"ngons": 0,
|
||||
"materials": [
|
||||
"AI_Schlackenwacht"
|
||||
],
|
||||
"uv_layers": [
|
||||
"UVMap"
|
||||
],
|
||||
"color_attributes": [],
|
||||
"active_color": null,
|
||||
"custom_normals": true,
|
||||
"normals_unit_length": true,
|
||||
"bad_normals": 0,
|
||||
"degenerate_triangles": 0,
|
||||
"shape_keys": 0,
|
||||
"skinned": true,
|
||||
"scale": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"bounds_unity": {
|
||||
"min": [
|
||||
-0.7712,
|
||||
-0.0,
|
||||
-0.3494
|
||||
],
|
||||
"max": [
|
||||
0.7719,
|
||||
1.35,
|
||||
0.3443
|
||||
]
|
||||
}
|
||||
},
|
||||
"SchlackenwachtBody_LOD1": {
|
||||
"mesh": "SchlackenwachtBody_LOD1",
|
||||
"triangles": 4997,
|
||||
"vertices": 2505,
|
||||
"ngons": 0,
|
||||
"materials": [
|
||||
"AI_Schlackenwacht"
|
||||
],
|
||||
"uv_layers": [
|
||||
"UVMap"
|
||||
],
|
||||
"color_attributes": [],
|
||||
"active_color": null,
|
||||
"custom_normals": false,
|
||||
"normals_unit_length": true,
|
||||
"bad_normals": 0,
|
||||
"degenerate_triangles": 0,
|
||||
"shape_keys": 0,
|
||||
"skinned": true,
|
||||
"scale": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"bounds_unity": {
|
||||
"min": [
|
||||
-0.7708,
|
||||
0.0013,
|
||||
-0.3483
|
||||
],
|
||||
"max": [
|
||||
0.7704,
|
||||
1.3492,
|
||||
0.3448
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"armatures": {
|
||||
"SchlackenwachtRig": {
|
||||
"bones": [
|
||||
"Root",
|
||||
"Hips",
|
||||
"Spine02",
|
||||
"Spine01",
|
||||
"Spine",
|
||||
"neck",
|
||||
"Head",
|
||||
"head_end",
|
||||
"headfront",
|
||||
"LeftShoulder",
|
||||
"LeftArm",
|
||||
"LeftForeArm",
|
||||
"LeftHand",
|
||||
"RightShoulder",
|
||||
"RightArm",
|
||||
"RightForeArm",
|
||||
"RightHand",
|
||||
"LeftUpLeg",
|
||||
"LeftLeg",
|
||||
"LeftFoot",
|
||||
"LeftToeBase",
|
||||
"RightUpLeg",
|
||||
"RightLeg",
|
||||
"RightFoot",
|
||||
"RightToeBase"
|
||||
],
|
||||
"roots": [
|
||||
"Root"
|
||||
]
|
||||
}
|
||||
},
|
||||
"empties": {},
|
||||
"bounds_unity": {
|
||||
"min": [
|
||||
-0.7712,
|
||||
-0.0,
|
||||
-0.3494
|
||||
],
|
||||
"max": [
|
||||
0.7719,
|
||||
1.35,
|
||||
0.3448
|
||||
]
|
||||
},
|
||||
"clips": [
|
||||
{
|
||||
"name": "ability",
|
||||
"frames": [
|
||||
0.0,
|
||||
29.0
|
||||
],
|
||||
"seconds": 1.2083,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.7292
|
||||
},
|
||||
{
|
||||
"name": "attack_a",
|
||||
"frames": [
|
||||
0.0,
|
||||
25.0
|
||||
],
|
||||
"seconds": 1.0417,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.4051
|
||||
},
|
||||
{
|
||||
"name": "attack_b",
|
||||
"frames": [
|
||||
0.0,
|
||||
24.0
|
||||
],
|
||||
"seconds": 1.0,
|
||||
"loop": false,
|
||||
"contact_seconds": 0.4737
|
||||
},
|
||||
{
|
||||
"name": "death",
|
||||
"frames": [
|
||||
0.0,
|
||||
53.0
|
||||
],
|
||||
"seconds": 2.2083,
|
||||
"loop": false,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
{
|
||||
"name": "hit",
|
||||
"frames": [
|
||||
0.0,
|
||||
12.0
|
||||
],
|
||||
"seconds": 0.5,
|
||||
"loop": false,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
{
|
||||
"name": "idle",
|
||||
"frames": [
|
||||
0.0,
|
||||
96.0
|
||||
],
|
||||
"seconds": 4.0,
|
||||
"loop": true,
|
||||
"contact_seconds": -1.0
|
||||
},
|
||||
{
|
||||
"name": "walk",
|
||||
"frames": [
|
||||
0.0,
|
||||
67.0
|
||||
],
|
||||
"seconds": 2.7917,
|
||||
"loop": true,
|
||||
"contact_seconds": -1.0
|
||||
}
|
||||
],
|
||||
"expected_from_godot": {
|
||||
"triangles": 25142,
|
||||
"bones": 25,
|
||||
"clips": [
|
||||
"idle",
|
||||
"walk",
|
||||
"attack_a",
|
||||
"attack_b",
|
||||
"hit",
|
||||
"ability",
|
||||
"death"
|
||||
]
|
||||
},
|
||||
"meshes_with_ngons": {},
|
||||
"meshes_without_uv": [],
|
||||
"triangles": 25142,
|
||||
"fbx": "Assets/Luneraria/Art/Characters/schlackenwacht.fbx",
|
||||
"fbx_bytes": 3268972,
|
||||
"ok": true
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0f53dcc00c3204eac85646a59078a8ab
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Luneraria/Art/Characters/schlackenwacht.fbx
Normal file
337
Assets/Luneraria/Art/Characters/schlackenwacht.fbx.meta
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2a144fe945cf34c34a772171ca5034b1
|
||||
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: SchlackenwachtRig|ability
|
||||
internalID: -2819347402722904307
|
||||
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: SchlackenwachtRig|attack_a
|
||||
internalID: -2160549880674491451
|
||||
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: SchlackenwachtRig|attack_b
|
||||
internalID: 1691568016936313399
|
||||
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: SchlackenwachtRig|death
|
||||
internalID: -3430208740213216668
|
||||
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: SchlackenwachtRig|hit
|
||||
internalID: 8885316420147508437
|
||||
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: SchlackenwachtRig|idle
|
||||
internalID: -8816640959135819507
|
||||
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: SchlackenwachtRig|walk
|
||||
internalID: 8832924848793141138
|
||||
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:
|
||||
- 0.25
|
||||
- 0.01
|
||||
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:
|
||||
246
Assets/Luneraria/Art/Generated/schlackenwacht.controller
Normal file
|
|
@ -0,0 +1,246 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1102 &-8838160751718707870
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: hit
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 8885316420147508437, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1107 &-8381089576625902205
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Base Layer
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 3750168924572829539}
|
||||
m_Position: {x: 200, y: 0, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 8254581820847042861}
|
||||
m_Position: {x: 235, y: 65, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -3559729466661274620}
|
||||
m_Position: {x: 270, y: 130, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -2041191233393395951}
|
||||
m_Position: {x: 305, y: 195, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 3378992907968692340}
|
||||
m_Position: {x: 340, y: 260, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -8838160751718707870}
|
||||
m_Position: {x: 375, y: 325, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -1938754265435173914}
|
||||
m_Position: {x: 410, y: 390, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 3750168924572829539}
|
||||
--- !u!1102 &-3559729466661274620
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: attack_a
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -2160549880674491451, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &-2041191233393395951
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: attack_b
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 1691568016936313399, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &-1938754265435173914
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: walk
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 8832924848793141138, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: schlackenwacht
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters: []
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
m_StateMachine: {fileID: -8381089576625902205}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &3378992907968692340
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: death
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -3430208740213216668, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &3750168924572829539
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: idle
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -8816640959135819507, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &8254581820847042861
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ability
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -2819347402722904307, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 34bd3ea42721340d7a9c58fa3585219a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Luneraria/Art/Textures/ai-schlackenwacht-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 7.7 MiB |
|
|
@ -0,0 +1,117 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d1886f66889cc44a48f85e8a32d9a14b
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Luneraria/Art/Textures/ai-schlackenwacht-normal-2k.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
|
|
@ -0,0 +1,117 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ede0dc2b3ec3b4414aab31f3686c3a13
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 1
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Luneraria/Art/Textures/ai-schlackenwacht-orm-2k.png
Normal file
|
After Width: | Height: | Size: 4 MiB |
117
Assets/Luneraria/Art/Textures/ai-schlackenwacht-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bd929244b68e34f2982ed76fd82236e2
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -189,6 +189,10 @@ MonoBehaviour:
|
|||
Neutral: {fileID: 2100000, guid: d45c0cff6703140e089ea48ed9871dc5, type: 2}
|
||||
Blau: {fileID: 0}
|
||||
Rot: {fileID: 0}
|
||||
- Key: AI_Schlackenwacht
|
||||
Neutral: {fileID: 2100000, guid: 93a8cf8007ee9440bb5da876affb71ff, type: 2}
|
||||
Blau: {fileID: 0}
|
||||
Rot: {fileID: 0}
|
||||
- Key: BB_Basalt
|
||||
Neutral: {fileID: 2100000, guid: 37c64b9b93d784d8ba407e7c9682aae4, type: 2}
|
||||
Blau: {fileID: 0}
|
||||
|
|
|
|||
68
Assets/Luneraria/Materials/Units/AI_Schlackenwacht.mat
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: AI_Schlackenwacht
|
||||
m_Shader: {fileID: 4800000, guid: 9809bd5750e264586bd30e14a6f1bd4e, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 0
|
||||
m_EnableInstancingVariants: 1
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _AlbedoMap:
|
||||
m_Texture: {fileID: 2800000, guid: d1886f66889cc44a48f85e8a32d9a14b, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMap:
|
||||
m_Texture: {fileID: 2800000, guid: ede0dc2b3ec3b4414aab31f3686c3a13, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OrmMap:
|
||||
m_Texture: {fileID: 2800000, guid: bd929244b68e34f2982ed76fd82236e2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _StoneMap:
|
||||
m_Texture: {fileID: 2800000, guid: 2e11a30a0df8143ab84722ec0a116b6d, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _Cull: 2
|
||||
- _Energy: 1
|
||||
- _Flicker: 0
|
||||
- _Glow: 1.25
|
||||
- _Metallic: 1
|
||||
- _Mode: 0
|
||||
- _NormalStrength: 1
|
||||
- _ObjectSpace: 0
|
||||
- _Quality: 1
|
||||
- _Relief: 0.016
|
||||
- _Rim: 0.35
|
||||
- _Roughness: 1
|
||||
- _Seed: 0
|
||||
- _ShadowNormalScale: 0
|
||||
- _StoneScale: 1
|
||||
- _UvMaps: 1
|
||||
- _VertexColor: 0
|
||||
m_Colors:
|
||||
- _AlbedoMean: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _OrmMean: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RimColor: {r: 0.8, g: 0.86, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 93a8cf8007ee9440bb5da876affb71ff
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -59,8 +59,8 @@ MonoBehaviour:
|
|||
Prefab: {fileID: 919132149155446097, guid: 0c290acf657e14113bb202a836b03242, type: 3}
|
||||
Controller: {fileID: 9100000, guid: c833b53f8efae4cbe8d914eebcba8ceb, type: 2}
|
||||
- Id: g03
|
||||
Prefab: {fileID: 919132149155446097, guid: 183642226901e400bb094ee9249d9cd2, type: 3}
|
||||
Controller: {fileID: 0}
|
||||
Prefab: {fileID: 919132149155446097, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
Controller: {fileID: 9100000, guid: 34bd3ea42721340d7a9c58fa3585219a, type: 2}
|
||||
- Id: g04
|
||||
Prefab: {fileID: 919132149155446097, guid: 841c5b5333cc141a6bde6c22d3dc2884, type: 3}
|
||||
Controller: {fileID: 9100000, guid: ec68488f0997c4a8185eea30724740ff, type: 2}
|
||||
|
|
@ -193,6 +193,9 @@ MonoBehaviour:
|
|||
- Id: schlackenklaue
|
||||
Prefab: {fileID: 919132149155446097, guid: 0c290acf657e14113bb202a836b03242, type: 3}
|
||||
Controller: {fileID: 9100000, guid: c833b53f8efae4cbe8d914eebcba8ceb, type: 2}
|
||||
- Id: schlackenwacht
|
||||
Prefab: {fileID: 919132149155446097, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
|
||||
Controller: {fileID: 9100000, guid: 34bd3ea42721340d7a9c58fa3585219a, type: 2}
|
||||
- Id: schlundkrone
|
||||
Prefab: {fileID: 919132149155446097, guid: b2dd57798499c4b7b8698ee56e676c45, type: 3}
|
||||
Controller: {fileID: 9100000, guid: 55d11e29be0134459bf261f2dad38f33, type: 2}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace Luneraria.UI.Tests
|
|||
/// the preview rebuild. A capture tool, not part of the suite:
|
||||
/// -testFilter "Luneraria.UI.Tests.FigureViewsTests"; LUNE_EVIDENCE names the folder below
|
||||
/// docs/port/screenshots (default u5.5/spiel). LUNE_FIGURE names another Glutpakt troop
|
||||
/// (default g01); an upgraded troop (g02) is bought as its base and upgraded.
|
||||
/// (default g01); an upgraded troop (g02, g04, ...) is bought as its base and upgraded.
|
||||
/// </summary>
|
||||
[Explicit("Bildwerkzeug: nur gezielt per -testFilter")]
|
||||
public sealed class FigureViewsTests
|
||||
|
|
@ -57,7 +57,9 @@ namespace Luneraria.UI.Tests
|
|||
string figure = Environment.GetEnvironmentVariable("LUNE_FIGURE");
|
||||
if (string.IsNullOrEmpty(figure))
|
||||
figure = "g01";
|
||||
bool upgrade = figure != "g01";
|
||||
// An upgraded troop has a base troop whose upgrade it is.
|
||||
string baseId = ContentData.Units.Keys.FirstOrDefault(id => DataCatalog.UpgradeOf(id) == figure);
|
||||
bool upgrade = baseId != null;
|
||||
var s = new HudSession();
|
||||
yield return s.Open(1920, 1080, seed: 4, bunds: Bunds);
|
||||
s.Match.RoundNumber = 3;
|
||||
|
|
@ -65,10 +67,10 @@ namespace Luneraria.UI.Tests
|
|||
yield return s.Starter();
|
||||
s.Leave();
|
||||
for (int i = 0; i < 4; i++)
|
||||
Send(s, Command.Buy("g01", s.Me.Lane));
|
||||
Send(s, Command.Buy(upgrade ? baseId : figure, s.Me.Lane));
|
||||
if (upgrade)
|
||||
{
|
||||
foreach (RosterEntry entry in s.Me.Draft.Roster.Where(e => e.TypeId == "g01").ToList())
|
||||
foreach (RosterEntry entry in s.Me.Draft.Roster.Where(e => e.TypeId == baseId).ToList())
|
||||
Send(s, Command.Upgrade(entry.Uid));
|
||||
}
|
||||
yield return new WaitForSecondsRealtime(.4f);
|
||||
|
|
|
|||
BIN
assets-source/meshy/g03/schlackenwacht-animationen.glb
Normal file
BIN
assets-source/meshy/g03/schlackenwacht-konzept.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets-source/meshy/g03/schlackenwacht-skelett.glb
Normal file
|
|
@ -152,6 +152,17 @@ Hinweis: Die Projektdateien des .NET-Harness (`tools/dotnet/*/*.csproj`) fehlten
|
|||
| Bild | `screenshots/u5.5-g02/` |
|
||||
| Commits | `luneraria/u5.5-g02` |
|
||||
|
||||
## U5.5 · Schlackenwacht (g03)
|
||||
|
||||
| Punkt | Ergebnis |
|
||||
| --- | --- |
|
||||
| Tests | EditMode 29/29, PlayMode 14/14 (Verify A–I 718/0), Player-Selbsttest 30/30, Asset-Prüfung 20/0 |
|
||||
| Parität | Fingerabdrücke unverändert (`DCE95C96556F3A1A`, `7B8E43AEFC0D60C5`) |
|
||||
| Inhalt | Meshy-Figur für `g03` mit Lane-Fassung, 68 Credits |
|
||||
| Leistung | Stresstest 35 Schlackenwachten: Mid 161,9 → 148,5 fps, Karte 124,5 → 124,5 fps. Rohdaten `logs/u5.5-g03/` |
|
||||
| Bild | `screenshots/u5.5-g03/` |
|
||||
| Commits | `luneraria/u5.5-g03` |
|
||||
|
||||
## Ausblick
|
||||
|
||||
Der Pilot entscheidet über eine Serie weiterer Meshy-Figuren (Kosten je Figur, Lizenz, Stilgleichheit). Offen bleiben außerdem Künstler-Sculpts für Anatomie/Gesicht/Haar, LOD und Material-Atlanten sowie die Build-Module für Windows und Linux.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Port-Status · Champions of Luneraria in Unity
|
||||
|
||||
Stand: 9. Oktober 2026 (U5.5, zweite Figur).
|
||||
Stand: 9. Oktober 2026 (U5.5, dritte Figur).
|
||||
|
||||
Referenz ist der Godot-Stand `luneraria/g3` (`1b540f2`) in `../saumwacht-godot`; er wird nicht mehr verändert. Engine: Unity 6.3 LTS (6000.3.20f1), Renderer URP. HDRP ist ausgeschlossen, bis ein Vergleich mit einer echten Szene etwas anderes nahelegt.
|
||||
|
||||
|
|
@ -13,7 +13,7 @@ Zielplattformen sind Fedora 44 und Windows 11; macOS ist die Entwicklungsplattfo
|
|||
| U2 · Unity-Spielwelt | **fertig**: U2A Blender→FBX-Pipeline (9 Assets geprüft), U2B G1-Karte mit Materialsystem, U2C fester Takt und Ansichten (bildratenunabhängig nachgewiesen), U2D vollständige Bot-Partien sichtbar und gleich dem Kern; danach Batch-Import aller 86 Modelle, Einheiten mit eigenen Modellen | [U2-WORLD.md](U2-WORLD.md) |
|
||||
| U3 · G3-HUD portieren | **fertig** (`luneraria/u3`): UI Toolkit, Sichtmodell mit Privatsphäre, menschlicher Sitz, alle HUD-Bereiche, Eingabe und Befehle, Prüfung 718/0, 14 G3-Motive, Spieltest, Leistung mit HUD | [U3-UI.md](U3-UI.md) |
|
||||
| U4 · Netzwerk | **fertig** (`luneraria/u4` = `769e622`): LuneSession (Protokoll 4), TCP-Transport, Startbildschirm Host/Join, 43+12 Prüfungen, Mindestumfang M4. Nachtrag (`luneraria/u4-nachtrag`, in U5.3 zusammengeführt): Startbildschirm in der Szene, „Menü“ führt dorthin zurück | [U4-NETWORK.md](U4-NETWORK.md) |
|
||||
| U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) | **fertig** (`luneraria/u5` = `2c1686b`, Stufen `luneraria/u5.2`): 6 PBR-Sätze, Surface-Shader mit Albedo/Normal/ORM, Stufen Lane/Rand, Hit- und Turm-VFX, 133/180 fps. **U5.3** (`luneraria/u5.3` = `07fa457`): Gebäude, Boss und Ringborkes Rinde auf PBR (11 Sätze); Bildfehler aus U5 behoben (doppelte Einfärbung, Datenkarten als sRGB, Streifen, bleichender Treffer-Flash, Nebel), Helligkeit und Grün wieder auf U3-Niveau **U5.4** (`luneraria/u5.4` = `4883d95`): Surface-Materialien für alle 146 Figurenmaterialien (Metalle metallisch, Randlicht, Struktur in den Porträts), SSAO (abschaltbar), Leistung −13 % Karte / −16 % Mid **U5.5-pilot** (`luneraria/u5.5-pilot` = `c386206`): Meshy-Figur für den Kohlenbeißer `g01` (Pipeline `tools/meshy/`, UV-Material mit Lava-Glut, Schatten ohne Normalen-Versatz), GPU-Batched-Skinning, Figuren-Stress −21 % Mid / −13 % Karte gegenüber Phase-4; **Lane-Fassung** (`luneraria/u5.5-lod`): 5.000-Dreiecke-LOD, Abstand −10 % Mid / −2 % Karte; **Schlackenklaue** `g02` (`luneraria/u5.5-g02`) als zweite Meshy-Figur, −11 % Mid / −1 % Karte | [U5-VISUAL.md](U5-VISUAL.md) |
|
||||
| U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) | **fertig** (`luneraria/u5` = `2c1686b`, Stufen `luneraria/u5.2`): 6 PBR-Sätze, Surface-Shader mit Albedo/Normal/ORM, Stufen Lane/Rand, Hit- und Turm-VFX, 133/180 fps. **U5.3** (`luneraria/u5.3` = `07fa457`): Gebäude, Boss und Ringborkes Rinde auf PBR (11 Sätze); Bildfehler aus U5 behoben (doppelte Einfärbung, Datenkarten als sRGB, Streifen, bleichender Treffer-Flash, Nebel), Helligkeit und Grün wieder auf U3-Niveau **U5.4** (`luneraria/u5.4` = `4883d95`): Surface-Materialien für alle 146 Figurenmaterialien (Metalle metallisch, Randlicht, Struktur in den Porträts), SSAO (abschaltbar), Leistung −13 % Karte / −16 % Mid **U5.5-pilot** (`luneraria/u5.5-pilot` = `c386206`): Meshy-Figur für den Kohlenbeißer `g01` (Pipeline `tools/meshy/`, UV-Material mit Lava-Glut, Schatten ohne Normalen-Versatz), GPU-Batched-Skinning, Figuren-Stress −21 % Mid / −13 % Karte gegenüber Phase-4; **Lane-Fassung** (`luneraria/u5.5-lod`): 5.000-Dreiecke-LOD, Abstand −10 % Mid / −2 % Karte; **Schlackenklaue** `g02` (`luneraria/u5.5-g02`) als zweite Meshy-Figur, −11 % Mid / −1 % Karte; **Schlackenwacht** `g03` (`luneraria/u5.5-g03`), −8 % Mid / 0 % Karte | [U5-VISUAL.md](U5-VISUAL.md) |
|
||||
|
||||
QA je Meilenstein: [PORT-QA.md](PORT-QA.md).
|
||||
|
||||
|
|
|
|||
|
|
@ -476,3 +476,21 @@ Wie beim Kohlenbeißer bleibt in der Nahansicht der Animator als Mehrkosten (Hau
|
|||
### Repository
|
||||
|
||||
Je Figur rund 40 MB: Lieferungen 21 MB (`assets-source/meshy/g02/`), Texturen 18 MB, FBX 3 MB. Für die übrigen Figuren ist Git LFS weiter offen.
|
||||
|
||||
## U5.5 · Dritte Figur: Schlackenwacht (g03)
|
||||
|
||||
Stand 9. Oktober 2026, Zweig `luneraria/u5.5-g03` (auf `luneraria/u5.5-g02`). Der Tank der Glutpakt, gleicher Ablauf wie bei der Schlackenklaue: ein Konzeptbild aus Icon, Phase-4-Bild und Kohlenbeißer-Konzept als Stilvorlage (12 Credits), Modell (30), Skelett mit 1,35 m (5), sieben Bewegungen (21), zusammen **68 Credits**.
|
||||
|
||||
- Entwurf: Der ganze Oberkörper ist eine Basalt-Schildplatte mit Goldrahmen und einem glühenden Lavaschlitz, ohne eigenen Kopf; große Steinfäuste mit Goldbändern. Das Auto-Rigging kam mit der kopflosen Form zurecht.
|
||||
- `schlackenwacht.fbx`: 20.145 + 4.997 Dreiecke, 25 Knochen; Export 23 Prüfungen, bytegleich wiederholbar. Glut nur im Schlitz (0,9 % der Textur). Manifest `"replaces": "g03"`.
|
||||
- `FigureViewsTests` (`LUNE_FIGURE`) erkennt jetzt selbst, ob eine Truppe gekauft oder aus ihrer Grundform aufgewertet wird.
|
||||
|
||||
| Test | Ergebnis |
|
||||
| --- | --- |
|
||||
| EditMode / PlayMode | 29/29, 14/14, Verify A–I 718/0 |
|
||||
| Fingerabdrücke | `DCE95C96556F3A1A`, `7B8E43AEFC0D60C5`, unverändert |
|
||||
| Asset-Prüfung / Player-Selbsttest | 20/0, 30/30 |
|
||||
|
||||
Stresstest mit 35 Schlackenwachten, je drei Läufe (`logs/u5.5-g03/`): Mid-Lane nah 161,9 → 148,5 fps (−8 %), Karte 124,5 → 124,5 fps (0 %). Bilder: `screenshots/u5.5-g03/` (Figur, vorher/nachher im Spiel, Übersichten, Kampfmomente).
|
||||
|
||||
Bekannt: In der Leerlaufhaltung neigt sich die Schildplatte mit der Kopfbewegung der Bibliotheksbewegung leicht nach vorn.
|
||||
|
|
|
|||
|
|
@ -1972,6 +1972,173 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "schlackenwacht",
|
||||
"kind": "skinned",
|
||||
"ok": true,
|
||||
"checks": [
|
||||
{
|
||||
"check": "blender_checks_passed",
|
||||
"ok": true,
|
||||
"detail": ""
|
||||
},
|
||||
{
|
||||
"check": "imported",
|
||||
"ok": true,
|
||||
"detail": "\"Assets/Luneraria/Art/Characters/schlackenwacht.fbx\""
|
||||
},
|
||||
{
|
||||
"check": "import_rules_applied",
|
||||
"ok": true,
|
||||
"detail": ""
|
||||
},
|
||||
{
|
||||
"check": "root_transform_identity",
|
||||
"ok": true,
|
||||
"detail": "\"schlackenwacht pos (0.0000, 0.0000, 0.0000) rot (0.00, 0.00, 0.00) scale (1.0000, 1.0000, 1.0000)\""
|
||||
},
|
||||
{
|
||||
"check": "node_transforms_axis_clean",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "mesh_names",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "triangles",
|
||||
"ok": true,
|
||||
"detail": "\"25142 unity / 25142 blender \""
|
||||
},
|
||||
{
|
||||
"check": "material_slots",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "normals_unit_length",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "tangents_where_uv",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "uvs_where_blender_has_uv",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "vertex_colors",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "bounds_axes_scale",
|
||||
"ok": true,
|
||||
"detail": "\"largest difference 0.00003 m; unity (-0.771, 0.000, -0.349) (0.772, 1.350, 0.345)\""
|
||||
},
|
||||
{
|
||||
"check": "skinned_mesh",
|
||||
"ok": true,
|
||||
"detail": "2"
|
||||
},
|
||||
{
|
||||
"check": "bone_names SchlackenwachtBody_LOD0",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "root_bone SchlackenwachtBody_LOD0",
|
||||
"ok": true,
|
||||
"detail": "\"Root\""
|
||||
},
|
||||
{
|
||||
"check": "bone_names SchlackenwachtBody_LOD1",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
},
|
||||
{
|
||||
"check": "root_bone SchlackenwachtBody_LOD1",
|
||||
"ok": true,
|
||||
"detail": "\"Root\""
|
||||
},
|
||||
{
|
||||
"check": "generic_avatar",
|
||||
"ok": true,
|
||||
"detail": "\"schlackenwachtAvatar\""
|
||||
},
|
||||
{
|
||||
"check": "clips",
|
||||
"ok": true,
|
||||
"detail": "[]"
|
||||
}
|
||||
],
|
||||
"facts": {
|
||||
"triangles": 25142,
|
||||
"renderers": 2,
|
||||
"meshes_without_uv_and_tangents": 0,
|
||||
"degenerate_triangles_dropped": 0,
|
||||
"bounds_min": [
|
||||
-0.771205068,
|
||||
-2.109984E-07,
|
||||
-0.349420339
|
||||
],
|
||||
"bounds_max": [
|
||||
0.77192533,
|
||||
1.35,
|
||||
0.3447837
|
||||
],
|
||||
"clips": [
|
||||
{
|
||||
"name": "ability",
|
||||
"length": 1.20833337,
|
||||
"loop": false,
|
||||
"events": 1
|
||||
},
|
||||
{
|
||||
"name": "attack_a",
|
||||
"length": 1.04166663,
|
||||
"loop": false,
|
||||
"events": 1
|
||||
},
|
||||
{
|
||||
"name": "attack_b",
|
||||
"length": 1.0,
|
||||
"loop": false,
|
||||
"events": 1
|
||||
},
|
||||
{
|
||||
"name": "death",
|
||||
"length": 2.20833325,
|
||||
"loop": false,
|
||||
"events": 0
|
||||
},
|
||||
{
|
||||
"name": "hit",
|
||||
"length": 0.5,
|
||||
"loop": false,
|
||||
"events": 0
|
||||
},
|
||||
{
|
||||
"name": "idle",
|
||||
"length": 4.0,
|
||||
"loop": true,
|
||||
"events": 0
|
||||
},
|
||||
{
|
||||
"name": "walk",
|
||||
"length": 2.79166675,
|
||||
"loop": true,
|
||||
"events": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "schlundkrone",
|
||||
"kind": "skinned",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2448, "fps": 122.3, "frame_ms_avg": 8.17, "frame_ms_median": 3.40, "frame_ms_p95": 24.60, "frame_ms_p99": 32.39, "frame_ms_max": 45.40, "frames_over_16_7_ms": 418, "of_them_with_simulation_step": 33, "gc_collections": 22, "simulation_ms_per_frame": 0.085, "views_ms_per_frame": 0.220, "ui_ms_per_frame": 0.077, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.64 / median 2.52 / p95 3.69 ms, render thread avg 1.89 / median 1.87 / p95 2.30 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.53 / median 0.22 / p95 21.95 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1478, "fps": 147.3, "frame_ms_avg": 6.79, "frame_ms_median": 3.00, "frame_ms_p95": 22.06, "frame_ms_p99": 30.91, "frame_ms_max": 38.00, "frames_over_16_7_ms": 169, "of_them_with_simulation_step": 18, "gc_collections": 10, "simulation_ms_per_frame": 0.047, "views_ms_per_frame": 0.190, "ui_ms_per_frame": 0.061, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 2.05 / median 1.98 / p95 2.99 ms, render thread avg 1.41 / median 1.41 / p95 1.64 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.73 / median 0.19 / p95 20.06 ms
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2516, "fps": 125.8, "frame_ms_avg": 7.95, "frame_ms_median": 3.19, "frame_ms_p95": 26.01, "frame_ms_p99": 32.62, "frame_ms_max": 38.90, "frames_over_16_7_ms": 432, "of_them_with_simulation_step": 34, "gc_collections": 23, "simulation_ms_per_frame": 0.083, "views_ms_per_frame": 0.206, "ui_ms_per_frame": 0.073, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.53 / median 2.41 / p95 3.50 ms, render thread avg 1.85 / median 1.83 / p95 2.21 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.40 / median 0.22 / p95 23.44 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1489, "fps": 148.8, "frame_ms_avg": 6.72, "frame_ms_median": 3.01, "frame_ms_p95": 22.61, "frame_ms_p99": 30.49, "frame_ms_max": 37.31, "frames_over_16_7_ms": 167, "of_them_with_simulation_step": 11, "gc_collections": 9, "simulation_ms_per_frame": 0.047, "views_ms_per_frame": 0.189, "ui_ms_per_frame": 0.058, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 2.03 / median 1.92 / p95 2.89 ms, render thread avg 1.40 / median 1.40 / p95 1.61 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.70 / median 0.28 / p95 20.49 ms
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2512, "fps": 125.5, "frame_ms_avg": 7.97, "frame_ms_median": 3.39, "frame_ms_p95": 25.59, "frame_ms_p99": 33.29, "frame_ms_max": 42.51, "frames_over_16_7_ms": 430, "of_them_with_simulation_step": 43, "gc_collections": 22, "simulation_ms_per_frame": 0.085, "views_ms_per_frame": 0.211, "ui_ms_per_frame": 0.074, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.57 / median 2.44 / p95 3.63 ms, render thread avg 1.86 / median 1.83 / p95 2.24 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.39 / median 0.25 / p95 23.14 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1495, "fps": 149.5, "frame_ms_avg": 6.69, "frame_ms_median": 2.91, "frame_ms_p95": 22.99, "frame_ms_p99": 30.00, "frame_ms_max": 36.51, "frames_over_16_7_ms": 163, "of_them_with_simulation_step": 16, "gc_collections": 10, "simulation_ms_per_frame": 0.047, "views_ms_per_frame": 0.191, "ui_ms_per_frame": 0.060, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 2.05 / median 1.97 / p95 2.90 ms, render thread avg 1.42 / median 1.41 / p95 1.64 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.65 / median 0.19 / p95 21.06 ms
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2476, "fps": 123.8, "frame_ms_avg": 8.08, "frame_ms_median": 3.30, "frame_ms_p95": 24.91, "frame_ms_p99": 32.32, "frame_ms_max": 48.59, "frames_over_16_7_ms": 414, "of_them_with_simulation_step": 25, "gc_collections": 22, "simulation_ms_per_frame": 0.087, "views_ms_per_frame": 0.210, "ui_ms_per_frame": 0.075, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.51 / median 2.38 / p95 3.66 ms, render thread avg 1.94 / median 1.90 / p95 2.40 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.58 / median 0.37 / p95 22.63 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1580, "fps": 158.0, "frame_ms_avg": 6.33, "frame_ms_median": 2.91, "frame_ms_p95": 21.41, "frame_ms_p99": 28.31, "frame_ms_max": 39.58, "frames_over_16_7_ms": 151, "of_them_with_simulation_step": 11, "gc_collections": 10, "simulation_ms_per_frame": 0.048, "views_ms_per_frame": 0.198, "ui_ms_per_frame": 0.061, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 1.97 / median 1.82 / p95 3.10 ms, render thread avg 1.39 / median 1.37 / p95 1.67 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.34 / median 0.26 / p95 18.91 ms
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2498, "fps": 124.9, "frame_ms_avg": 8.01, "frame_ms_median": 3.21, "frame_ms_p95": 26.01, "frame_ms_p99": 33.11, "frame_ms_max": 41.71, "frames_over_16_7_ms": 442, "of_them_with_simulation_step": 39, "gc_collections": 22, "simulation_ms_per_frame": 0.082, "views_ms_per_frame": 0.201, "ui_ms_per_frame": 0.071, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.41 / median 2.27 / p95 3.49 ms, render thread avg 1.88 / median 1.83 / p95 2.40 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.60 / median 0.40 / p95 23.74 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1651, "fps": 164.9, "frame_ms_avg": 6.06, "frame_ms_median": 2.78, "frame_ms_p95": 20.42, "frame_ms_p99": 27.80, "frame_ms_max": 36.00, "frames_over_16_7_ms": 155, "of_them_with_simulation_step": 11, "gc_collections": 10, "simulation_ms_per_frame": 0.045, "views_ms_per_frame": 0.178, "ui_ms_per_frame": 0.050, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 1.74 / median 1.67 / p95 2.59 ms, render thread avg 1.32 / median 1.31 / p95 1.53 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.32 / median 0.64 / p95 18.73 ms
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"vsync": 0,
|
||||
"match": "seed 9 from round 5, army g03 x36, speed 1x, measured after 10 s of combat",
|
||||
// moving units at the start of the first window: g03 35, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
|
||||
"windows": [
|
||||
{"view": "overview (zoom 64)", "frames": 2495, "fps": 124.7, "frame_ms_avg": 8.02, "frame_ms_median": 3.38, "frame_ms_p95": 26.12, "frame_ms_p99": 32.49, "frame_ms_max": 47.91, "frames_over_16_7_ms": 431, "of_them_with_simulation_step": 36, "gc_collections": 22, "simulation_ms_per_frame": 0.086, "views_ms_per_frame": 0.203, "ui_ms_per_frame": 0.075, "units_alive_max": 97},
|
||||
// timings overview (zoom 64): main thread avg 2.44 / median 2.29 / p95 3.63 ms, render thread avg 1.91 / median 1.87 / p95 2.40 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.57 / median 0.42 / p95 23.79 ms
|
||||
{"view": "mid lane close (zoom 22)", "frames": 1628, "fps": 162.8, "frame_ms_avg": 6.14, "frame_ms_median": 2.85, "frame_ms_p95": 20.70, "frame_ms_p99": 29.81, "frame_ms_max": 38.51, "frames_over_16_7_ms": 141, "of_them_with_simulation_step": 15, "gc_collections": 10, "simulation_ms_per_frame": 0.048, "views_ms_per_frame": 0.186, "ui_ms_per_frame": 0.055, "units_alive_max": 46}
|
||||
// timings mid lane close (zoom 22): main thread avg 1.86 / median 1.77 / p95 2.79 ms, render thread avg 1.32 / median 1.31 / p95 1.54 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.28 / median 0.50 / p95 18.84 ms
|
||||
]
|
||||
}
|
||||
11
docs/port/logs/u5.5-g03/player-smoke.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"build": "OSXPlayer player, 6000.3.20f1, release",
|
||||
"device": "Mac17,2; Apple M5; Apple M5",
|
||||
"graphics_api": "Metal",
|
||||
"resolution": "1920x1080",
|
||||
"seconds": 11.6,
|
||||
"passed": ["Startbildschirm sichtbar", "Partie wartet: Spielcontroller und Treiber aus", "vor dem Start kein HUD", "„Allein spielen“ bedienbar", "Offline: Startbildschirm verborgen", "Offline: Spielcontroller und Treiber laufen", "Offline: HUD sichtbar", "Offline: neue Partie, Sitz 1 (Mid)", "Offline: Planung", "Offline: lokale Sitzung", "„Startaufstellung“ bedienbar", "Startaufstellung gekauft (3 Einheiten)", "„Bereit“ bedienbar", "Bereit: Kampf beginnt", "Kampf: Figuren im Feld", "„Menü“ bedienbar", "Verlassen-Dialog mit „Zum Menü“", "Zurück: Startbildschirm sichtbar", "Zurück: HUD verborgen", "Zurück: Spielcontroller und Treiber aus", "Zurück: Sitzung beendet", "Zurück: keine Figuren im Feld", "Zurück: Kamera ruht", "Zurück: „Allein spielen“ bedienbar", "Zweite Partie: Startbildschirm verborgen, HUD sichtbar", "Zweite Partie: neue Partie in der Planung", "SSAO folgt der Einstellung", "Option „Umgebungsverdeckung“ sichtbar", "Option schaltet SSAO um", "Option stellt SSAO zurück"],
|
||||
"failed": [],
|
||||
"photos": ["00-startbildschirm.jpg", "01-planung.jpg", "02-kampf.jpg", "03-verlassen.jpg", "04-zurueck-im-startbildschirm.jpg", "05-zweite-partie.jpg", "06-optionen.jpg"],
|
||||
"result": "PASS"
|
||||
}
|
||||
11
docs/port/logs/u5.5-g03/scene-frame-rates.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"match": "seed 2, bots, speed 24x",
|
||||
"core_hash": "DCE95C96556F3A1A",
|
||||
"core_steps": 12690,
|
||||
"runs": [
|
||||
{"target": "30 fps", "frames": 816, "seconds": 27.187, "measured_fps": 30.015, "max_steps_per_frame": 17, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||
{"target": "60 fps", "frames": 1625, "seconds": 27.083, "measured_fps": 60.001, "max_steps_per_frame": 16, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||
{"target": "120 fps", "frames": 3225, "seconds": 26.903, "measured_fps": 119.874, "max_steps_per_frame": 6, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||
{"target": "unlimited", "frames": 85071, "seconds": 26.829, "measured_fps": 3170.854, "max_steps_per_frame": 6, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true}
|
||||
]
|
||||
}
|
||||
16
docs/port/logs/u5.5-g03/vertical-function-test.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"runs": [
|
||||
{"label": "match-seed2", "seed": 2, "start_round": 1, "extra_gold": 0, "speed": 6, "winner": 1, "end_note": "Ancient von Blau zerstört.", "steps": 12690, "hash": "DCE95C96556F3A1A", "core_hash": "DCE95C96556F3A1A", "same_as_core": true,
|
||||
"units_alive_max": 84, "heroes_alive_max": 4, "boss_log": ["round 8: won team 1 ", "round 9: deployed team 1 bot"],
|
||||
"rounds": [{"round": 1, "combat_seconds": 44.9, "lost": [], "boss": "none", "end": "cleared"}, {"round": 2, "combat_seconds": 57.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 3, "combat_seconds": 54.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 4, "combat_seconds": 62.9, "lost": [], "boss": "none", "end": "cleared"}, {"round": 5, "combat_seconds": 60.7, "lost": [], "boss": "none", "end": "cleared"}, {"round": 6, "combat_seconds": 62.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 7, "combat_seconds": 66.5, "lost": ["blau_bot_outer"], "boss": "none", "end": "cleared"}, {"round": 8, "combat_seconds": 89.65, "lost": ["rot_top_outer", "rot_top_inner"], "boss": "won", "end": "cleared"}, {"round": 9, "combat_seconds": 136.55, "lost": ["blau_bot_inner", "blau_base_2", "blau_base_1", "blau_ancient"], "boss": "deployed", "end": "core"}],
|
||||
"events": ["round 7: blau_bot_outer destroyed", "round 8: rot_top_outer destroyed", "round 8: rot_top_inner destroyed", "round 8: grotto boss won", "round 9: blau_bot_inner destroyed", "round 9: blau_base_2 destroyed", "round 9: blau_base_1 destroyed", "round 9: blau_ancient destroyed", "round 9: grotto boss deployed"],
|
||||
"shots": ["01-runde1-aufmarsch", "02-runde1-mid-kampf", "03-turm-faellt", "04-turm-ruine", "05-grotte-bosskampf", "06-held-kaempft", "07-boss-auf-der-lane", "08-ancient-faellt", "09-ancient-ruine", "10-ende-uebersicht"],
|
||||
"performance": null},
|
||||
{"label": "match-seed9-round21", "seed": 9, "start_round": 21, "extra_gold": 4000, "speed": 6, "winner": 0, "end_note": "Ancient von Rot zerstört.", "steps": 4195, "hash": "7B8E43AEFC0D60C5", "core_hash": "7B8E43AEFC0D60C5", "same_as_core": true,
|
||||
"units_alive_max": 125, "heroes_alive_max": 6, "boss_log": [],
|
||||
"rounds": [{"round": 21, "combat_seconds": 121.8, "lost": ["rot_mid_outer", "rot_top_outer", "rot_mid_inner"], "boss": "none", "end": "cleared"}, {"round": 22, "combat_seconds": 87.95, "lost": ["rot_top_inner", "rot_base_1", "blau_bot_outer", "rot_base_2", "rot_ancient"], "boss": "none", "end": "core"}],
|
||||
"events": ["round 21: rot_mid_outer destroyed", "round 21: rot_top_outer destroyed", "round 21: rot_mid_inner destroyed", "round 22: rot_top_inner destroyed", "round 22: rot_base_1 destroyed", "round 22: blau_bot_outer destroyed", "round 22: rot_base_2 destroyed", "round 22: rot_ancient destroyed"],
|
||||
"shots": ["11-welle21-uebersicht", "12-welle21-kampf", "13-ancient-rot-faellt", "14-welle-ende"],
|
||||
"performance": {"window": "20 s real time at 1x speed, unlimited frame rate, round 21", "frames": 51551, "fps": 2577.535, "frame_ms_avg": 0.388, "frame_ms_p95": 0.415, "simulation_ms_per_frame": 0.004, "views_ms_per_frame": 0.129, "units_alive_max": 116}}
|
||||
]
|
||||
}
|
||||
BIN
docs/port/screenshots/u5.5-g03/01-runde1-aufmarsch.jpg
Normal file
|
After Width: | Height: | Size: 595 KiB |
BIN
docs/port/screenshots/u5.5-g03/02-runde1-mid-kampf.jpg
Normal file
|
After Width: | Height: | Size: 610 KiB |
BIN
docs/port/screenshots/u5.5-g03/03-turm-faellt.jpg
Normal file
|
After Width: | Height: | Size: 543 KiB |
BIN
docs/port/screenshots/u5.5-g03/04-turm-ruine.jpg
Normal file
|
After Width: | Height: | Size: 535 KiB |
BIN
docs/port/screenshots/u5.5-g03/05-grotte-bosskampf.jpg
Normal file
|
After Width: | Height: | Size: 609 KiB |
BIN
docs/port/screenshots/u5.5-g03/06-held-kaempft.jpg
Normal file
|
After Width: | Height: | Size: 624 KiB |
BIN
docs/port/screenshots/u5.5-g03/07-boss-auf-der-lane.jpg
Normal file
|
After Width: | Height: | Size: 577 KiB |
BIN
docs/port/screenshots/u5.5-g03/08-ancient-faellt.jpg
Normal file
|
After Width: | Height: | Size: 623 KiB |
BIN
docs/port/screenshots/u5.5-g03/09-ancient-ruine.jpg
Normal file
|
After Width: | Height: | Size: 623 KiB |
BIN
docs/port/screenshots/u5.5-g03/10-ende-uebersicht.jpg
Normal file
|
After Width: | Height: | Size: 435 KiB |
BIN
docs/port/screenshots/u5.5-g03/11-welle21-uebersicht.jpg
Normal file
|
After Width: | Height: | Size: 592 KiB |
BIN
docs/port/screenshots/u5.5-g03/12-welle21-kampf.jpg
Normal file
|
After Width: | Height: | Size: 648 KiB |
BIN
docs/port/screenshots/u5.5-g03/13-ancient-rot-faellt.jpg
Normal file
|
After Width: | Height: | Size: 601 KiB |
BIN
docs/port/screenshots/u5.5-g03/14-welle-ende.jpg
Normal file
|
After Width: | Height: | Size: 580 KiB |
BIN
docs/port/screenshots/u5.5-g03/Characters.jpg
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
docs/port/screenshots/u5.5-g03/Units.jpg
Normal file
|
After Width: | Height: | Size: 717 KiB |
BIN
docs/port/screenshots/u5.5-g03/figur/g03.jpg
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
docs/port/screenshots/u5.5-g03/figur/schlackenwacht-attack_a.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
docs/port/screenshots/u5.5-g03/figur/schlackenwacht.jpg
Normal file
|
After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 718 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-nachher/02-portraet.jpg
Normal file
|
After Width: | Height: | Size: 712 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-nachher/03-kampf-nah.jpg
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-nachher/04-kampf-lane.jpg
Normal file
|
After Width: | Height: | Size: 638 KiB |
|
After Width: | Height: | Size: 711 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-vorher/02-portraet.jpg
Normal file
|
After Width: | Height: | Size: 707 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-vorher/03-kampf-nah.jpg
Normal file
|
After Width: | Height: | Size: 641 KiB |
BIN
docs/port/screenshots/u5.5-g03/spiel-vorher/04-kampf-lane.jpg
Normal file
|
After Width: | Height: | Size: 641 KiB |
|
|
@ -1675,6 +1675,51 @@
|
|||
"death"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "schlackenwacht",
|
||||
"group": "Characters",
|
||||
"kind": "skinned",
|
||||
"representative": "U5.5 series: Schlackenwacht (g03) from Meshy (image to 3D, auto rig, library clips)",
|
||||
"source": "tools/meshy/build_figure.py",
|
||||
"source_root": "unity",
|
||||
"generator": {
|
||||
"args": [
|
||||
"tools/meshy/g03/figure.json"
|
||||
],
|
||||
"inputs": [
|
||||
"tools/meshy/g03/figure.json",
|
||||
"assets-source/meshy/g03/schlackenwacht-skelett.glb",
|
||||
"assets-source/meshy/g03/schlackenwacht-animationen.glb"
|
||||
]
|
||||
},
|
||||
"replaces": "g03",
|
||||
"expect": {
|
||||
"triangles": 25142,
|
||||
"bones": 25,
|
||||
"clips": [
|
||||
"idle",
|
||||
"walk",
|
||||
"attack_a",
|
||||
"attack_b",
|
||||
"hit",
|
||||
"ability",
|
||||
"death"
|
||||
]
|
||||
},
|
||||
"rules": {
|
||||
"rest_action": null,
|
||||
"root_bone": "Root",
|
||||
"required_clips": [
|
||||
"idle",
|
||||
"walk",
|
||||
"attack_a",
|
||||
"attack_b",
|
||||
"hit",
|
||||
"ability",
|
||||
"death"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"aliases": {
|
||||
|
|
|
|||
10
tools/meshy/g03/01-konzept.json
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ai_model": "gpt-image-2",
|
||||
"prompt": "Full-body concept of the creature in the first two references for a 3D fantasy strategy game, painted in exactly the same art style and materials as the third reference (a fellow unit of its faction). The Schlackenwacht, a defensive guardian golem: its whole torso is one massive tall slab of black basalt shaped like a tower shield, framed and riveted with worn gold bands, with one narrow vertical slit in the center glowing with molten orange lava; no separate head, the shield slab rises above the shoulders; broad stone shoulder blocks with gold caps, thick stone arms ending in huge blocky fists wrapped in gold bands, short sturdy legs with heavy stone feet. Stylized realism, hand-sculpted detailed forms, chunky readable silhouette. Standing in a symmetric A-pose, front view, arms held away from the body, legs apart, entire figure visible head to feet, centered. Plain light grey background, soft even studio light, no ground shadow, no text.",
|
||||
"aspect_ratio": "1:1",
|
||||
"reference_image_urls": [
|
||||
"@../saumwacht-godot/assets-source/phase3/masters/glutpakt/unit_g03_schlackenwacht_icon.png",
|
||||
"@tools/meshy/g03/ref-g03-phase4.png",
|
||||
"@assets-source/meshy/g01/kohlenbeisser-konzept.png"
|
||||
]
|
||||
}
|
||||
16
tools/meshy/g03/02-modell.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"input_task_id": "01a12135-bc83-718d-9b59-f139b12a7302",
|
||||
"ai_model": "latest",
|
||||
"should_texture": true,
|
||||
"enable_pbr": true,
|
||||
"texture_resolution": "2k",
|
||||
"should_remesh": true,
|
||||
"topology": "triangle",
|
||||
"target_polycount": 20000,
|
||||
"save_pre_remeshed_model": true,
|
||||
"pose_mode": "a-pose",
|
||||
"target_formats": [
|
||||
"glb"
|
||||
],
|
||||
"multi_view_thumbnails": true
|
||||
}
|
||||
4
tools/meshy/g03/03-skelett.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"input_task_id": "01a12136-b052-7687-ac77-b38450da5a1f",
|
||||
"height_meters": 1.35
|
||||
}
|
||||
4
tools/meshy/g03/04-animationen.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"rig_task_id": "01a12138-5b87-7290-b8b6-2d6fdb0f6598",
|
||||
"action_ids": [0, 119, 219, 214, 178, 127, 189]
|
||||
}
|
||||
21
tools/meshy/g03/figure.json
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"id": "schlackenwacht",
|
||||
"replaces": "g03",
|
||||
"rig": "assets-source/meshy/g03/schlackenwacht-skelett.glb",
|
||||
"animations": "assets-source/meshy/g03/schlackenwacht-animationen.glb",
|
||||
"material": "AI_Schlackenwacht",
|
||||
"textures": "Assets/Luneraria/Art/Textures/ai-schlackenwacht",
|
||||
"root_bone": "Root",
|
||||
"glow": {"hue": [0, 42], "saturation": 0.6, "value": 0.5, "metal_below": 0.5},
|
||||
"lod": {"triangles": 5000, "sharp_degrees": 50, "lod0_screen": 0.2},
|
||||
"palette": {"rock": {"color": "41434b", "strength": 0.8}, "metal": {"color": "c99645", "strength": 1.0}},
|
||||
"clips": {
|
||||
"idle": {"source": "Idle", "loop": true},
|
||||
"walk": {"source": "Slow_Orc_Walk", "seconds": 2.8, "loop": true},
|
||||
"attack_a": {"source": "Right_Hand_Sword_Slash", "frames": [0, 36], "seconds": 1.05, "contact_frame": 14},
|
||||
"attack_b": {"source": "Punch_Forward_with_Both_Fists", "frames": [18, 56], "seconds": 1.0, "contact_frame": 36},
|
||||
"hit": {"source": "Hit_Reaction", "frames": [0, 12], "seconds": 0.5},
|
||||
"ability": {"source": "Charged_Ground_Slam", "frames": [6, 64], "seconds": 1.2, "contact_frame": 41},
|
||||
"death": {"source": "dying_backwards"}
|
||||
}
|
||||
}
|
||||
BIN
tools/meshy/g03/ref-g03-phase4.png
Normal file
|
After Width: | Height: | Size: 1 MiB |
20
tools/meshy/g03/tasks/animationen.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"id": "01a12138-e9c2-743c-bcda-02a95b3d7d23",
|
||||
"type": "animate",
|
||||
"name": "",
|
||||
"status": "SUCCEEDED",
|
||||
"created_at": 1791558740707,
|
||||
"progress": 100,
|
||||
"started_at": 1791558740714,
|
||||
"finished_at": 1791558766131,
|
||||
"expires_at": 1791817966131,
|
||||
"task_error": null,
|
||||
"result": {
|
||||
"animation_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-e9c2-743c-bcda-02a95b3d7d23/output/merged_animations.glb",
|
||||
"animation_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-e9c2-743c-bcda-02a95b3d7d23/output/merged_animations.fbx",
|
||||
"processed_usdz_url": "",
|
||||
"processed_armature_fbx_url": "",
|
||||
"processed_animation_fps_fbx_url": ""
|
||||
},
|
||||
"consumed_credits": 21
|
||||
}
|
||||
16
tools/meshy/g03/tasks/konzept.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "01a12135-bc83-718d-9b59-f139b12a7302",
|
||||
"type": "image-to-image",
|
||||
"ai_model": "gpt-image-2",
|
||||
"prompt": "Full-body concept of the creature in the first two references for a 3D fantasy strategy game, painted in exactly the same art style and materials as the third reference (a fellow unit of its faction). The Schlackenwacht, a defensive guardian golem: its whole torso is one massive tall slab of black basalt shaped like a tower shield, framed and riveted with worn gold bands, with one narrow vertical slit in the center glowing with molten orange lava; no separate head, the shield slab rises above the shoulders; broad stone shoulder blocks with gold caps, thick stone arms ending in huge blocky fists wrapped in gold bands, short sturdy legs with heavy stone feet. Stylized realism, hand-sculpted detailed forms, chunky readable silhouette. Standing in a symmetric A-pose, front view, arms held away from the body, legs apart, entire figure visible head to feet, centered. Plain light grey background, soft even studio light, no ground shadow, no text.",
|
||||
"status": "SUCCEEDED",
|
||||
"progress": 100,
|
||||
"created_at": 1791558534447,
|
||||
"started_at": 1791558534457,
|
||||
"finished_at": 1791558572131,
|
||||
"expires_at": 1791817772131,
|
||||
"image_urls": [
|
||||
"https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/uploads/image_01a12135-bc83-718d-9b59-f139b12a7302_0.png"
|
||||
],
|
||||
"consumed_credits": 12
|
||||
}
|
||||
41
tools/meshy/g03/tasks/modell.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"id": "01a12136-b052-7687-ac77-b38450da5a1f",
|
||||
"type": "image-to-3d",
|
||||
"name": "",
|
||||
"art_style": "",
|
||||
"object_prompt": "",
|
||||
"style_prompt": "",
|
||||
"negative_prompt": "",
|
||||
"texture_prompt": "",
|
||||
"texture_image_url": "",
|
||||
"text_style_prompt": "",
|
||||
"image_style_url": "",
|
||||
"status": "SUCCEEDED",
|
||||
"created_at": 1791558595152,
|
||||
"progress": 100,
|
||||
"started_at": 1791558595159,
|
||||
"finished_at": 1791558700924,
|
||||
"expires_at": 1791817900924,
|
||||
"task_error": null,
|
||||
"model_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/model.glb",
|
||||
"model_urls": {
|
||||
"glb": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/model.glb",
|
||||
"pre_remeshed_glb": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/pre_remeshed_model.glb"
|
||||
},
|
||||
"thumbnail_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/preview.png",
|
||||
"thumbnail_urls": {
|
||||
"back": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/preview_back.png",
|
||||
"front": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/preview_front.png",
|
||||
"left": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/preview_left.png",
|
||||
"right": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/preview_right.png"
|
||||
},
|
||||
"texture_urls": [
|
||||
{
|
||||
"base_color": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/texture_0.png",
|
||||
"metallic": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/texture_0_metallic.png",
|
||||
"roughness": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/texture_0_roughness.png",
|
||||
"normal": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12136-b052-7687-ac77-b38450da5a1f/output/texture_0_normal.png"
|
||||
}
|
||||
],
|
||||
"consumed_credits": 30
|
||||
}
|
||||
25
tools/meshy/g03/tasks/skelett.json
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"id": "01a12138-5b87-7290-b8b6-2d6fdb0f6598",
|
||||
"type": "rig",
|
||||
"name": "",
|
||||
"status": "SUCCEEDED",
|
||||
"created_at": 1791558707349,
|
||||
"progress": 100,
|
||||
"started_at": 1791558707356,
|
||||
"finished_at": 1791558724863,
|
||||
"expires_at": 1791817924863,
|
||||
"task_error": null,
|
||||
"result": {
|
||||
"rigged_character_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Character_output.fbx",
|
||||
"rigged_character_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Character_output.glb",
|
||||
"basic_animations": {
|
||||
"walking_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Walking_withSkin.glb",
|
||||
"walking_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Walking_withSkin.fbx",
|
||||
"walking_armature_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Walking_withSkin_armature.glb",
|
||||
"running_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Running_withSkin.glb",
|
||||
"running_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Running_withSkin.fbx",
|
||||
"running_armature_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12138-5b87-7290-b8b6-2d6fdb0f6598/output/Animation_Running_withSkin_armature.glb"
|
||||
}
|
||||
},
|
||||
"consumed_credits": 5
|
||||
}
|
||||