本文环境系统OS(Win10)

方式一,在Script(脚本)功能里面的Console(控制台输入python代码)。

如下图:

Blender Python API 中文版 python blender游戏_python

对应的三句代码是:

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)中。

方式二,在Script(脚本)功能里面的代码文本写代码,然后执行。

        第一步, 打开代码执行的控制台窗口,方便查看代码执行过程中的输出信息:

Blender Python API 中文版 python blender游戏_python_02

         下图就是输出窗口

Blender Python API 中文版 python blender游戏_命令行参数_03

注意,有时候由于debug或者出错导致脚本代码指定卡主,只需要在这个窗口执行Ctrl + C快捷键就能解决问题,以免整个Blender软件卡死。

        第二步        

Blender Python API 中文版 python blender游戏_python_04

        第三步:

Blender Python API 中文版 python blender游戏_开发语言_05

         第四步,写入代码:

Blender Python API 中文版 python blender游戏_命令行参数_06

对应的代码:

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

        第五步,运行代码:

Blender Python API 中文版 python blender游戏_python_07

也可以按下 Ctrl + P 快捷键执行脚本代码

执行结束,可以看到创建了一个cube,并且移动了。

控制台中,也可以看到输出信息:

Blender Python API 中文版 python blender游戏_命令行参数_08

可以接着再用下面的这段代码让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)

Blender Python API 中文版 python blender游戏_python_09

加载一个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)

开启Scripting脚本的即时运行(编辑后立刻自动运行)

Blender Python API 中文版 python blender游戏_命令行参数_10

方式三,直接在CMD或者其他程序中调用blender.exe,并将python脚本文件当做参数传入。

        1. 将上述python代码写到一个.py类型的文本文件里面,这里明明为createCube.py

        2. 打开 window cmd命令行控制台窗口

Blender Python API 中文版 python blender游戏_开发语言_11

         3. 然后再window cmd命令行控制台窗口里面执行,如下图:

Blender Python API 中文版 python blender游戏_命令行参数_12

注意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()

通过命令行(Shell)blender.exe调用python代码的一些其他方式

        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"

Blender 执行程序的命令行参数:

        1. 可以通过 blender.exe -h获得详细信息

        2. 命令行参数文档: 命令行参数 — Blender Manual

关于blender的API:

        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

        3. https://docs.blender.org/api/current/bpy.ops.wm.html