Ignacio Díez | 22 Aug 13:03 2011
Picon

openGL

Hola, listeros:

	Aprovechando el veranito me ha dado por aprender OpenGL, que era algo 
que tenía pendiente desde hace tiempo. Estoy con el "libro rojo", y sólo 
llevo 4 capitulillos, así que no sé todavía gran cosa, pero tengo una 
duda que os quiero preguntar, que sé que por aquí ronda gente que le da 
a estas cosas:

	Imaginemos que pinto dos cubos, uno al lado del otro, y quiero 
controlar la rotación de uno de ellos. Hasta donde yo sé (que ya digo 
que es poco), cada vez que gire el cubo tengo que *reconstruir* la 
escena entera. No hablo de repintar, que eso está claro, sino de poner 
el cubo sin rotar y luego el rotado. Con dos cubos es asumible, claro 
está, pero cuando tienes una escena con millones de polígonos... el 
rendimiento baja cosa mala.

	¿Esto es así? Es decir: ¿se deja en manos del desarrollador la 
implementación de un sistema que, por ejemplo, represente la escena como 
objetos (la OO que todos conocemos) y se encargue de cambiar las 
propiedades sólo del objeto que cambia? ¿O es que todavía no he llegado 
a esa parte del libro :P ?

	Lo siento si es una pregunta muy "noob". Gracias de antemano por la 
respuesta.
Sergio Pérez Camacho | 22 Aug 13:13 2011
Picon

Re: openGL

Es tu responsabilidad.

¿comprendes ya cómo se computa la posición/rotación de un objeto en OpenGL?


Un saludo,
Sergio.

--
Sergio Pérez Camacho :[ ID-PGP: 564B7D7F ]:






El 22 de agosto de 2011 13:03, Ignacio Díez <ignacio.diez.arias <at> gmail.com> escribió:
Hola, listeros:

       Aprovechando el veranito me ha dado por aprender OpenGL, que era algo que tenía pendiente desde hace tiempo. Estoy con el "libro rojo", y sólo llevo 4 capitulillos, así que no sé todavía gran cosa, pero tengo una duda que os quiero preguntar, que sé que por aquí ronda gente que le da a estas cosas:

       Imaginemos que pinto dos cubos, uno al lado del otro, y quiero controlar la rotación de uno de ellos. Hasta donde yo sé (que ya digo que es poco), cada vez que gire el cubo tengo que *reconstruir* la escena entera. No hablo de repintar, que eso está claro, sino de poner el cubo sin rotar y luego el rotado. Con dos cubos es asumible, claro está, pero cuando tienes una escena con millones de polígonos... el rendimiento baja cosa mala.

       ¿Esto es así? Es decir: ¿se deja en manos del desarrollador la implementación de un sistema que, por ejemplo, represente la escena como objetos (la OO que todos conocemos) y se encargue de cambiar las propiedades sólo del objeto que cambia? ¿O es que todavía no he llegado a esa parte del libro :P ?

       Lo siento si es una pregunta muy "noob". Gracias de antemano por la respuesta.
_______________________________________________
CRySoL mailing list
http://crysol.org/
https://arco.esi.uclm.es/cgi-bin/mailman/listinfo/crysol

