# nicht sichtbare Kanten eines Würfels



## Lim33 (3. Dez 2003)

Hallo,

ich stelle in meiner Anwendung einen Würfel transparent dar. Leider kann ich in dieser Darstellungsform die hinteren Kanten (normal verdeckt) des Würfels sehen. Wie kann ich die Sichtbarkeit der Kanten einstellen?

Für jede Hilfe bin ich dankbar!

MfG Lim33


----------



## hoon (3. Dez 2003)

Hi,

so recht verstehe ich das nicht. Wenn Du einen transparenten Wuerfel erzeugst, so wirst Du doch die dahinterliegenden Dinge (auch die des eigenen Koerpers) sehen koennen. Die Intensitaet des durchdringenden Hintergrundes bestimmt der Transparenz-Faktor. Vielleicht kannst Du die Sache noch einmal genauer beschreiben.

Ich hatte auch einmal ein Mini-Beispiel gemacht, in dem ich einen selbstdefinierten geometrischen Koerper transparent gestaltete. Das folgende Aussehen hatte ich eingestellt:

```
private Appearance app() {
    Appearance appear = new Appearance();

    PolygonAttributes polyatt = new PolygonAttributes();
    polyatt.setPolygonMode(PolygonAttributes.POLYGON_FILL); // ist normalerweise default
    polyatt.setCullFace(PolygonAttributes.CULL_NONE);
    polyatt.setBackFaceNormalFlip(true);

    TransparencyAttributes ta = new TransparencyAttributes();
    ta.setTransparency(0.7f); // je naeher der 1, desto tranparenter
    ta.setTransparencyMode(TransparencyAttributes.NICEST);

    ColoringAttributes ca = new ColoringAttributes();
    ca.setShadeModel(ColoringAttributes.SHADE_FLAT);

    appear.setPolygonAttributes(polyatt);
    appear.setColoringAttributes(ca);
    appear.setTransparencyAttributes(ta);

    Color3f Ambient  = new Color3f(0.0f, 1.0f, 0.0f); // the ambient color reflected off the surface of the material - greift nicht???
    Color3f Emissiv  = new Color3f(0.0f, 0.0f, 0.0f); // color of the light the material emits, if any
    Color3f Diffuse  = new Color3f(1.0f, 0.0f, 0.0f); // color of the material when illuminated
    Color3f Specular = new Color3f(1.0f, 1.0f, 1.0f); // specular color of the material (highlights)
    appear.setMaterial(new Material(Ambient, Emissiv, Diffuse, Specular, 64.0f));

    return appear;
  }
```
Zusaetzlich hatte ich noch ein direktionales Licht und eine Background-Farbe angesetzt.

Der Koerper war also transparent dargestellt und Kanten waren gar nicht zu sehen. Natuerlich konnte man den verdeckten Teilbereich des eigenen Körpers durch die Transparenz auch sehen, jedoch eher milchglass-ähnlich.

Vielleicht hilft Dir das ein kleines Stück weiter. Wenn nicht, dann muessen wir die Sache mal prinzipiell auseinanderpflücken.

Gruss hoon


----------



## Oxygenic (14. Dez 2003)

Ich nehme an, er hat eine Box mit GENERATE_NORMALS erzeugt - und in dem Fall ist es vollkommen korrekt, dass die hinteren (weil inneren) Kanten nicht sichtbar sind. Verwendet man statt dessen GENERATE_NORMALS_INWARD sind nur noch die inneren Kanten sichtbar. Einzige Abhilfe: der Würfel muß komplett selbst erstellt werden, und zwar ohne Face-Culling und mit normals für alle Flächen der Shape3D-Geometrie.


----------

