Spaces:
Paused
Paused
Add missing code/cube3d/render/render_ldr.py
Browse files
code/cube3d/render/render_ldr.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# render_ldr.py
|
| 2 |
+
import bpy, sys, os
|
| 3 |
+
|
| 4 |
+
# -------- 参数(按需改) --------
|
| 5 |
+
ldr_path = "/public/home/wangshuo/gap/assembly/data/blue classic car/modified_blue classic car.ldr"
|
| 6 |
+
output_png = "./output.png"
|
| 7 |
+
# 可选:LDraw零件库位置(很多插件会在首选项里配置;这里仅演示)
|
| 8 |
+
ldraw_dir = "/public/home/wangshuo/gap/assembly/data/LDRAW/ldraw" # 含 /parts /p 等子文件夹
|
| 9 |
+
# --------------------------------
|
| 10 |
+
|
| 11 |
+
# 确保插件已启用(名称以你安装的插件为准,常见 io_scene_ldraw)
|
| 12 |
+
try:
|
| 13 |
+
bpy.ops.import_scene.ldraw # 如果没报错,说明有这个 operator
|
| 14 |
+
except AttributeError:
|
| 15 |
+
raise RuntimeError("请先在 Blender 中安装并启用 LDraw 导入插件(ImportLDraw)。")
|
| 16 |
+
|
| 17 |
+
# 清空默认场景
|
| 18 |
+
bpy.ops.wm.read_factory_settings(use_empty=True)
|
| 19 |
+
|
| 20 |
+
# 导入 LDraw
|
| 21 |
+
# 具体参数名可能随插件版本不同,最常见的是 filepath / ldraw_path
|
| 22 |
+
kwargs = {"filepath": ldr_path}
|
| 23 |
+
if os.path.isdir(ldraw_dir):
|
| 24 |
+
kwargs["ldraw_path"] = ldraw_dir
|
| 25 |
+
bpy.ops.import_scene.ldraw(**kwargs)
|
| 26 |
+
|
| 27 |
+
# 简单放置一个相机与灯光
|
| 28 |
+
scene = bpy.context.scene
|
| 29 |
+
if not scene.camera:
|
| 30 |
+
bpy.ops.object.camera_add(location=(0, -8, 5), rotation=(1.1, 0, 0))
|
| 31 |
+
scene.camera = bpy.context.object
|
| 32 |
+
|
| 33 |
+
# 太阳光
|
| 34 |
+
bpy.ops.object.light_add(type='SUN', location=(5, -5, 10))
|
| 35 |
+
|
| 36 |
+
# 渲染设置
|
| 37 |
+
scene.render.engine = "CYCLES" # 或 "BLENDER_EEVEE"
|
| 38 |
+
scene.cycles.samples = 64
|
| 39 |
+
scene.render.resolution_x = 1024
|
| 40 |
+
scene.render.resolution_y = 1024
|
| 41 |
+
scene.render.filepath = output_png
|
| 42 |
+
|
| 43 |
+
# 渲染
|
| 44 |
+
bpy.ops.render.render(write_still=True)
|
| 45 |
+
print("Saved:", output_png)
|