Re: openGL
Sergio Pérez Camacho <sergio.perez.camacho <at> gmail.com>
2011-08-22 14:46:41 GMT
Es un poco más complejo. Cuando pintas, el objeto que estés pintando se coloca en el mundo justo donde diga la modelview matrix.Cuando usas glTranslate / rotate y todo eso, lo que haces es modificar la modelview. Los cambios se van acumulando. Así, para dar soporte a jerarquías, vas a necesitar hacer push y pop de las matrices.
E.g:
Cubo A depende del origen de coordenadas, cubo B y C, depende de la posición de A, cubo D depende de B. (Puede que no se llamen así la funciones exactamente) Esto teniendo activa la modelview matrix, no la de proyección:
glLoadIdentify; // Sin rotaciones, Posición 0,0,0
glTranslate de A
glRotate de A
glPushMatrix
glTranslate de B
glRotate de B
glPushMatrix // Sobra, pero no si metes alguno más cuya base en la matriz de B
glTranslate de D
glRotate de D
glPopMatrix // sobra ...
glPopMatrix
glTranslate de C
glRotate de C
Espero que te aclare algo. De todas formas, recuerda que no te recomendé el libro rojo, y que hay mejores opciones (no como referencia, pero sí para entender OpenGL). Puedes ir al mensaje de la lista y ver las diferentes opciones. Si te recomendé ese el primero, es que me volví loco.
Un saludo,
Sergio.
--
Sergio Pérez Camacho :[ ID-PGP: 564B7D7F ]:
El 22 de agosto de 2011 16:10, Ignacio Díez
<ignacio.diez.arias <at> gmail.com> escribió:
El 22/08/11 13:13, Sergio Pérez Camacho escribió:
¿comprendes ya cómo se computa la posición/rotación de un objeto en OpenGL?
Más o menos. Es como si tuvieras un cursor o puntero 3D: lo llevas al sitio donde quieres tener tu objeto, lo rotas y escalas como quieres, y entonces, dibujas el objeto.
De momento sólo manejo primitivas básicas, no he construido objetos complejos.
<div>
<p>Es un poco más complejo. Cuando pintas, el objeto que estés pintando se coloca en el mundo justo donde diga la modelview matrix.Cuando usas glTranslate / rotate y todo eso, lo que haces es modificar la modelview. Los cambios se van acumulando. Así, para dar soporte a jerarquías, vas a necesitar hacer push y pop de las matrices. </p>
<div>
<br>
</div>
<div>E.g:</div>
<div><br></div>
<div>Cubo A depende del origen de coordenadas, cubo B y C, depende de la posición de A, cubo D depende de B. (Puede que no se llamen así la funciones exactamente) Esto teniendo activa la modelview matrix, no la de proyección:</div>
<div><br></div>
<div>glLoadIdentify; // Sin rotaciones, Posición 0,0,0</div>
<div><br></div>
<div>glTranslate de A</div>
<div>glRotate de A</div>
<div><div>glscale de A</div></div>
<div><br></div>
<div>glPushMatrix</div>
<div><br></div>
<div>
<div>glTranslate de B<br>
</div>
<div>glRotate de B</div>
<div><div>glscale de B</div></div>
</div>
<div><br></div>
<div>glPushMatrix // Sobra, pero no si metes alguno más cuya base en la matriz de B</div>
<div><br></div>
<div>
<div>glTranslate de D</div>
<div>glRotate de D</div>
<div><div>glscale de D</div></div>
</div>
<div><br></div>
<div>glPopMatrix // sobra ...</div>
<div><br></div>
<div>glPopMatrix </div>
<div><br></div>
<div><div>
<div>glTranslate de C</div>
<div>glRotate de C</div>
<div><div>glscale de C</div></div>
</div></div>
<div><br></div>
<div>Espero que te aclare algo. De todas formas, recuerda que no te recomendé el libro rojo, y que hay mejores opciones (no como referencia, pero sí para entender OpenGL). Puedes ir al mensaje de la lista y ver las diferentes opciones. Si te recomendé ese el primero, es que me volví loco.</div>
<div><div><div><div><div>
<br clear="all">Un saludo,<br>Sergio.<br><br>--<br>Sergio Pérez Camacho :[ ID-PGP: 564B7D7F ]:<br><br><br><br><br><br><br><div class="gmail_quote">El 22 de agosto de 2011 16:10, Ignacio Díez <span dir="ltr"><<a href="mailto:ignacio.diez.arias <at> gmail.com">ignacio.diez.arias <at> gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote">
<br>
El 22/08/11 13:13, Sergio Pérez Camacho escribió:<div class="im">
<br><blockquote class="gmail_quote">
<br>
¿comprendes ya cómo se computa la posición/rotación de un objeto en OpenGL?<br><br>
</blockquote>
<br>
</div>
Más o menos. Es como si tuvieras un cursor o puntero 3D: lo llevas al sitio donde quieres tener tu objeto, lo rotas y escalas como quieres, y entonces, dibujas el objeto.<br><br>
De momento sólo manejo primitivas básicas, no he construido objetos complejos.<br>
</blockquote>
</div>
<br>
</div></div></div></div></div>
</div>