# Java3D Canvas post Renderer und?



## Developer_X (20. Sep 2009)

Hi, ich habe 2 Fragen, bei denen ich dringend hilfe brauche.

1. Es gibt ja Post renderer um sachen wie Graphics auf Canvas3D zu zeichnen, wie kann man aber etwas "dahinter" zeichnen, ich will wissen wie die andere Methode heißt, die man überschreiben kann, 
	
	
	
	





```
canvas = new Canvas3D(config)
        {
        	@Override
            public void postRender() 
            {
        		super.postRender();
            	J3DGraphics2D g = getGraphics2D();            
             	draw_HUD(g);
            	g.flush (true);
            }
        };
```

2.Wie kann man einstellen, wie weit man in die Ferne gucken kann?
Geht das über das SimpleUniverse kann mir bitte jemand ein beispiel geben, danke 


Developer_X

PS: Bin nöchste woche auf klassenfahrt


----------



## Marco13 (20. Sep 2009)

Die andere Methode heißt "preRender". 
Sichtweite: http://www.java-forum.org/spiele-und-multimedia-programmierung/86570-java3d-sichtweite.html

P.S: Rauche gerade eine Zigarette.


----------



## Developer_X (25. Sep 2009)

das erste, mit prerender, hab ich hinbekommen, erstmal, danke,
das zweite, mit sichtweite, hab ich nicht hinbekommen, kannst du mir da nochma ein bisschen helfen?
Ich mache das ganze so;

```
BranchGroup scene = build_3D_World();
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        canvas = new Canvas3D(config)
        {
        	@Override
            public void postRender() 
            {
        		super.postRender();
            	J3DGraphics2D g = getGraphics2D();            
             	draw_HUD(g);
            	g.flush (true);
            }
           	@Override
            public void preRender() 
            {
        		super.postRender();
            	J3DGraphics2D g = getGraphics2D();            
            	
            	g.flush (true);
            }
        };
        canvas.addKeyListener(this);

        add("Center", canvas);
        u = new SimpleUniverse(canvas);
        u.addBranchGraph(scene);
```
Wo sollte ich deiner Meinung das mit View einbauen?


----------



## Marco13 (26. Sep 2009)

Mit canvas.getView() die View holen und ein bißchen rumspielen. Vielleicht auch mal überhttp://java.sun.com/javase/technologies/desktop/java3d/forDevelopers/j3dguide/ViewModel.doc.html drüberschauen (LESEN muss man das wohl nicht...)


----------



## Developer_X (26. Sep 2009)

also ich hab das ma so gemacht;

```
public void prepareWindow()
	{
		setTitle("R2D2-Level_1");
		setSize(d);
		setUndecorated(true);
		setLayout(new BorderLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		BranchGroup scene = build_3D_World();
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        canvas = new Canvas3D(config)
        {
        	@Override
            public void postRender() 
            {
        		super.postRender();
            	J3DGraphics2D g = getGraphics2D();            
            	draw_Foreground_HUD(g);
            	g.flush (true);
            }
           	@Override
            public void preRender() 
            {
        		super.postRender();
            	J3DGraphics2D g = getGraphics2D();            
            	
            	g.flush (true);
            }
        };
        canvas.addKeyListener(this);

        View view = canvas.getView();
        view.setBackClipDistance(100);
        
        add("Center", canvas);
        u = new SimpleUniverse(canvas);
        u.addBranchGraph(scene);
       
        
		setVisible(true);		
	}
```
und er wirft mir ne NullPointerException in der Zeile:

```
view.setBackClipDistance(100);
```


----------



## Developer_X (26. Sep 2009)

@Edit
schon gelöst


----------

