# "verstümmelte Flächen" nach TransparenzInterpolation



## aze (4. Aug 2010)

Hi

Ich hab auf den Flächen einer Branchgroup einen TransparenzInterpolator laufen lassen ,der alle Flächen abwechselnd ein und ausblendet.Das klappt auch.Allerdings sehen die Flächen danach leciht "verstümmelt" aus , wie man auf dem angehängten Screenshot sehen kann.Woran kann das liegen ?

Edit: Was mir auch merkwürdig vorkamm ist ,das die Flächen auf die ich den Interpolator angewendet habe, keine TransparencyAttributes besassen.Ich musste den Flächen erstmal ein solches Obejkt zuweisen bevor ich interpolieren konnte.Wie kann es sein ,dass die Flächen keine solchen Objekte besitzen ? Ich lade die betreffenden Flächen aus einer .obj Datei ein.

Schöne Grüße

Aze


----------



## truesoul (4. Aug 2010)

Erstmal zur zweiten fragen.
.obj Datei enthalten meines wissens keine Attribute Informationen wie z.B ( Transparenz, Farbe usw ). Anders als wie bei VRML Dateien.
Schau dir mal eine obj Datei in Nodpad++ oder Co. an , sind eigentlich nur Koodinaten die drin stehen.
Falls ich falsch liege, verbessert mich  

Und zur ersten frage.
Habe leider noch nicht mit den TransparencyInterpolator gearbeitet bzw verwenden.
Interessant wäre es , wie es den vor der Interpolation aussah? 

Mfg


----------



## aze (4. Aug 2010)

Hmm okay.Danke für die Antwort auf Frage 2.

Das Zahnfleisch sah vorher ganz normal aus.Siehe Screenshot im Anhang


----------



## truesoul (4. Aug 2010)

Also ich wüsste  nicht woran es liegen könnte denn 


```
Alpha alpha = new Alpha(-1, Alpha.DECREASING_ENABLE, 0, 10000, 5000, 0, 1000, 5000, 0, 1000); 
            TransparencyAttributes target = new TransparencyAttributes(TransparencyAttributes.BLENDED, 0.5f);
            target.setCapability(TransparencyAttributes.ALLOW_VALUE_WRITE);

            TransparencyInterpolator transInt  = new TransparencyInterpolator(alpha, target);
            transInt.setSchedulingBounds(bigBounds);
            transInt.setMinimumTransparency(1f);
            transInt.setMaximumTransparency(0f);


...

            appereance.setTransparencyAttributes(target);
```

dieser Code "verstümmelt" meine Objekte nicht ( VRML ).

Wie schaut denn dein Code aus?


----------



## aze (4. Aug 2010)

Mein Code


```
private void createGumAnimations(Alpha a) {

        System.out.println("Create Gum Animation");

        List<TransparencyInterpolator> createGumTransInterpolator = createGumTransInterpolator(JawsConst.UPPER, a);

        for (TransparencyInterpolator transparencyInterpolator : createGumTransInterpolator) {

            animation.addChild(transparencyInterpolator);

        }

        List<TransparencyInterpolator> createGumTransInterpolator1 = createGumTransInterpolator(JawsConst.LOWER, a);

        for (TransparencyInterpolator transparencyInterpolator : createGumTransInterpolator1) {

            animation.addChild(transparencyInterpolator);

        }

    }

    private List<TransparencyInterpolator> createGumTransInterpolator(int g, Alpha a) {

        List<TransparencyAttributes> gumTrans = getGumTrans(g);

        List<TransparencyInterpolator> transparencyInterpolators = new ArrayList<TransparencyInterpolator>();

        for (TransparencyAttributes transparencyAttributes : gumTrans) {

            TransparencyInterpolator ti = new TransparencyInterpolator(
                    a,
                    transparencyAttributes,
                    (jawsMode == JawsConst.LINE) ? 1.0f : 0.0f,
                    (jawsMode == JawsConst.LINE) ? 0.0f : 1.0f);
            ti.setSchedulingBounds(new BoundingSphere(new Point3d(0, 0, 0), 10000.0));

            transparencyInterpolators.add(ti);


        }


        return transparencyInterpolators;
    }

    private List<TransparencyAttributes> getGumTrans(int g) {
        BranchGroup gum = gums[g];
        lookForShape3d(gum.getAllChildren());

        List<TransparencyAttributes> tas = new ArrayList<TransparencyAttributes>();

        TransparencyAttributes ta = new TransparencyAttributes(TransparencyAttributes.BLENDED, 0);
        ta.setCapability(TransparencyAttributes.ALLOW_VALUE_WRITE);
        ta.setCapability(TransparencyAttributes.ALLOW_VALUE_READ);

       

        for (Shape3D shape3D : shapes) {

            if (shape3D.getAppearance().getTransparencyAttributes() == null) {
                shape3D.getAppearance().setTransparencyAttributes(ta);

                //return ta;
            }

            tas.add(shape3D.getAppearance().getTransparencyAttributes());

        }

        return tas;


    }
    
    List<Shape3D> shapes = new ArrayList<Shape3D>();

    private void lookForShape3d(Enumeration enumeration) {

        while (enumeration.hasMoreElements()) {
            Object nextElement = enumeration.nextElement();
            //System.out.println(nextElement.getClass().toString());

            if (nextElement instanceof Shape3D) {
                shapes.add((Shape3D) nextElement);
            }

            if (nextElement instanceof Group) {
                lookForShape3d(((Group) nextElement).getAllChildren());
            }

        }

    }
```


----------



## aze (4. Aug 2010)

Ich habe es.

View.setDepthBufferFreezeTransparent(false) lößt das Problem.Siehe dazua uch den Link:

Re: [JAVA3D] TransparencyAttributes only works with SCREEN_DOOR


----------



## aze (4. Aug 2010)

Zurückruder.Durch die angegebene Funktion ergeben sich andere Probleme.


----------



## aze (4. Aug 2010)

aze hat gesagt.:


> Ich habe es.
> 
> View.setDepthBufferFreezeTransparent(false) lößt das Problem.Siehe dazua uch den Link:
> 
> Re: [JAVA3D] TransparencyAttributes only works with SCREEN_DOOR



Die Lösung scheint doch zu gehen sofern alle betroffenen Flächen über ein RenderingAttribute verfügen.


----------



## truesoul (5. Aug 2010)

Na dann ist alles bestens  


Wieso verwendest du eigentlich nicht VRML Dateien (VRML Loader) ?
Frage nur aus reiner Interesse  

Mfg


----------



## aze (5. Aug 2010)

Ich muss mit dem arbeiten was ich bekomme und das sind .obj Files.Ich selbst habe keine Ahnung von dem Design 3 dimensionaler Objekte.


----------

