在我的Java3D應用程序中,我有一個可移動的查看平臺(例如感謝「OrbitBehavior」和「KeyNavigatorBehavior」行爲),因此我可以將視角改變爲場景。 現在,我想添加一個對我的視圖「靜態」的對象,即當我移動視圖時(例如,像FPS中的播放器的槍),總是以同樣的方式查看對象。 現在,我嘗試了以下兩種方法來解決這個問題,但是他們都沒有工作。在Java3D中將對象附加到視圖平臺
1/將我的對象直接附加到ViewingPlatform(通過專用BranchGroup加上TransformGroup)。 在這種情況下,我的對象根本不顯示(我絕對不確定它實際上可以執行這樣的操作......)。這是我的這部分代碼:
代碼:(與view
的ViewingPlatform中)
BranchGroup fixedBG = new BranchGroup();
TransformGroup fixedTG = new TransformGroup();
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transfo = new Transform3D();
transfo.setTranslation(new Vector3f(0.2f, 0.0f, -1.0f));
fixedTG.setTransform(transfo);
ColorCube fixedCube = new ColorCube(0.2);
fixedTG.addChild(fixedCube);
view.addChild(fixedBG);
2/適用於我的對象相同的變換(旋轉+翻譯;經由getTransform()檢索getViewPlatformTransform() - 我也嘗試了一些更復雜的東西,這些轉換之間的操作以及視圖PF和對象的初始位置)作爲查看平臺的一部分。我通過專門的行爲(與修改視圖位置的行爲相同的喚醒條件)實時執行所有操作。 這裏,當我移動視圖時,我的對象消失,並且有時在使用KeyNavigator的放大/縮小操作時(但實際上不穩定),我的對象有時會再次出現。
我敢肯定,我想要做的是可行的,可能很簡單,但現在,我沒有一個線索...
感謝由您的幫助
(PS:由於英語不是我的母語,我可以解釋我的問題相當混亂:不要猶豫,問我寫再次未理解的部分)
我還沒有嘗試過,但如果您在完成所有轉換之後再附加此選項,以免影響。 – 2009-10-08 13:29:21
我幾年沒有看過Java3d,但將對象附加到查看平臺聽起來對我來說是正確的。嘗試翻譯一下,以確保你沒有找到它在相機後面? – Mikeb 2009-10-08 13:32:30
@詹姆斯布萊克:問題是我的視圖轉換是由用戶在運行時完成的。 @Mikeb:我在一個非常基本的例子(只有一個ColorCube)上嘗試了幾種翻譯(兩種情況下都是+ z/-z):不是這樣。 – Sobe 2009-10-08 13:36:57