2014-09-06 39 views
0

的follwowing是寫在攪拌器python中的代碼上傳多個模型來sketchfab

import bpy 
import os 
import subprocess 
import time 
bpy.data.materials["Material"].use_face_texture = True 
customer_id = "john33" 
image1 = "orangeskin.jpg" # define image 1 from folder 
imagepath1 = "C:\\Users\\mrryan\\Desktop\\models\\materialsjpeg\\" 
image2 = "elec.jpg" 
imagepath2 = "C:\\Users\\mrryan\\Desktop\\models\\materialsjpeg\\" 

#Step 1 go to Edit Mode 
bpy.ops.object.editmode_toggle() 

#step 2 insert image in the Image Editor 
bpy.context.area.type = 'IMAGE_EDITOR' 
bpy.ops.uv.smart_project() 
bpy.ops.image.open(filepath = image1, directory= imagepath1 , 
files=[{"name":image1, "name":image1}]) 

#Step 3 back to Object Mode TRY AND CHANGE TITLE TO `CUSTOMER_ID AND FILE` 
bpy.ops.object.editmode_toggle() 
bpy.data.window_managers["WinMan"].sketchfab.title = "orangetube" 



#Step 4 save new.blend 
filepath = os.path.join(r"C:\Users\mrryan\Desktop", customer_id + "orangytube.blend") 
bpy.ops.wm.save_as_mainfile(filepath = filepath) 
toggleedit = bpy.ops.object.editmode_toggle() 
#here is the problem!!!! 
subprocess.call(["bpy.ops.export.sketchfab()"], shell = True) 



#new texture 
#Step 1 go to Edit Mode 


#step 2 insert image in the Image Editor 
bpy.context.area.type = 'IMAGE_EDITOR' 

bpy.ops.image.open(filepath= image2, directory= imagepath2, 
files= [{"name":image2,"name":image2}])  
bpy.ops.uv.smart_project() 

#Step 3 back to Object Mode 
bpy.ops.object.editmode_toggle() 
bpy.data.window_managers["WinMan"].sketchfab.title = "elec-tube" 
#Step 4 save new.blend 
filepath = os.path.join(r"C:\Users\mrryan\Desktop", customer_id + "elec-tube.blend") 
bpy.ops.wm.save_as_mainfile(filepath = filepath) 
bpy.ops.export.sketchfab() 

的想法是,最終以編程改變活動對象(其組合,但沒有加入與另一對象),以具有不同的材料並更改形狀等。每個單獨的模型組合將分別上傳到sketchfab並保存爲攪拌器文件。

在這個階段,我的問題是,上傳時,腳本不會等到第一次上傳完成。這會產生一個錯誤,表示請等待當前上傳完成。結果只有一個模型上傳。 subprocess.Popen 已經嘗試,但我無法得到它的工作。 也許返回值是錯誤的? 如何獲得腳本上傳第一個模型,等待完成,然後繼續進行調整並上傳第二個模型?

回答

0

(我在Sketchfab工作,但我沒有太多的Blender腳本經驗)。

問題是Sketchfab Blender Exporter使用上傳的線程,意味着子進程將返回,線程仍在後臺運行。

我會嘗試使用新線程和join()啓動bpy.ops.export.sketchfab(),而不僅僅是子進程。

以下資源可能有幫助:

讓我們知道如何去!