Files
AIGame/Tools/audit_budbud_fbx.py
udxandClaude Opus 5.5 89e0fa246f Add formal enemies, remaining formal partners and synthesized UI SFX
- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to
  buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting.
- Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn):
  Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type
  in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes.
- Formal partners for all ten pets in the arena and portraits, including new
  VineSprite, ThunderLeopard and TideWhale.
- Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands,
  configurable Unity run_script timeout, companion static stage.
- Also includes concurrent work from another tool in this working tree
  (FlameLion, enemy combat FX, challenge mode, home explorer, server updates).
- Resources registered in Doc/ResDesc_*.md; verified on isolated :18081.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:23:55 +08:00

14 lines
825 B
Python

import bpy,sys,os,json
from pathlib import Path
p=Path(sys.argv[-1]); bpy.ops.wm.open_mainfile(filepath='') if False else None
# importer each fbx
for f in [p/'BudBud_Rigged.fbx', Path('AIClient/Assets/Bundles/Characters/Animal/BudBud/BudBud.fbx')]+[p/'motions'/n/'animated.fbx' for n in ('Idle','Walk','Attack')]:
bpy.ops.wm.read_factory_settings(use_empty=True)
bpy.ops.import_scene.fbx(filepath=str(f),use_anim=True)
objs=list(bpy.context.scene.objects); tris=0; bones=[]; acts=[]
for o in objs:
if o.type=='MESH': tris += sum(len(poly.vertices)-2 for poly in o.data.polygons)
if o.type=='ARMATURE': bones += [b.name for b in o.data.bones]
print(f.name,'objects',len(objs),'tris',tris,'bones',len(bones),'bone_names',bones[:10])
print('actions',[(a.name,a.frame_start,a.frame_end) for a in bpy.data.actions])