@@ -86,7 +86,7 @@ def clear_scene(self):
8686 for texture in bpy .data .textures :
8787 bpy .data .textures .remove (texture )
8888
89- print ("✓ Scene cleared" )
89+ print ("[OK] Scene cleared" )
9090
9191 def setup_camera (self ):
9292 """Create and position camera."""
@@ -109,7 +109,7 @@ def setup_camera(self):
109109 self .scene .render .resolution_y = resolution [1 ]
110110 self .scene .render .resolution_percentage = 100
111111
112- print (f"✓ Camera created: { resolution [0 ]} x{ resolution [1 ]} " )
112+ print (f"[OK] Camera created: { resolution [0 ]} x{ resolution [1 ]} " )
113113
114114 return camera
115115
@@ -202,7 +202,7 @@ def setup_lighting(self):
202202 # Connect to output
203203 links .new (background .outputs ['Background' ], output_node .inputs ['Surface' ])
204204
205- print (f" ✓ HDRI environment configured (strength: { hdri_config .get ('strength' , 1.5 )} )" )
205+ print (f" [OK] HDRI environment configured (strength: { hdri_config .get ('strength' , 1.5 )} )" )
206206
207207 # Key light (main spotlight) - adjusted for HDRI workflow
208208 spotlight_config = lights_config .get ('spotlight' , {})
@@ -220,7 +220,7 @@ def setup_lighting(self):
220220 key_light .data .color = spot_color
221221
222222 lights .append (key_light )
223- print (f" ✓ Spotlight: { key_light .data .energy } W" )
223+ print (f" [OK] Spotlight: { key_light .data .energy } W" )
224224
225225 # Fill light (softer area light)
226226 bpy .ops .object .light_add (type = 'AREA' , location = (- 2 , - 2 , 3 ))
@@ -245,9 +245,9 @@ def setup_lighting(self):
245245 rim_light .data .color = rim_color
246246
247247 lights .append (rim_light )
248- print (f" ✓ Rim light: { rim_light .data .energy } W" )
248+ print (f" [OK] Rim light: { rim_light .data .energy } W" )
249249
250- print (f"✓ Production lighting complete ({ style } style, { len (lights )} lights)" )
250+ print (f"[OK] Production lighting complete ({ style } style, { len (lights )} lights)" )
251251
252252 return lights
253253
@@ -304,7 +304,7 @@ def create_stage_environment(self):
304304 # (Could be enhanced with actual texture maps)
305305 print (f" Stage material: { stage_color } , roughness: { bsdf .inputs ['Roughness' ].default_value } " )
306306
307- print ("✓ Stage environment created" )
307+ print ("[OK] Stage environment created" )
308308
309309 return stage
310310
@@ -412,7 +412,7 @@ def create_mascot_placeholder(self):
412412 if tex_image .image .alpha_mode != 'NONE' :
413413 links .new (tex_image .outputs ['Alpha' ], bsdf .inputs ['Alpha' ])
414414
415- print (" ✓ Texture loaded with UV mapping" )
415+ print (" [OK] Texture loaded with UV mapping" )
416416
417417 else :
418418 # Use primary color from config if no texture
@@ -421,7 +421,7 @@ def create_mascot_placeholder(self):
421421 bsdf .inputs ['Base Color' ].default_value = (* primary_color , 1.0 )
422422 print (" Using solid color (no texture)" )
423423
424- print ("✓ Mascot created with production PBR materials" )
424+ print ("[OK] Mascot created with production PBR materials" )
425425 print (" NOTE: Full image-to-mesh rigging not yet implemented" )
426426
427427 return mascot
@@ -448,7 +448,7 @@ def create_phoneme_shape_keys(self, mascot):
448448 sk = mascot .shape_key_add (name = f'Phoneme_{ phoneme } ' )
449449 # TODO: Actually deform mesh for each phoneme
450450
451- print (f"✓ Created { len (phoneme_shapes )} phoneme shape keys (placeholders)" )
451+ print (f"[OK] Created { len (phoneme_shapes )} phoneme shape keys (placeholders)" )
452452
453453 def animate_lip_sync (self , mascot ):
454454 """
@@ -491,7 +491,7 @@ def animate_lip_sync(self, mascot):
491491 sk .value = 0.0
492492 sk .keyframe_insert (data_path = 'value' , frame = next_frame )
493493
494- print (f"✓ Lip-sync animation generated ({ len (phonemes )} phoneme transitions)" )
494+ print (f"[OK] Lip-sync animation generated ({ len (phonemes )} phoneme transitions)" )
495495
496496 def animate_gestures (self , mascot ):
497497 """
@@ -526,7 +526,7 @@ def animate_gestures(self, mascot):
526526 mascot .location .z = 1.0
527527 mascot .keyframe_insert (data_path = 'location' , frame = rest_frame )
528528
529- print (f"✓ Gesture animation generated ({ len (beat_times )} beats)" )
529+ print (f"[OK] Gesture animation generated ({ len (beat_times )} beats)" )
530530
531531 def create_lyrics_text (self ):
532532 """
@@ -695,7 +695,7 @@ def create_lyrics_text(self):
695695
696696 text_objects .append (text_obj )
697697
698- print (f"✓ Created { len (text_objects )} professional lyric text objects" )
698+ print (f"[OK] Created { len (text_objects )} professional lyric text objects" )
699699 print (f" Style: { lyrics_style } " )
700700 print (f" Material: emission + glossy with PBR properties" )
701701
@@ -732,7 +732,7 @@ def animate_lights_to_beats(self, lights):
732732 light .data .energy = base_energy
733733 light .data .keyframe_insert (data_path = 'energy' , frame = frame + 3 )
734734
735- print (f"✓ Lights animated to { len (beat_times )} beats" )
735+ print (f"[OK] Lights animated to { len (beat_times )} beats" )
736736
737737 def setup_render_settings (self ):
738738 """Configure production-quality render engine and output settings."""
@@ -820,7 +820,7 @@ def setup_render_settings(self):
820820 # Film settings (transparency, etc.)
821821 self .scene .render .film_transparent = False # Opaque background for now
822822
823- print (f"✓ Render settings configured" )
823+ print (f"[OK] Render settings configured" )
824824 print (f" Output: { self .scene .render .filepath } " )
825825
826826 def setup_compositor (self ):
@@ -1037,7 +1037,7 @@ def setup_compositor(self):
10371037 grain_config .get ('enabled' , False )
10381038 ])
10391039
1040- print (f"✓ Compositor configured with { effects_count } effects" )
1040+ print (f"[OK] Compositor configured with { effects_count } effects" )
10411041
10421042 def render_animation (self ):
10431043 """Render the animation."""
@@ -1050,7 +1050,7 @@ def render_animation(self):
10501050
10511051 bpy .ops .render .render (animation = True )
10521052
1053- print ("✓ Rendering complete" )
1053+ print ("[OK] Rendering complete" )
10541054
10551055
10561056def load_config (config_path : str ) -> Dict :
@@ -1110,7 +1110,7 @@ def main():
11101110 # Build 2D Grease Pencil scene
11111111 from grease_pencil import build_2d_scene
11121112 builder = build_2d_scene (config , prep_data )
1113- print ("✓ 2D Grease Pencil scene built successfully" )
1113+ print ("[OK] 2D Grease Pencil scene built successfully" )
11141114
11151115 elif animation_mode == 'hybrid' :
11161116 # Build hybrid scene (2D mascot on 3D stage)
@@ -1146,7 +1146,7 @@ def main():
11461146 builder_3d .setup_render_settings ()
11471147 builder_3d .setup_compositor ()
11481148
1149- print ("✓ Hybrid scene built successfully" )
1149+ print ("[OK] Hybrid scene built successfully" )
11501150
11511151 else :
11521152 # Default: Build 3D mesh scene
@@ -1171,7 +1171,7 @@ def main():
11711171 builder .setup_render_settings ()
11721172 builder .setup_compositor ()
11731173
1174- print ("✓ 3D mesh scene built successfully" )
1174+ print ("[OK] 3D mesh scene built successfully" )
11751175
11761176 print ()
11771177 print ("=" * 70 )
@@ -1198,7 +1198,7 @@ def main():
11981198 print ("Rendering 3D animation..." )
11991199 builder .render_animation ()
12001200
1201- print ("\n ✓ Rendering complete!" )
1201+ print ("\n [OK] Rendering complete!" )
12021202
12031203 return 0
12041204
0 commit comments