<div>
<div>Es tu responsabilidad.</div>
<div><br></div>
<div>&iquest;comprendes ya c&oacute;mo se computa la posici&oacute;n/rotaci&oacute;n de un objeto en OpenGL?</div>
<div><br></div>
<div><br></div>
<div>Un saludo,<br>Sergio.<br><br>--<br>Sergio P&eacute;rez Camacho :[ ID-PGP: 564B7D7F ]:<br><br><br><br><br><br><br><div class="gmail_quote">El 22 de agosto de 2011 13:03, Ignacio D&iacute;ez <span dir="ltr">&lt;<a href="mailto:ignacio.diez.arias <at> gmail.com">ignacio.diez.arias <at> gmail.com</a>&gt;</span> escribi&oacute;:<br><blockquote class="gmail_quote">
Hola, listeros:<br><br>
 &nbsp; &nbsp; &nbsp; &nbsp;Aprovechando el veranito me ha dado por aprender OpenGL, que era algo que ten&iacute;a pendiente desde hace tiempo. Estoy con el "libro rojo", y s&oacute;lo llevo 4 capitulillos, as&iacute; que no s&eacute; todav&iacute;a gran cosa, pero tengo una duda que os quiero preguntar, que s&eacute; que por aqu&iacute; ronda gente que le da a estas cosas:<br><br>
 &nbsp; &nbsp; &nbsp; &nbsp;Imaginemos que pinto dos cubos, uno al lado del otro, y quiero controlar la rotaci&oacute;n de uno de ellos. Hasta donde yo s&eacute; (que ya digo que es poco), cada vez que gire el cubo tengo que *reconstruir* la escena entera. No hablo de repintar, que eso est&aacute; claro, sino de poner el cubo sin rotar y luego el rotado. Con dos cubos es asumible, claro est&aacute;, pero cuando tienes una escena con millones de pol&iacute;gonos... el rendimiento baja cosa mala.<br><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&iquest;Esto es as&iacute;? Es decir: &iquest;se deja en manos del desarrollador la implementaci&oacute;n de un sistema que, por ejemplo, represente la escena como objetos (la OO que todos conocemos) y se encargue de cambiar las propiedades s&oacute;lo del objeto que cambia? &iquest;O es que todav&iacute;a no he llegado a esa parte del libro :P ?<br><br>
 &nbsp; &nbsp; &nbsp; &nbsp;Lo siento si es una pregunta muy "noob". Gracias de antemano por la respuesta.<br>
_______________________________________________<br>
CRySoL mailing list<br><a href="http://crysol.org/" target="_blank">http://crysol.org/</a><br><a href="https://arco.esi.uclm.es/cgi-bin/mailman/listinfo/crysol" target="_blank">https://arco.esi.uclm.es/cgi-bin/mailman/listinfo/crysol</a><br>
</blockquote>
</div>
<br>
</div>
</div>
Ignacio Díez | 22 Aug 16:10 2011
Picon

Re: openGL


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.
Sergio Pérez Camacho | 22 Aug 16:46 2011
Picon

Re: openGL

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
glscale de A

glPushMatrix

glTranslate de B
glRotate de B
glscale de B

glPushMatrix // Sobra, pero no si metes alguno más cuya base en la matriz de B

glTranslate de D
glRotate de D
glscale de D

glPopMatrix // sobra ...

glPopMatrix 

glTranslate de C
glRotate de C
glscale 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&aacute;s complejo. Cuando pintas, el objeto que est&eacute;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.&nbsp;As&iacute;, para dar soporte a jerarqu&iacute;as, vas a necesitar hacer push y pop de las matrices.&nbsp;</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&oacute;n de A, cubo D depende de B.&nbsp;(Puede que no se llamen as&iacute; la funciones exactamente)&nbsp;Esto teniendo activa la modelview matrix, no la de proyecci&oacute;n:</div>
<div><br></div>
<div>glLoadIdentify; // Sin rotaciones, Posici&oacute;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&aacute;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&nbsp;</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&eacute; el libro rojo, y que hay mejores opciones (no como referencia, pero s&iacute; para entender OpenGL). Puedes ir al mensaje de la lista y ver las diferentes opciones. Si te recomend&eacute; ese el primero, es que me volv&iacute; loco.</div>
<div><div><div><div><div>
<br clear="all">Un saludo,<br>Sergio.<br><br>--<br>Sergio P&eacute;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&iacute;ez <span dir="ltr">&lt;<a href="mailto:ignacio.diez.arias <at> gmail.com">ignacio.diez.arias <at> gmail.com</a>&gt;</span> escribi&oacute;:<br><blockquote class="gmail_quote">
<br>
El 22/08/11 13:13, Sergio P&eacute;rez Camacho escribi&oacute;:<div class="im">
<br><blockquote class="gmail_quote">
<br>
&iquest;comprendes ya c&oacute;mo se computa la posici&oacute;n/rotaci&oacute;n de un objeto en OpenGL?<br><br>
</blockquote>
<br>
</div>
M&aacute;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&oacute;lo manejo primitivas b&aacute;sicas, no he construido objetos complejos.<br>
</blockquote>
</div>
<br>
</div></div></div></div></div>
</div>

Gmane