Modélisation vectorielle 2D pour le développement de jeux

Faire de mon Astéroïdes clone (en C) je suis plutôt tombé en amour avec un vecteur en fonction des entités, mais j'ai simplement codé en tant que x,y-point des tableaux. Cela a été bien pour quelque chose comme les astéroïdes, mais que dois-je faire si je veux faire des modèles 2D plus complexes?

je remarque qu'il y a beaucoup de logiciels de modélisation 3D là-bas, ainsi que de nombreux tutoriels et de l'aide sur l'importation de modèles 3D dans son programme C/C++ pour une utilisation avec Open GL.

cependant je suis plutôt intéressé par la création de modèles vectoriels 2D que 3D, car je suis parfaitement heureux de continuer à essayer les jeux 2D pendant un certain temps encore. Un tel concept en 2D modélisation existent? Existe-t-il des outils pour créer et exporter des modèles 2D et des bibliothèques pour importer des modèles 2D spécifiquement, ou est-ce que l'on crée simplement des modèles plats dans un logiciel 3D et ensuite importer ces fichiers (par exemple .3ds, .ms3d) et les poser à plat sur l'axe z?

ma seule pensée jusqu'à présent était peut-être d'utiliser quelque chose comme Inkscape pour la modélisation, de générer des fichiers SVG, et ensuite utiliser le Caire pour les importer et les rendre. Cela fonctionne bien, ou avez-vous d'autres recommandations?

Remarque: je suis un peu un novice à la modélisation de tout genre, donc je suis peut-être poser une question idiote...

10
demandé sur Gavin 2010-01-17 02:33:38

3 réponses

en ce qui concerne la programmation de jeu vectoriel 2D, C'est habituellement le domaine de Flash et Flex.

SVG et le charger via le Caire semble être une solution viable. Bien que je prendrais soin de m'assurer que vous avez l'accélération matérielle activée (OpenGL backend de préférence).

en ce qui concerne les formats 2D, vous n'obtiendrez pas un support aussi bon que SVG pour N'importe quel format, donc je m'y tiens. Techniquement, des choses comme Collada ou X3D prennent en charge les graphiques 2D, mais pratiquement ils ont beaucoup de bloat inutile (pour un programmeur 2D).

6
répondu Kornel Kisielewicz 2010-01-16 23:42:28

il N'est pas nécessaire de mettre à jour ma propre réponse, mais j'ai fait un peu plus de recherches sur L'utilisation de SVG. Comme J'utilise OpenGL, il semble que OpenVG peut-être un bon match.

  • AmanithVG - une implémentation commerciale D'OpenVG construite sur OpenGL, avec un rendu logiciel et matériel. Téléchargement disponible pour évaluation seulement, et il fonctionne à merveille, bien que je ne sais pas combien il coûte.
  • ShivaVG - l'auteur était agacé que AmanithVG était commercial, donc il a fait sa propre implémentation opensource dans ANSI C pure. N'a pas été mise à jour depuis un moment. At SourceForge.
  • Géométrie Anti-Grain - pas sûr à ce sujet. Je pense QU'il y a un support pour SVG, mais je pense que le logiciel-Rendu seulement.
  • librsvg - utilise le Caire comme support principal pour rendre les SVG. Semble bon.

Il semble que tous, sauf librsvg arrêter de permettre aux fichiers SVG d'être chargés, donc probablement il doit y avoir une autre étape où les SVG sont divisés en structures OpenVG appropriées (qui semblent être de grands tableaux flottants, donc pas trop dur). De même, il semble y avoir une cartographie un à un des éléments de SVG à OpenVG, ce qui est prometteur. Pour autant que je sache, OpenVG était fait pour les SVG.

je vais probablement utiliser ShivaVG. Peut-être que ce n'est pas parfait, mais ça attire le tigre et j'adore une implémentation Pure C / OpenGL, et Je doute sérieusement de faire quoi que ce soit de si complexe pour l'instant.

7
répondu Gavin 2010-01-17 02:38:51

SVG est le chemin à parcourir pour la 2D :)

si la vitesse de dessin est un problème, vous devrez faire attention à la complexité de vos fichiers - et notez que SVG n'est pas optimisé pour la vitesse de parsing non plus, vous pourriez donc encourir une pénalité de temps de démarrage importante pendant que vous chargez vos modèles.

3
répondu James 2010-01-16 23:40:47