Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Curvas Bezier

Iniciado por misscelan, 21 de Agosto de 2006, 12:23:22 AM

« anterior - próximo »

misscelan

Hola,

Parto de un bezier patch con 9 puntos de control 3x3. Dependiendo de diversos factores los subdivido(de momento no he puesto límite).

Pero tengo dudas a la hora de renderizarlo ¿vosotros qué métodos usáis?. Directamente los puntos de control que sería lo más rápido aunque no exacto, concantenando curvas bezier o splines, otros?

Muchas gracias.

Un saludo.

misscelan

Necesitaba rescatar este post.

Al final he creado las curvas de bezier bien hechas. Tengo los puntos generados en un array junto con los puntos de control.

Lo estoy probando con un arco. Según el archivo .bsp existen tres patches que juntos forman el arco.

Generando las curvas de bezier sólo consigo los puntos internos del arco por eso he añadido también al array los puntos de control. Para que parezca una estructura sólida (no se me ocurría otra manera).

El problema viene al renderizarlo no sé como pasar toda esa información y que forme el arco.



La primera es con GL_POINTS la segunda es con GL_TRIANGLE_STRIP para que puedieseis ver mejor como era la forma.

Los puntos generados puedo ordenarlos pero los control point leidos del archivo bsp no sé que patrón usan.

Podéis echarme una mano?.

Muchas gracias.

Un saludo.

BeRSeRKeR

Mírate el código fuente del Titan Engine. Ahí verás cómo generar la superficie en base a los puntos de control.

Web de Ignacio Castaño

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

misscelan

Gracias. A ver si le puedo echar un ojo este finde.

Un saludo.

marcode

¿Y no te sería mejor usar las funciones que proporciona OpenGL para generarlas y renderizarlas?.

Aquí hay un ejemplo.

http://www.geocities.com/valcoey/bezsurftex.html
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

misscelan

Muy interesante, no sabía que ese se puediese hacer así con OpenGL.

Pero tengo dudas. En todos los ejemplos que veo únicamene crean una malla y siempre que la renderizan llaman a glEvalMesh2 y no veo que se pase un identificador de malla para seleccionar una específica.

En mi proyecto necesito cargar varias.

Si sólo se puediese de esta manera tendría que calcular las mallas de bezier en cada interación. Supongo que eso será más costoso que calcular toda la información de mallas una única vez al principio "a mano" y enviarlo en cada iteración con glDrawArrays o algo similar.  ¿Me equivoco? ¿Hay otra opción?

Gracias y un saludo.

marcode

Citar
Supongo que eso será más costoso que calcular toda la información de mallas una única vez al principio "a mano" y enviarlo en cada iteración con glDrawArrays o algo similar. ¿Me equivoco? ¿Hay otra opción?
Imagino que crear "display list" diferentes para cada superficie al principio será la forma más adecuada.

Por otro lado, no sé si viste que hay otra sección donde se habla más detalladamente sobre los evaluadores y que te puede interesar echarle también un vistazo.

http://www.geocities.com/valcoey/evaluators.html
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.