2010-01-16 9 views
10

Haciendo mi clon de Asteroides (en C) Me he enamorado bastante de las entidades basadas en vectores, pero simplemente las he codificado como matrices de puntos xy. Eso estuvo bien para algo como asteroides, pero ¿qué debo hacer si quiero crear modelos 2D más complejos?Modelado de vectores 2D para desarrollo de juegos

Veo que hay an awful lot of 3D modelling software disponibles, así como amplios tutoriales y ayuda para importar modelos 3D en el programa C/C++ de uno para usar con Open GL.

Sin embargo, estoy más interesado en crear modelos 2D basados ​​en vectores que en 3D, ya que estoy feliz de seguir probando juegos en 2D por un tiempo. ¿Existe un concepto como el modelado 2D? ¿Existen herramientas para crear y exportar modelos 2D y bibliotecas para importar modelos 2D específicamente, o simplemente uno crea modelos planos en software 3D y luego los importa (por ejemplo, .3ds, .ms3d) y los coloca planos en el eje z?

Mi único pensamiento hasta ahora fue tal vez usar algo como Inkscape para modelar, generar archivos SVG, y luego usar Cairo para importarlos y representarlos. ¿Funcionará bien, o tienes otras recomendaciones?

Nota Soy un poco de un novato en el modelado de cualquier tipo, así que puede ser haciendo una pregunta tonta ...

Respuesta

6

En cuanto a la programación 2D vectorial juego va, por lo general es el dominio de flash y Flex.

Todavía SVG y cargarlo a través de El Cairo parece ser una solución viable. Aunque me aseguro de tener habilitada la aceleración de hardware (preferiblemente, back-end OpenGL).

En lo que respecta a los formatos 2D, no obtendrás tanto soporte como SVG para ningún formato, así que me quedaré con él. Técnicamente, cosas como Collada o X3D son compatibles con gráficos 2D, pero prácticamente tienen una gran cantidad de inútiles (para un programador 2D).

+0

+1 para flash y flex –

3

SVG es el camino a seguir para 2D :)

Si la velocidad de dibujo es un problema, usted tiene que tener cuidado con lo complicado de sus archivos consiguen sin embargo - y observe que SVG no está optimizado para la velocidad de analizar, por lo que puede incurrir en una penalización significativa de tiempo de inicio mientras carga sus modelos.

+0

+1: el tiempo de inicio no es un problema, lo más importante es mantener el formato en el programa de forma que permita una rápida representación del hardware. –

7

No hay necesidad de votar mi propia respuesta, pero he investigado un poco más sobre el uso de SVG. Como estoy usando OpenGL, parece que OpenVG podría ser una buena combinación.

  • AmanithVG - una implementación comercial de OpenVG construido en OpenGL, con representación de software y hardware. Descargar disponible solo para evaluación, y funciona muy bien, aunque no sé cuánto cuesta.
  • ShivaVG - al autor le molestaba que AmanithVG fuera comercial, por lo que hizo su propia implementación de código abierto en puro ANSI C. Sin embargo, no se ha actualizado durante un tiempo. At SourceForge.
  • Anti-Grain Geometry - no estoy seguro de esto. Creo que hay soporte para SVG, pero creo que solo para renderizar software.
  • librsvg - usa Cairo como un servidor primario para renderizar archivos SVG. Se ve bien.

Parece que todos, excepto librsvg no llegan a realidad permitiendo que los archivos SVG que se cargan en, por lo que presumiblemente es necesario que haya un paso más en el IVS se analizan en las estructuras OpenVG apropiados (que en su mayoría parecen ser grandes matrices de flotación, así que no es tan difícil). También parece haber un mapeo uno a uno de los elementos de SVG a OpenVG, lo cual es prometedor. Por lo que puedo decir, OpenVG fue hecho para SVG.

Probablemente use ShivaVG. Tal vez no sea perfecto, pero atrae al tigre y me encanta la implementación pura de C/OpenGL, y dudo seriamente que esté haciendo todo lo complejo que sea.

+0

Bueno, su pregunta inicial era demasiado amplia. Para el bit OpenGL, ver: http://stackoverflow.com/a/25162290/3588161 – Fizz

Cuestiones relacionadas