# Java 3D Problem



## J3DFRAGE (27. Mrz 2011)

Hallo Programmierer,

ich habe ein kleines Problem. Ich programmiere seit heute morgen mit Java3D für meine Facharbeit. 





Soweit bin ich nun. War ein ziemlich schwieriger weg bis hierhin. Echt nervenaufreibend. 
Nun zu meinem Problem:

Auf dem Bild sieht man ja das Fußballfeld, dass hinten abschnitten ist. Zoomt man näher ran, wird der Teil nach und nach sichtbar. Zoomt man raus, vergrößert er sich. Mit welcher Methode kann ich einstellen, dass man immer alles sieht? Ich denke mal dieses "Feature" ist zu Performancezwecken gedacht. Bei meiner kleinen 3D-Welt allerdings nicht nötig, denke ich.

Weiß jemand Rat?


----------



## J3DFRAGE (27. Mrz 2011)

Hier eben als Nachtrag der Konstrukter und die addlight() methode. Dort was verändern?


```
public Animation3d()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Standardeinstellung fuer das Betrachteruniversum
        myCanvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());

        //Aufbau des SimpleUniverse:
        //Zuerst Erzeugen zusammen mit dem Canvas
        SimpleUniverse simpUniv = new SimpleUniverse(myCanvas3D);

        //Standardpositionierung des Betrachters
        simpUniv.getViewingPlatform().setNominalViewingTransform();

        //Die Szene wird in dieser Methode erzeugt.
        createSceneGraph(simpUniv);

        //Hinzufuegen von Licht
        addLight(simpUniv);

        //Hierdurch kann man mit der Maus den Betrachterstandpunkt veraendern
        OrbitBehavior ob = new OrbitBehavior(myCanvas3D);
        ob.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),Double.MAX_VALUE));
        simpUniv.getViewingPlatform().setViewPlatformBehavior(ob);

        this.setTitle("Eine kleine Animation");
        this.setSize(1000,1000);
        this.getContentPane().add("Center", myCanvas3D);
        this.setVisible(true);

    }

    //Hier wird etwas Licht zu der Szene hinzugefuegt.
    public void addLight(SimpleUniverse su)
    {

        BranchGroup bgLight = new BranchGroup();

        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        Color3f lightColour1 = new Color3f(1.0f,1.0f,1.0f);
        Vector3f lightDir1  = new Vector3f(-10.0f,0.0f,-5.5f);
        DirectionalLight light1 = new DirectionalLight(lightColour1, lightDir1);
        light1.setInfluencingBounds(bounds);

        bgLight.addChild(light1);
        su.addBranchGraph(bgLight);
    }

}
```


----------



## J3DFRAGE (27. Mrz 2011)

Habe es gerade selbst herausgefunden. Für diejenigen, die es brauchen:

Da ich in meinem Beispiel das simpleUniverse benutzt habe, werden alle Werte auf Standard gesetzt. Um die Sichtweite, also den Clippingbereich zu erhöhen, muss man auf den View vom simpleUniverse zugreifen und dort  den BackClipDistance einstellen.

Dies macht man mit: 


```
View v = simpUniv.getViewer().getView();
v.setBackClipDistance(Sichtweite);
```

Standard Sichtweite ist auf 10 festgelegt.


----------

