Probleme mit Wolkenbewegung

Status
Nicht offen für weitere Antworten.

ProggerSchaf

Mitglied
Hmm also irgendwie funktioniert die Bewegung des Himmels nicht. Erkent jmd den Fehler?
Wäre nett.

Der code steht in einer Methode die beim Update aufgerufen wird.

Code:
 Vector3f tex1, tex2 , skyboxt;

        tex1 = waterTexture1.getTranslation();
        tex2 = waterTexture2.getTranslation();
        skyboxt = up.getTranslation();

        	
        
      
        
        //These are to keep the float from getting too big. They offer the possibility of a jump, but nobody should notice.
        if(tex1.getX() > 1000)
            waterTexture1.setTranslation(new Vector3f(0,0,0));
        if(tex2.getZ() > 1000)
            waterTexture2.setTranslation(new Vector3f(0,0,0));
        if(skyboxt.x > 1000){
        	skybox.setLocalTranslation(new Vector3f(0,0,0));
        
        }
      
        //Moves our water, nice and slowly.
        tex1.x += .2 * tpf;
        tex2.y += .09 * tpf;
        skyboxt.x += .05 * tpf;
       
       
        //The usual.

        waterQuad.updateRenderState();
        waterQuad.updateGeometricState(tpf, true);          
        skybox.updateRenderState();
        skybox.updateGeometricState(tpf, false);
 
Am Anfang sollte es kurz funktionieren. Aber wenn der skyboxt Vector zu groß wird, ignorierst du ihn mit einfach. Probiere mal sowas:

Code:
if(skyboxt.x > 1000){ 
   skyboxt.x = 0;
}

Ich hoffe, dass skybox nicht wirklich eine Skybox ist - die sollte nämlich immer die Kamera genau im Zentrum haben. Für einen Wolken-Layer kannst du ein extra Quad oder so benutzen. Irgendwo im Forum schwirrt auch der Code für einen animierten Skydome herum (allerdings weiss ich nicht, ob er auch Wolken hat).
 
Dein Vorschlag hab ich schon getestet ^^ - Geht nicht.

Aber ich denke mal ich weiß wie ich das mache, ich geb ein paar Planes einfach Wolkentexturen und verschiebe sie dann vor einem blauen Skybackground.

So müsste das doch gehen und wenn ich sie relativ zur Skybox und zur Kamera halte, sieht das denk ich realistisch aus.

Ansonten klappt das Wasser jetzt ^^
 
Wie gesagt, die Skybox muss zur Kamera zentriert sein. Das mit den Extra-Planes ist die übliche Lösung (theoretisch könnte man natürlich die Skybox animieren, aber das wird schwierig mit den Verzerrungen und so...)
 
So Ich hab jetzt ne Box unter die skyboxhimmel gelegt die sich bewwegt, aber wenn die Box wandert, was recht gut aussieht hab ich das Problem, das die Textur die Wolke flackert, ab und zu gespiegelt wird und son Mist kann ich die Irgendwie in ihrere uasrichtung festmachen oder so?



Code:
  private void createWolken(){
    	
    	wolke = new Box("Wolke", new Vector3f( 0, 400, 0 ), new Vector3f( 50, 399.999f, 50) );	
    	Vector3f vect = skybox.getLocalTranslation();
    	vect.z = vect.z - 0.01f;
    	wolke.setLocalTranslation(vect);
    	
    	wolke.setLightCombineMode(LightState.OFF);
    	TextureState Wolke = display.getRenderer().createTextureState();
 	   	Texture wlke = TextureManager.loadTexture(WaterTest.class.getClassLoader().getResource("game/Wolke1.jpg"), Texture.FM_LINEAR, Texture.FM_LINEAR);
 	   	wlke.setWrap(Texture.WM_WRAP_S_WRAP_T);
 	   	wlke.setApply(Texture.AM_MODULATE);
 	   	wlke.setScale(new Vector3f(1f, 1f, 1f));
 	   	Wolke.setTexture(wlke);
 	   	wolke.setRenderState(Wolke);
 	   	
        CullState cullState = display.getRenderer().createCullState();
        cullState.setCullMode(CullState.CS_NONE);
        cullState.setEnabled(true);
        wolke.setRenderState(cullState);
 	   	
 	   	
    	rootNode.attachChild(wolke);
    	
    }



Code:
 private void updateWolke()
    {
    	Vector3f vec = wolke.getLocalTranslation();
    	
    	vec.x =vec.x + 0.01f;
    
    	wolke.setLocalTranslation(vec);
    	
    	
    	
    }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben