Add a garden Buddha and meditation tour chapter

This commit is contained in:
2026-09-10 21:41:51 +10:00
parent 79c5eeddbb
commit 0582fc44df
14 changed files with 5869 additions and 12 deletions

View File

@@ -0,0 +1,19 @@
import bpy,json,os,math
from mathutils import Vector
O=os.path.dirname(__file__);s=bpy.context.scene;chapters=json.load(open(O+'/tour-chapters-buddha-garden.json'));fonts=[o for o in bpy.data.collections['22 PLAY - guided camera tour'].objects if o.type=='FONT'];issues=[]
for ch in chapters:
s.frame_set(ch['start']+30);shown=[o.data.body for o in fonts if o.scale.length>.5]
if shown!=[ch['title']]:issues.append([ch['title'],shown])
names=[o.name for o in s.objects];layout=json.load(open(O+'/buddha-garden-layout.json'));x,y,z=layout['buddha']
# Actual rotated rectangular plinth lies outside the pavilion and walking-path ribbon.
mx,my,mw,md=layout['meditation'];assert y-.78>my+md/2
clearance=999
for path in layout['paths']:
if path['kind']=='roofed walk':continue
for q in path['points']:
dist=math.hypot(max(abs(q[0]-x)-.59,0),max(abs(q[1]-y)-.78,0))-path['width']/2
clearance=min(clearance,dist)
assert clearance>.05,clearance
report={'buddha_collection_objects':len(bpy.data.collections['36 Buddha - meditation garden'].objects),'viewport_proxy':'FAST | Garden Buddha statue' in names,'tour_chapters':len(chapters),'caption_issues':issues,'path_clearance_m':round(clearance,3),'statue_outside_room':True,'internal_water_tanks':sum(n.startswith('INTERNAL RAINWATER TANK') for n in names),'kitchen_preserved':'ISLAND - honed marble countertop' in names,'no_table_tennis':not any('table tennis' in n.lower() for n in names),'render_size':[s.render.resolution_x,s.render.resolution_y,s.render.resolution_percentage]}
assert len(chapters)==31 and s.frame_end==3720 and not issues and report['viewport_proxy'] and report['internal_water_tanks']==2 and report['kitchen_preserved'] and report['no_table_tennis'] and report['render_size']==[2560,1440,100]
json.dump(report,open(O+'/buddha-garden-verification.json','w'),indent=2);print('VERIFIED '+json.dumps(report),flush=True)