2015-09-06 36 views
1

當我通過BranchGroup.addChild(Object)添加此對象時,出現錯誤「只能添加BranchGroup節點」。所以我設置了BranchGroup的ALLOW_DETACH功能,將它從語言環境中刪除,添加對象,然後再次添加它。將組添加到區域設置或SimpleUniverse後,將對象添加到BranchGroup

有沒有更快的方法來添加對象?

+0

看看這個例子:http://download.java.net/media/java3d/javadoc/1.4.0/javax/media/j3d/doc-files/HelloUniverse.html看看這個模式:http:/ /download.java.net/media/java3d/javadoc/1.4.0/javax/media/j3d/doc-files/intro.gif您將哪種對象添加到BranchGroup中?你使用Java3D 1.6.0嗎? – gouessej

+0

@gouessej您提供的示例最後會將BranchGroup添加到Universe中,我的問題是在** BranchGroup添加後添加對象**。我只需添加一個ColorCube,然後使用Java3D 1.6.0。 – user202729

回答

1

只要在很早的時候調用BranchGroup.setCapability(Group.ALLOW_CHILDREN_EXTEND),即使在添加BranchGroup之後也應該允許添加新的子項。

+0

RestrictedAccessException - 如果此組節點是實時或編譯的場景圖的一部分,並且所添加的子節點不是BranchGroup節點。這是我的問題。我可以添加另一個BranchGroup,但這會很慢。 (並且可能需要更多RAM)有沒有更快的方法? – user202729

+0

「所有場景圖形對象的一個​​重要特徵是它們只能在創建場景圖形期間訪問或修改,除非明確允許」。 Java3D是一個非常嚴格的場景圖API。如果您需要靈活而快速的解決方案,請查看JogAmp的Ardor3D Continuation,JMonkeyEngine或LibGDX。說實話,我負責JogAmp社區的引擎支持。如果你真的想在BranchGroup中添加任何東西,你必須使用我的技巧,你必須分離BranchGroup,使其不再「活」。 – gouessej