背景
我想實現一個高度非線性的鏡頭做鏡頭畸變的Panda3D一個複雜的投影設置。我想在this approach之後使用此實現。在Panda3D中
問題
我能做到這一點在Python(如果有的話,怎麼樣,我究竟做錯了)或者我必須這樣做,在C++(如果是這樣,我從哪裏開始)?
嘗試到目前爲止
我試着子類Lens,但如果我讓我的子類調用父類的構造函數(或不重寫構造的話),我得到一個錯誤:
>>> from panda3d.core import Lens
>>> class MyLens(Lens):
... def __init__(self):
... super(MyLens,self).__init__()
...
>>> l = MyLens()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __init__
TypeError: Error Can Not Init Constant Class (Lens)
如果我不叫超級構造函數,類isinstance(Lens)
,而不是由Panda3D的代碼承認的:
fcamNode = Camera('fcam')
flens = MyLens.MyLens()
assert isinstance(flens, Lens)
fcamNode.setLens(flens)
結果TypeError: LensNode.set_lens() argument 1 must be Lens, not MyLens
。
如果我繼承PerspectiveLens
相反,我可以調用父類的構造函數,並通過我的類的實例setLens()
,但沒有其覆蓋的方法是不斷打來電話,渲染場景看起來就像是與股票PerspectiveLens
呈現。
謝謝,這回答了我的問題的一半。我會接受第一個答案,只是提示我在哪裏開始實現C++定製鏡頭,因爲這是我原來的問題的一部分。 (當然,我也會在我有機會的時候自己調查一下,然後回到這裏,更新並接受) –
[This](https://www.panda3d.org/manual/index.php/Subclassing)和[this](http://panda3d.cvs.sourceforge.net/viewvc/panda3d/doc/INSTALL-MK?view=markup)涵蓋了這個主題。不過,我想知道是否可以在沒有整個項目的情況下構建(並分發)「Lens」(Python和C++)。 –
[我可以](http://www.panda3d.org/forums/viewtopic.php?f=12&t=16501&p=96382)。 –