代码:

import bpy

#Define which objects to use
placement_ob = bpy.context.scene.objects['Sphere']
camera_ob = bpy.context.scene.objects['Camera'] 

render = bpy.context.scene.render

# Set the render path
render_path = 'renders\\vertex-{:03d}'  # Use backslash for Windows paths

for index, vert in enumerate(placement_ob.data.vertices):
    # Apply the object's world matrix to the vertex's local coordinates to get world coordinates
    vcoord = placement_ob.matrix_world @ vert.co
    
    # Set the render filepath for the current vertex
    render.filepath = render_path.format(index)
    
    # Move the camera to the vertex's world position
    camera_ob.location = vcoord
    
    # Render the scene
    bpy.ops.render.render(write_still=True)
    
    # If you want to render all vertices, remove the break statement
    # If you only want to test if it works, you can leave the break statement
    # break  # Remove after you see it works


print('Done!')

中文注释:

import bpy

# 定义要使用的物体
placement_ob = bpy.context.scene.objects['Sphere']  # 'Sphere' 是要渲染的物体名称
camera_ob = bpy.context.scene.objects['Camera']  # 'Camera' 是摄像机的名称

render = bpy.context.scene.render  # 获取渲染场景的引用

# 设置渲染路径
render_path = 'renders\\vertex-{:03d}'  # 使用反斜杠作为Windows路径分隔符

for index, vert in enumerate(placement_ob.data.vertices):  # 遍历所有顶点
    # 应用物体的世界矩阵到顶点的局部坐标以获取世界坐标
    vcoord = placement_ob.matrix_world @ vert.co  # 使用矩阵乘法运算符
    
    # 设置当前顶点的渲染文件路径
    render.filepath = render_path.format(index)  # 使用顶点索引格式化路径
    
    # 将摄像机移动到顶点的世界位置
    camera_ob.location = vcoord  # 设置摄像机的位置
    
    # 渲染场景
    bpy.ops.render.render(write_still=True)  # 执行静态图像渲染操作
    
    # 如果你想要渲染所有顶点,移除下面的break语句
    # 如果你只想测试脚本是否工作,可以保留break语句
    # break  # 一旦看到它工作,就移除这个break语句

print('Done!')  # 打印完成信息

 

物体界面截图

 

说明:

新建一个空物体,放在平面与地面中间,

新建一个UV球体,放大,覆盖整个要摄像的场景,应用精简修改6级,让球面变为17个点(能围绕一圈,且点数不多),

摄像机添加标准跟随(目标为空物体,保证相机始终对着要拍摄的物体),

运行脚本,就可以渲染出17张当前静帧的图片

posted on 2024-04-17 23:33  大话人生  阅读(70)  评论(0编辑  收藏  举报