0xZohar commited on
Commit
f1e112b
·
verified ·
1 Parent(s): 594aee7

Upload code/cube3d/render/render_bricks_safe.py with huggingface_hub

Browse files
code/cube3d/render/render_bricks_safe.py CHANGED
@@ -85,6 +85,14 @@ def render_bricks_safe(
85
  fov: float = 45,
86
  img_resolution: int = 512,
87
  ) -> None:
 
 
 
 
 
 
 
 
88
  in_file = os.path.abspath(in_file)
89
  out_file = os.path.abspath(out_file)
90
 
@@ -97,9 +105,14 @@ def render_bricks_safe(
97
  if not ldraw_lib_path or not os.path.exists(ldraw_lib_path):
98
  ldraw_lib_path = Path.home() / 'ldraw'
99
  ldraw_lib_path = os.path.abspath(ldraw_lib_path)
100
-
101
- print(f"LDraw库路径: {ldraw_lib_path}")
102
- print(f"LDraw库是否存在: {os.path.exists(ldraw_lib_path)}")
 
 
 
 
 
103
 
104
  # 修复布尔值格式化问题
105
  blender_script = '''
@@ -260,17 +273,28 @@ except Exception as e:
260
 
261
  try:
262
  # 检查Blender路径是否存在
 
 
 
 
 
263
  if not BLENDER_PATH or not os.path.exists(BLENDER_PATH):
 
 
 
264
  print("⚠️ 跳过渲染:未找到Blender")
265
  print("如需3D渲染功能,请安装Blender 3.6+")
 
266
  # 创建一个占位图片,避免程序崩溃
267
  from PIL import Image, ImageDraw, ImageFont
268
  img = Image.new('RGB', (512, 512), color=(240, 240, 240))
269
  draw = ImageDraw.Draw(img)
270
  draw.text((150, 250), "Blender未安装\n渲染功能不可用", fill=(100, 100, 100))
271
  img.save(out_file)
272
- print(f"已生成占位图片: {out_file}")
273
  return
 
 
274
 
275
  # 首先测试 Blender 是否能正常运行
276
  test_cmd = [BLENDER_PATH, '--version']
@@ -316,21 +340,46 @@ except Exception as e:
316
  )
317
 
318
  # 输出Blender日志
319
- print(f"=== Blender返回码: {result.returncode} ===")
 
 
 
 
 
 
320
  if result.stdout:
321
- print("=== Blender标准输出 ===")
 
 
322
  print(result.stdout)
323
  else:
324
- print("(无标准输出)")
325
 
326
  if result.stderr:
327
- print("=== Blender错误输出 ===")
 
 
328
  print(result.stderr)
329
  else:
330
- print("(无错误输出)")
331
-
 
332
  if result.returncode != 0:
333
- raise RuntimeError(f"Blender返回错误码: {result.returncode}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
 
335
  if not os.path.exists(out_file):
336
  raise FileNotFoundError(f"渲染失败:未生成输出文件 {out_file}")
 
85
  fov: float = 45,
86
  img_resolution: int = 512,
87
  ) -> None:
88
+ print("=" * 70)
89
+ print("🔍 [DEBUG] render_bricks_safe() 函数被调用")
90
+ print(f" 📁 输入文件: {in_file}")
91
+ print(f" 📁 输出文件: {out_file}")
92
+ print(f" 🔧 BLENDER_PATH (全局): {BLENDER_PATH}")
93
+ print(f" ✓ Blender 是否存在: {BLENDER_PATH and os.path.exists(BLENDER_PATH) if BLENDER_PATH else False}")
94
+ print("=" * 70)
95
+
96
  in_file = os.path.abspath(in_file)
97
  out_file = os.path.abspath(out_file)
98
 
 
105
  if not ldraw_lib_path or not os.path.exists(ldraw_lib_path):
106
  ldraw_lib_path = Path.home() / 'ldraw'
107
  ldraw_lib_path = os.path.abspath(ldraw_lib_path)
108
+
109
+ print(f"📦 LDraw库路径: {ldraw_lib_path}")
110
+ print(f"LDraw库是否存在: {os.path.exists(ldraw_lib_path)}")
111
+ if os.path.exists(ldraw_lib_path):
112
+ parts_dir = os.path.join(ldraw_lib_path, 'parts')
113
+ print(f" - parts 目录存在: {os.path.exists(parts_dir)}")
114
+ else:
115
+ print(f" ⚠️ 警告:LDraw 库目录不存在!")
116
 
117
  # 修复布尔值格式化问题
118
  blender_script = '''
 
273
 
274
  try:
275
  # 检查Blender路径是否存在
276
+ print(f"🔍 [DEBUG] 检查 Blender 路径...")
277
+ print(f" BLENDER_PATH 值: {BLENDER_PATH}")
278
+ print(f" 类型: {type(BLENDER_PATH)}")
279
+ print(f" 是否为 None: {BLENDER_PATH is None}")
280
+
281
  if not BLENDER_PATH or not os.path.exists(BLENDER_PATH):
282
+ print(f"❌ Blender 不可用")
283
+ print(f" - BLENDER_PATH: {BLENDER_PATH}")
284
+ print(f" - 文件存在: {os.path.exists(BLENDER_PATH) if BLENDER_PATH else 'N/A'}")
285
  print("⚠️ 跳过渲染:未找到Blender")
286
  print("如需3D渲染功能,请安装Blender 3.6+")
287
+ print("📝 正在生成占位图片...")
288
  # 创建一个占位图片,避免程序崩溃
289
  from PIL import Image, ImageDraw, ImageFont
290
  img = Image.new('RGB', (512, 512), color=(240, 240, 240))
291
  draw = ImageDraw.Draw(img)
292
  draw.text((150, 250), "Blender未安装\n渲染功能不可用", fill=(100, 100, 100))
293
  img.save(out_file)
294
+ print(f"已生成占位图片: {out_file}")
295
  return
296
+
297
+ print(f"✅ Blender 可用: {BLENDER_PATH}")
298
 
299
  # 首先测试 Blender 是否能正常运行
300
  test_cmd = [BLENDER_PATH, '--version']
 
340
  )
