Présentation
Ce moteur 3D a l'ambition d'être multi-plateformes et multi-renderer.
Pour l'instant, seul le développement sous Windows est exploitable (je galère pour la création d'une fenêtre compatible OpenGL sous Linux).
Seul le Renderer OpenGL est implémenté (je n'ai aucune connaissance en Direct3D).
La reconnaissance des Shaders est implémentée, uniquement la partie GLSL pour l'instant, Cg est en cours d'implémentation.
Pas encore de LOD ni de gestion OcTree pour l'instant, mais c'est prévu.
Support de plusieurs formats de fichiers : Obj, 3DS, MD2, MD3, PLY.
Le système d'animation a un squelette qu'il me faut compléter afin d'avoir une implémentation correcte d'un système d'animation avec ou sans squeleton (notamment Morphing).


Version Actuelle : 0.6.1.1

Ajouts

Création d'un fichier CMakeLists pour générer la solution à partir de CMake.
Réorganisation des fichiers du dossier afin de mieux se prêter à ça.
Séparation de la classe Plugin en 3 types différents : Renderer, Divider et Importer. Ainsi on pourra ajouter de nouveaux types de plugin aisément et l'ajout d'importers et de subdiviseurs se fera sans devoir recompiler tous les projets.
Ca entraîne la création d'un projet par importeur existant (OBJ, PLY, MD2, MD3, 3DS, ...)
PNTrianglesDivider reste dans le Castor car utilisé par la primitive Icosaedron, LoopDivider est quand à lui placé dans un plugin.
J'ai commencé à implémenter les shaders Cg. Ca implique une modification des fichiers de scène, car dans Cg les variables uniform sont liées à un programme (vertex, pixel, geometry) plutôt qu'au shader complet comme c'est le cas en GLSL. Il reste quelques trucs à revoir (je ne sais pas encore quoi) pour que ça fonctionne.


Modifications

Suppression de FreeImagePlus, maintenant les projets ne nécessitent plus que FreeImage.
La création des Buffers utilisés pour le rendu (Vertex, Attribute, Texture, Normals, ...) se fait maintenant par le RenderSystem => on peut donc les créer dans Castor3D et pas seulement dans les renderer (GL2, GL3 et dans le futur D3D).
Suppression des Singletons pour les différents Managers (Image, Font, Scene, Material, Animation et Mesh).
J'ai retouché les SceneNodes, j'ai refusionné les 3 classes différentes en une seule pour des commodités d'utilisation.
Création d'une classe IdPoint, qui étend Point et y ajoute un Index qui correspond à son index dans le submesh. La fonction AddPoint de Submesh crée maintenant des IdPoint et la fonction AddFace se sert d'eux pour générer les Vertex.
Les subdiviseurs peuvent subdiviser dans un thread à part, permettant de ne pas figer une application pendant la subdivision (cf. CastorShape). Il est possible d'assigner une fonction qui sera lancée à la fin de la subdivision (cf. CastorShape).


Corrections de Bugs

Correction du LoopDivider qui ne repositionnait plus les Vertex (les nouveaux étaient créés mais plus replacés, dû à la nouvelle architecture des Vertex)

Dépendances

Pour compiler CastorUtils et Castor3D, vous aurez besoin de boost, FreeImage
Pour compiler OpenGLCommon, GL2RenderSystem et GL3RenderSystem vous aurez besoin de OpenGL, GLU et GLEW
Pour compiler CastorShape et CastorViewer, vous aurez besoin de wxWidgets

Téléchargement

Sources
Castor3D (Miroir) Sources du Castor.

Exécutables
CastorShape (Miroir)
CastorViewer (Miroir)

Données optionnelles
Exemple de Scène au format CSCN. (Miroir) Il est possible de l'éditer avec n'importe quel éditeur de texte pour modifier les matériaux, ...