程式碼:
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張當前靜幀的圖片