Guten Tag allerseits,
also ich möchte gerne die Farbe von dem "gepickten" Objekt ändern bzw seine Eigentschaften.
Nur leider weiß ich nicht so genau wie ich es anzustellen haben.
Ich lade per vrml loader drei .wrl dateien.
Und danach kommt die übliche Prozedur ( Siehe Code ).
Die relevanten Methoden .
:
Ich bedanke mich schonmal für jede Hilfe.
Mfg
also ich möchte gerne die Farbe von dem "gepickten" Objekt ändern bzw seine Eigentschaften.
Nur leider weiß ich nicht so genau wie ich es anzustellen haben.
Ich lade per vrml loader drei .wrl dateien.
Und danach kommt die übliche Prozedur ( Siehe Code ).
Die relevanten Methoden .
Code:
public BranchGroup macheSzenengraph()
{
Loader f = new VrmlLoader();
Scene []s = new Scene[Anzahl];
try
{
s[0] = f.load("test/layoutparo_how-turm.wrl");
s[1] = f.load("test/layoutparo_ausl-vertikw.wrl");
s[2] = f.load("test/boa_0000.wrl");
}
catch (FileNotFoundException e)
{
System.err.println(e);
System.exit(1);
}
catch (ParsingErrorException e)
{
System.err.println(e);
System.exit(1);
}
catch (IncorrectFormatException e)
{
System.err.println(e);
System.exit(1);
}
// Shape3D (global)
gepickt.setCapability(Shape3D.ALLOW_APPEARANCE_WRITE);
erstelleBranch(s);
setBackdist(s);
//objWurzel.addChild(erstelleBehaviorsGroup());
objWurzel.addChild(createBackground());
objWurzel.addChild(erstelleDirectLight());
objWurzel.addChild(erstelleAmbientLight());
objWurzel.addChild(new Shape3D(erstelleAchseX()));
objWurzel.addChild(new Shape3D(erstelleAchseY()));
objWurzel.addChild(new Shape3D(erstelleAchseZ()));
objWurzel.addChild(ViewTG1);
erstelleKeyBehavior();
return objWurzel;
}
public void ObjektSelektiert(MouseEvent e){
System.out.println("*** MouseClick ***");
pickCanvas = new PickCanvas(c, objWurzel);
pickCanvas.setMode(PickTool.GEOMETRY_INTERSECT_INFO);
pickCanvas.setTolerance(0f);
pickCanvas.setShapeLocation(e);
Node picked;
PickResult[] results = pickCanvas.pickAllSorted();
if (results != null) {
for (int n = 0; n < results.length; n++) {
PickResult pickResult = results[n];
picked = results[n].getObject();
System.out.println("Node: "+ picked);
gepickt = (Shape3D)picked;
/*
* anschliessend hier setAppearance() ... leider kommt dann eine Exception
*/
System.out.println("Sortiertes PickResult " + n + ": \n" + pickResult.getLocalToVworld());
}
}
}
private void erstelleBranch(Scene scene[]){
Objekt_Array = new TransformGroup[Anzahl];
Transform3D D3 = new Transform3D();
D3.setScale(Skalierung);
for(int i = 0;i < Objekt_Array.length;i++){
D3.setTranslation(new Vector3f(X_Position, Y_Position, Z_Position));
Objekt_Array[i] = new TransformGroup();
Objekt_Array[i].setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
Objekt_Array[i].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Objekt_Array[i].setCapability(TransformGroup.ENABLE_PICK_REPORTING);
Objekt_Array[i].setTransform(D3);
Objekt_Array[i].addChild(scene[i].getSceneGroup());
Objekt_Array[i].addChild(erstelleBehaviorsGroup());
objWurzel.addChild(Objekt_Array[i]);
}
}
Ich bedanke mich schonmal für jede Hilfe.
Mfg
Zuletzt bearbeitet: