Hallo an alle ich habe folgendes Problem, dass mich schon seit mehreren Tagen beschäftigt
ich habe einen Teilgraphen der zur Laufzeit erstellt wir. Der Teilgraph beinhaltet als Oberstes Element eine BranchGroup(A) an der dann wiederum mehrere TransformGroups hängen.
Auserdem benutze ich zur Kollisionserkennung ein Bahavior, welches auch an der BG (A) hängt.
Ich benutze zum Laden von 3D Files den DSLoader. Von dem bekomme ich ne BranchGroup(B) zurück, (an der hängt nen Shape3D) diese BG (B) übergebe ich dem Behavior. und hänge ne reference an dein Teilscenegraph (A).
letztendlich wird noch der Teilbaum(A) an den HauptSceneGraph angeschlossen.
Soweit so gut. Das model kann ich sehen. Kollision wird richtig erkannt.
Nun zum Problem:
es ist unbedingt notwendig, den Teilbaum wieder abhängen zu können.
Ich benutzte dazu die Funktion (HauptSceneGraph).removeChild(node); Ich haben den Haupt und Teilbaum nicht compiliert. das Problem scheint mir, dass im Core versucht wird das Shape zu aktualisieren. Das ist die Fehlermeldung:
Exception in thread "J3D-GeometryStructureUpdateThread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at javax.media.j3d.Shape3DRetained.getMirrorShape(Shape3DRetained.java:1965)
at javax.media.j3d.Shape3DRetained.searchGeometryAtoms(Shape3DRetained.java:2793)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.WakeupOnCollisionEntry.updateCollisionBounds(WakeupOnCollisionEntry.java:421)
at javax.media.j3d.GeometryStructure.processCollisionDetection(GeometryStructure.java:890)
at javax.media.j3d.GeometryStructure.processMessages(GeometryStructure.java:213)
at javax.media.j3d.StructureUpdateThread.doWork(StructureUpdateThread.java:83)
at javax.media.j3d.J3dThread.run(J3dThread.java:256)
Wenn ich das Behavior nicht in den Teilbaum adde dann hab ich auch keinerlei Probleme ...
Ich hoffe einfach mal, dass einen von euch die Exception schon mal übern weg gelaufen is ...
Tschüssi
ich habe einen Teilgraphen der zur Laufzeit erstellt wir. Der Teilgraph beinhaltet als Oberstes Element eine BranchGroup(A) an der dann wiederum mehrere TransformGroups hängen.
Auserdem benutze ich zur Kollisionserkennung ein Bahavior, welches auch an der BG (A) hängt.
Ich benutze zum Laden von 3D Files den DSLoader. Von dem bekomme ich ne BranchGroup(B) zurück, (an der hängt nen Shape3D) diese BG (B) übergebe ich dem Behavior. und hänge ne reference an dein Teilscenegraph (A).
letztendlich wird noch der Teilbaum(A) an den HauptSceneGraph angeschlossen.
Soweit so gut. Das model kann ich sehen. Kollision wird richtig erkannt.
Nun zum Problem:
es ist unbedingt notwendig, den Teilbaum wieder abhängen zu können.
Ich benutzte dazu die Funktion (HauptSceneGraph).removeChild(node); Ich haben den Haupt und Teilbaum nicht compiliert. das Problem scheint mir, dass im Core versucht wird das Shape zu aktualisieren. Das ist die Fehlermeldung:
Exception in thread "J3D-GeometryStructureUpdateThread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at javax.media.j3d.Shape3DRetained.getMirrorShape(Shape3DRetained.java:1965)
at javax.media.j3d.Shape3DRetained.searchGeometryAtoms(Shape3DRetained.java:2793)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.GroupRetained.searchGeometryAtoms(GroupRetained.java:3142)
at javax.media.j3d.WakeupOnCollisionEntry.updateCollisionBounds(WakeupOnCollisionEntry.java:421)
at javax.media.j3d.GeometryStructure.processCollisionDetection(GeometryStructure.java:890)
at javax.media.j3d.GeometryStructure.processMessages(GeometryStructure.java:213)
at javax.media.j3d.StructureUpdateThread.doWork(StructureUpdateThread.java:83)
at javax.media.j3d.J3dThread.run(J3dThread.java:256)
Wenn ich das Behavior nicht in den Teilbaum adde dann hab ich auch keinerlei Probleme ...
Ich hoffe einfach mal, dass einen von euch die Exception schon mal übern weg gelaufen is ...
Tschüssi