Java3D - Shape3D - Material

Hallo,

ich habe mir ein Shape3D aus einem QuadArray gebastelt. Soweit hat alles wunderbar geklappt. Ich kann auch mit einem Appearance die Farbe verändern. Doch irgendwie klappt es nicht, dass ich mit dem Appearance ein von mir definiertes Material an das Shape3D übergebe. Hier mal die betreffenden Auszüge aus dem Code:

sugarQuadArray = new QuadArray(24, QuadArray.COORDINATES | QuadArray.NORMALS);

sugarMaterial = new Material(new Color3f(0.8f, 0.9725f, 0.9076f), new Color3f(0f, 0f, 0f), new Color3f(0.58f, 0.965f, 0.8078f), new Color3f(1f, 1f, 1f), 128f);
PolygonAttributes sugarPolygones = new PolygonAttributes(PolygonAttributes.POLYGON_FILL, PolygonAttributes.CULL_NONE, 0f);
LineAttributes sugarLines = new LineAttributes(1f, LineAttributes.PATTERN_SOLID, true);
Appearance sugarAppearance = new Appearance();
sugarAppearance.setMaterial(sugarMaterial); sugarAppearance.setPolygonAttributes(sugarPolygones); sugarAppearance.setLineAttributes(sugarLines);
sugarS3D = new Shape3D(sugarQuadArray, sugarAppearance);

Habe ich vielleicht beim Erzeugen des QuadArray dafür wichtige Flags nicht gesetzt? Mir ist es ein Rätsel, warum es nicht funktioniert. Hat einer von euch Rat?

Gruß
Schorsch

Moin

Doch irgendwie klappt es
nicht, dass ich mit dem Appearance ein von mir definiertes
Material an das Shape3D übergebe.

(Der Code sieht soweit gut aus, deshalb mal 2 allgemeine Takte zu dem Thema)

  1. Hast du alle Normales sicher explizit gesetzt ? Sind die auch alle normalisiert (Länge = 1) ? Sind die zur richtigen Seite orientiert ?

Wenn du nicht sicher bist: NormalGenerator ist dein Freund. Der zerhaut zwar manchmal die Daten ein bisschen, aber man sieht dann wenigstens irgendwas.

  1. Hast du eine Lichtquelle eingebaut ? Ist die auch aktiv ?

Die direkt in Apperance gesetzten Farben sieht man auch ohne Licht, die Material-Farben aber nicht.

cu