赞
踩
本文环境系统OS(Win10)
如下图:
对应的三句代码是:
- print("Hi, blender.")
-
- import bpy
-
- bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0,0, 0), scale=(1, 1, 1))
按下回车键,代码立刻执行,如果有打印信息则直接显示在这个控制台(Console)中。
第一步, 打开代码执行的控制台窗口,方便查看代码执行过程中的输出信息:
下图就是输出窗口
注意,有时候由于debug或者出错导致脚本代码指定卡主,只需要在这个窗口执行Ctrl + C快捷键就能解决问题,以免整个Blender软件卡死。
第二步
第三步:
第四步,写入代码:
对应的代码:
- import bpy
- import mathutils
- # 创建一个cube
- bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0,0, 0), scale=(1, 1, 1))
- # 获取这个cube
- cube = bpy.data.objects["Cube"]
- print("a cube: ", cube)
- v0 = mathutils.Vector((2.0, 0.0, 0.0))
- # 设置这个cube的坐标(X轴坐标为2.0,Y轴和轴为0.0), 移动这个cube
- cube.location = v0
第五步,运行代码:
也可以按下 Ctrl + P 快捷键执行脚本代码
执行结束,可以看到创建了一个cube,并且移动了。
控制台中,也可以看到输出信息:
可以接着再用下面的这段代码让blender渲染出一张图(关于这个cube的),保存在指定路径下:
- import bpy
- renderer = bpy.context.scene.render
- renderer.image_settings.file_format='JPEG'
- renderer.filepath = "D:/dev/blender/renderingImg/cube.jpg"
- renderer.resolution_x = 512 #perhaps set resolution in code
- renderer.resolution_y = 512
- bpy.ops.render.render(write_still=True)
加载一个obj格式的模型:
- import bpy
- obj_filePath = "D:/dev/blender/modules/box01.obj"
- imported_object = bpy.ops.import_scene.obj(filepath=obj_filePath)
- obj_object = bpy.context.selected_objects[0]
- print('Imported obj name: ', obj_object.name)
1. 将上述python代码写到一个.py类型的文本文件里面,这里明明为createCube.py
2. 打开 window cmd命令行控制台窗口
3. 然后再window cmd命令行控制台窗口里面执行,如下图:
注意blender.exe的路径和createCube.py的路径要写成自己的。
blender通过的python script示例源码:your path \blender\3.2\scripts\templates_py
以下是后台调用blender.exe加载obj格式的模型文件并渲染以及保存渲染PNG图片的代码示例:
- import sys
- import bpy
- import time
-
- def renderAObj() :
- obj_file = "D:/dev/webProj/xblender/models/box02.obj"
- output_file = "D:/dev/webProj/xblender/renderingImg/rendering01.png"
-
- print("bpy.data.objects: ", bpy.data.objects)
- print("lsit(bpy.data.objects): ", list(bpy.data.objects))
-
- cube01 = bpy.data.objects["Cube"]
- if cube01:
- bpy.data.objects.remove(cube01)
- else:
- print("has not the default Cube.")
-
- print("### ### ### ### ###")
- # 加载OBJ模型
- imported_object = bpy.ops.import_scene.obj(filepath=obj_file)
- print("list(bpy.context.selected_objects): ", list(bpy.context.selected_objects))
- obj_object = bpy.context.selected_objects[0]
- print("obj_object: ", obj_object)
-
- # 设置渲染引擎
- bpy.context.scene.render.engine = 'BLENDER_EEVEE'
-
- # 设置输出路径和文件格式
- bpy.context.scene.render.filepath = output_file
- bpy.context.scene.render.image_settings.file_format = 'PNG'
- bpy.context.scene.render.resolution_x = 512
- bpy.context.scene.render.resolution_y = 512
-
- # 等待1秒钟, 这一句代码是故意操作,不是必须的
- time.sleep(0.5)
-
- # 渲染并保存图片
- bpy.ops.render.render(write_still=True)
- print("rendering task end ...")
-
- # 命令调用方式: D:\programs\blender\blender.exe -b -P .\loadAndRendering.py
- if __name__ == "__main__":
- # 获取命令行参数
- argv = sys.argv
- print("argv: \n", argv)
- # argv = argv[argv.index("--") + 1:]
- print("rendering task init ...")
- renderAObj()
1. blender.exe -b your_blend_file.blend -P rep.py
2. PATH_TO_/blender.exe BLENDER_FILE.blend --python-expr "import bpy ; bpy.data.scenes[\"Scene\"].cycles.samples = VALUE"
1. 可以通过 blender.exe -h获得详细信息
2. 命令行参数文档: 命令行参数 — Blender Manual
1. Quickstart — Blender Python API
https://docs.blender.org/api/blender_python_api_current/info_quickstart.html
2. Blender 3.5 Python API Documentation — Blender Python API
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。