-
1. Data: 2010-12-13 23:18:13
Temat: Open GL - obroty
Od: Andrzej <a...@g...com>
Witam,
Czy ktoś może mi podpowiedzieć w jaki sposób wykonać obrót modelu za
pomocą biblioteki OpenGL w taki sposób, aby model obracał się dookoła
wszystkich osi przechodzących przez środek tego modelu, przy czym osie
te muszą być równoległe do osi układu współrzędnych kamery. Bez
ustawionej perspektywy udało mi się wykonać prawidłowo tylko 2 obroty
dookoła osi x oraz y, natomiast w przypadku osi z model wiruje
względem osi z własnego układu współrzędnych. Z ustawioną perspektywą
model obraca się tylko dookoła osi własnego własnego układu
współrzędnych, a nie jest to efekt, który chce uzyskać. Przykładowy
kod w LWOGL w javie:
protected void GL_beginDraw() {
Rectangle bounds = this.glcanvas.getParent().getClientArea();
this.glcanvas.setBounds( bounds );
this.glcanvas.setCurrent();
try {
GLContext.useContext(this.glcanvas);
} catch(LWJGLException e) {
e.printStackTrace();
}
GL11.glViewport(2, 2, bounds.width-2, bounds.height-2);
this.setupGLParameters();
//this.setupGLPerspective(bounds);
// display world reference frame - camera eye
GL11.glMatrixMode( GL11.GL_MODELVIEW );
GL11.glLoadIdentity();
GL11.glScalef(this.zoomFactor, this.zoomFactor,
this.zoomFactor );
// translate the following model with respect of the camera
GL11.glTranslatef(this.translate[0], this.translate[1],
this.translate[2]);
GL11.glRotatef(this.rotate[0], 1f, 0f, 0f);
GL11.glRotatef(this.rotate[1], 0f, 1f, 0f);
GL11.glRotatef(this.rotate[2], 0f, 0f, 1f);
// zoom the model
GL11.glScalef(this.zoomFactor, this.zoomFactor,
this.zoomFactor );
}
Pozdrawiam
AP
-
2. Data: 2010-12-14 10:41:46
Temat: Re: Open GL - obroty
Od: "Wojciech \"Spook\" Sura" <s...@s...please.op.pl>
Dnia 14-12-2010 o 00:18:13 Andrzej <a...@g...com> napisał(a):
(...)
Jeśli właściwie zrozumiałem pytanie, to obróć świat tak, by osie układu
współrzędnych dopasować do osi kamery, następnie wykonaj odpowiednie
obroty, a potem obróć świat z powrotem :)
> Pozdrawiam
> AP
Pozdrawiam -- Spook.
--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/