# Picking: Vom Shape3D zum eigentlichen Objekt



## Quaxli (28. Nov 2007)

Hi,

ist wahrscheinlich was ganz Simples, aber ich krieg's nicht raus. Ich habe 2 Objekte vom Typ Sphere (von denen ich später mal ein Objekt erben lassen will).  Diese will ich per Mausklick auswählen, was auch klappt:


```
public void mouseClicked(MouseEvent e) {
		
		Node picked;
		PickCanvas pick = new PickCanvas(c3d,rootbg);
		PickResult[] presult;
		int rest = 0;
		
		pick.setTolerance(0f);
		pick.setMode(PickTool.GEOMETRY);
		pick.setShapeLocation(e);
		presult = pick.pickAllSorted();
		
		if(presult==null){
			System.out.println("nix");
		}else{
			picked = presult[rest].getObject();
			System.out.println(picked);
			Sphere temp = (Sphere) picked;
			System.out.println(temp);
			rest++;
		}
		
		
	}
```

Allerding liefert mirdie Methode ein Shape3D zurück und ich hätte gerne die Referenz auf meine Sphere bzw. später dann mal mein eigenes Objekt. Mit einem Cast geht's aber nicht. Wie komme ich also von Shape3D zu meinem Objekt?


----------



## Illuvatar (28. Nov 2007)

Naja da wirst du bei Primitives so deine Probleme haben, da ja ein Primitive aus verschiedenen Shape3Ds besteht. (Also, eine Sphere jetzt nicht gerade, aber das Problem bleibt das gleiche  ) Die Shape3Ds kennen das Primitive aber eben nicht.

a) Du machst dir ne große Map mit all deinen Spheres und ihren Shape3Ds
b) Du baust dir die Kugel selber, wenn dein eigenes Objekt dann das Shape3D ist, oder zumindest das Shape3D das eigene Objekt kennt, hast du es dann direkt.
c) Du stellst das ganze so ein (weiß grad nich mehr wie das geht), dass du nicht das Shape3D, sondern die BranchGroup pickst, dann musst du nur die BranchGroup, nicht das automatische Shape3D verändern.
d) Wohl die *beste Möglichkeit*, die mir aber jetzt erst einfällt wo ich den Rest schon geschrieben hab... du gibst den jeweiligen Shape3Ds per setUserData eine Referenz auf die Sphere / dein eigenes Objekt.


----------



## Quaxli (29. Nov 2007)

Doch umständlicher als ich dachte.... 
Danke für die Tipps, ich werde mal etwas rumprobieren.


----------

