# geladenes Objekt -> Material Zuweisen.



## SegFault (15. Dez 2008)

Hallo.
Stehe mal wieder vor einen Problem, wie kann ich einen mit einem Loader geladenen Objekt ein Material Zuweisen? Hoffe das geht irgendwie. Das einzige was ich wirklich sinnvoll habe ist ja die root Branch Group mehr aber auch nicht.


----------



## Marco13 (16. Dez 2008)

Appearance für das Shape3D setzen...?


----------



## SegFault (16. Dez 2008)

Dank dir musste ich auch machen. Aber dafür muss ich halt den ganzen SceneGraphen durchforsten könnten ja mehrere sein, ich dachte dafür gibts ggf was in der riesigen Api aber scheinbar doch nicht. Für leute dies ggf noch interessiert hier der Rekursive algorithmus, (Iterativ sollte das auch gehen da müsste man den Baum halt in irgend einer Order Notation durchforsten aber Rekursiv ist erstmal einfacher)


```
public void reAppearanceGroup( javax.media.j3d.Group grp, Appearance a)
    {
        Enumeration grpchilds = grp.getAllChildren();
        while (grpchilds.hasMoreElements())
        {
            Object bgchild = grpchilds.nextElement();
            if ( bgchild instanceof javax.media.j3d.Group)
            {
                reAppearanceGroup( (javax.media.j3d.Group)bgchild, a ); 
            }
            else if (bgchild instanceof Shape3D)
            {
                Shape3D shape = (Shape3D)bgchild;
                shape.setAppearance(a);
            }
        }
    }
```


----------



## Marco13 (16. Dez 2008)

Ja, wenn du das Objekt geladen hast, wirst du da doch irgendwie an das Shape3D rankommen?! Mit dieser Methode wird die Appearance ja für ALLE Shape3Ds gesetzt?!


----------



## SegFault (16. Dez 2008)

genau das will ich ja, alle Objekte welche ich aus der Datei lade mit neuer Farbe versehen. Die Loader scheinen nunmal so zu arbeiten. Ich kriege eine BranchGroup welches die Root Wurzel des geladenen Files ist. Dort drinnen muss ich nun suchen was alles Shape3d ist. Daher diese funktion welches mir ausgehend der root (Des geladenen Objektes) alles Shape3d's mit neuer Appearance versorgt.


----------

