2013-07-22 44 views
1

我有我基於關閉教程的編寫一個程序:Panda3D的模型旋轉

from direct.showbase.ShowBase import ShowBase 

class MyApp(ShowBase): 

    def __init__(self): 
     ShowBase.__init__(self) 

     # Load the environment model. 
     self.environ = self.loader.loadModel("models/misc/rgbCube") 
     # Reparent the model to render. 
     self.environ.reparentTo(self.render) 
     # Apply scale and position transforms on the model. 
     self.environ.setScale(10, 10, 10) 
     self.environ.setPos(-8, 42, 0) 



app = MyApp() 
app.run() 

我想是這樣的:

self.environ.rotate(軸旋轉時,在腐度)

我已經在谷歌上進行了大量的搜索,唯一能看到的就是這樣:http://www.panda3d.org/manual/index.php/Position,_Rotation_and_Scale_Intervals 猜猜看!它沒有。你能指點我一個網站,深入解釋Hpr,或者只是在這裏解釋一下嗎?謝謝。

回答

3

熊貓使用歐拉角(又名飛行角度)來表示旋轉。傳遞給setHpr的角度除了Panda使用術語「標題」而不是「偏航」外,因爲字母Y已經用於Y位置,所以偏航俯仰滾動角度(以度爲單位)。 (0,0,1)軸旋轉的角度,P角度圍繞(1,0,0)軸旋轉多少,R角度如何它圍繞(0,1,0)軸旋轉很多。

如果您想在自己的座標系中旋轉模型,您可以將模型作爲第一個參數傳遞給任何setHpr函數,以便熊貓計算模型座標系中的新旋轉系統:

# Rotates the model 90 degrees around its own up axis 
model.setH(model, 90) 

當您旋轉模型時,它將圍繞其原點(其相對(0,0,0)點)旋轉。如果你想讓它圍繞不同的角度進行旋轉,這樣做的典型方式是創建一個旋轉,而不是一個虛擬的中間節點:我知道你沒有要求這個

pivotNode = render.attachNewNode("environ-pivot") 
pivotNode.setPos(...) # Set location of pivot point 
environ.wrtReparentTo(pivotNode) # Preserve absolute position 
pivotNode.setHpr(...) # Rotates environ around pivot 

但它是以防萬一它有幫助。