2014-03-06 126 views
1

我最近爲我的工作渲染了許多圖像,並認爲如果我只知道該怎麼做,就可能自動化很多渲染。這將有助於我和工作人員的工作,從長遠來看,我們將節省大量時間。這是我需要的:簡單的python腳本與攪拌機

我有一個項目,讓我們說一把椅子。這把椅子必須用4個不同的攝像機角度來渲染,我們必須能夠在代碼中指定這個角度,儘管這4個攝像機角度在整個渲染階段都會保持穩定。 4張圖像渲染後,椅子必須更換材料,然後再渲染另外4張圖像。

用非常少的編碼經驗,我成像是這樣的:

僞代碼:

var material = "oak"; //This is the first material 
var camPosition = 0; 

while(i<12) { 

for(j=0;j<=4;j++) { 
    if(i == 0) { 
    camPosition = 20 //Example 
    } 
    if(i == 1) { 
    camPosition = 40 //Example 
    } 
    ... //Do this 4 times, for the 4 different angles 

    TakePhoto AT position = camPosition; 
    //Render; 
} 
material = "Stone"; 
i++; 
} 

所以這基本上是運行兩個循環,while循環從而改變了材料的椅子,以及一個for循環,它循環四個不同的角度,然後渲染。我希望我說清楚,並且有一些幫助,建議或建議。

在此先感謝。

回答

2

首先你應該知道一些python腳本。從官方Python3 tutorial開始。堅持python3教程,所以你不會學習一些舊的方式,將會失敗與攪拌機的python v3.3。

然後看看你如何通過Python訪問攪拌機的數據。你可以從官方quickstart tutorial開始。從該頁面您還可以找到所有攪拌機的python文檔。

另外考慮你可能會發現,你可能更容易做你手動描述的任務。您可以定位和設置相機位置的關鍵幀。你也可以動畫物體可見性,複製物體(使用替代D將使它們變爲share the same mesh data),然後讓一個物體可見,每個物體都有不同的材質。然後一次渲染動畫就會完成這一切。

TrackTo約束條件可讓您定位相機並使其始終指向椅子,因此您無需設置角度。

您還可以在blender.stackexchange

獲得更多的攪拌器具體的幫助下可以開始你關閉你想做的事情,一旦你瞭解一個小蟒蛇什麼。

import bpy 
material_list = ['oak','redwood','plastic'] 
camera_positions = [[2.0,1.0,1.0],[1.0,2.0,1.0],[2.0,2.0,1.0]] 

for mat in material_list: 
    bpy.data.objects['Chair'].material_slots[0].material = bpy.data.materials[mat] 
    for campos in camera_positions: 
     bpy.data.objects['Camera'].location = campos 
     bpy.ops.render.render()