最近我已經開始使用C++和OpenGL建立3D遊戲引擎,但是我想用Python編寫一個腳本來將實際場景中的一些對象導出到文件。一切都已成功,除了我有一些關於Python API如何與對象和不同類型的對象一起工作的問題?我對Blender中的Python腳本有嚴重的問題
代碼:
for Lampa in Lamp.Get(): # In this case we are working with lamps
Lampatipus=Lampa.getType()
if Lampa.getParent()==Targy\ # Objects have parents in blender, but it shows error that lamps doesn't have functions like getParent()
and Lampatipus=="Lamp":
self.file.write(Lampa.getName())
self.file.write("\00")
# Lampa beallitasai
Lampa_alap_tomb=array('f', [\
Lampa.LocX, # Shows error message that lamps doesnt have position x...
Lampa.LocY,
Lampa.LocZ,
Lampa.R,
Lampa.G,
Lampa.B,
Lampa.getEnergy()/10.0,
Lampa.color[0],
Lampa.color[1],
Lampa.color[2],
Lampa.color[3]\
])
Lampa_alap_tomb.tofile(self.file)
# Another case:
for Lampa in Jelenet.objects: # In this case we are working with objects
Lampatipus=Lampa.getType()
if Lampa.getParent()==Targy\ # no problem here
self.file.write(Lampa.getName())
self.file.write("\00")
# Lampa beallitasai
Lampa_alap_tomb=array('f', [\
Lampa.LocX,
Lampa.LocY,
Lampa.LocZ,
Lampa.R, # Shows error message that objects doesnt have R (red component of color of a light)
Lampa.G,
Lampa.B,
Lampa.getEnergy()/10.0,
Lampa.color[0],
Lampa.color[1],
Lampa.color[2],
Lampa.color[3]\
])
Lampa_alap_tomb.tofile(self.file)
結束碼的!例如,如果我想要瀏覽所有的燈並將它們的一些屬性寫入文件(名稱,顏色,父對象等),那麼燈的某些屬性不會被Python識別爲變量由不同的對象使用。如果我遍歷每個對象並首先獲取對象的類型(實際上是一盞燈),但同樣的事情發生,但控制檯會顯示一條錯誤消息,顯示例如光點半徑或其他任何內容不是「攪拌器對象「。在前面的例子中,我已經解釋了Python並沒有意識到「Blender Lamp」實際上是一個「Blender Object」,但「Blender Lamp」也應該保持它們原來的屬性繼承自「Blender Object」 。因爲在Blender中,無論物體有什麼類型,它都有一個位置旋轉,比例等等。到目前爲止,正如你所知,每個燈都有位置(像物體一樣),還有光性質(淺色等)。但是如果我想爲了獲得一個攪拌燈的位置,它不起作用,因爲它表明這種燈不是一個物體,但是在攪拌器中,一盞燈也具有像普通物體那樣的位置和一切。我也沒有在Blender 2.49 python api文檔中找到對光源位置的引用。
請幫忙! 在此先感謝...
P. S.對不起,英語我來自匈牙利,沒有專業。以及我在匈牙利寫的一些變數,但我希望你能理解這個問題。 thx