- 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>
14 lines
825 B
Python
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])
|