341
 
342
  # 输出Blender日志
343
+ print("=" * 70)
344
+ print(f"🎬 Blender 执行完成")
345
+ print("=" * 70)
346
+ print(f"返回码: {result.returncode}")
347
+ print(f"标准输出长度: {len(result.stdout) if result.stdout else 0} 字符")
348
+ print(f"错误输出长度: {len(result.stderr) if result.stderr else 0} 字符")
349
+
350
  if result.stdout:
351
+ print("=" * 70)
352
+ print("📝 Blender 标准输出:")
353
+ print("=" * 70)
354
  print(result.stdout)
355
  else:
356
+ print("(标准输出为空)")
357
 
358
  if result.stderr:
359
+ print("=" * 70)
360
+ print("❌ Blender 错误输出:")
361
+ print("=" * 70)
362
  print(result.stderr)
363
  else:
364
+ print("(错误输出为空)")
365
+ print("=" * 70)
366
+
367
  if result.returncode != 0:
368
+ # 在抛出异常前,尝试解析错误信息
369
+ error_summary = "未知错误"
370
+ if result.stderr:
371
+ # 提取关键错误信息
372
+ lines = result.stderr.strip().split('\n')
373
+ for line in lines:
374
+ if 'Error' in line or 'error' in line:
375
+ error_summary = line.strip()
376
+ break
377
+
378
+ raise RuntimeError(
379
+ f"Blender返回错误码: {result.returncode}\n"
380
+ f"错误摘要: {error_summary}\n"
381
+ f"完整输出已打印在上方"
382
+ )
383
 
384
  if not os.path.exists(out_file):
385
  raise FileNotFoundError(f"渲染失败:未生成输出文件 {out_file}")