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). Il a été séparé en 2 renderers distincts : un compatible OpenGL 2.x et antérieur, un compatible OpenGL 3.x et ultérieur.
La reconnaissance des Shaders est implémentée, uniquement la partie GLSL pour l'instant, on verra un jour pour intégrer Cg.
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
Castor3D en est à la version 0.6.0.0
Ajouts
Ajout d'une classe de gestion des matrices de projection, normale et visualisation, en vue de la suppression du pipeline fixe dans les renderers OpenGL.
Ajout de smart pointers persos, inspirés de ceux de boost.
Ajout d'une classe de gestion des angles, permettant de ne pas s'embeter avec les conversions radian-degrés.
Ajout d'une classe de gestion de path, permettant de gérer les slash ou anti-slash selon l'OS.
Création de conteneurs thread-safe issus de la stl (vector, list, map, multimap, set).
Séparation du renderer OpenGL en 2 projets : un compatible OpenGL 2.x et antérieur (GL2RenderSystem) le second compatible OpenGL3.x et ultérieur (GL3RenderSystem).
GL2RenderSystem : en fonction du PC client, suppression du pipeline fixe ou pas (si l'utilisation des shaders est permise le pipeline fixe est supprimé, sinon il est gardé)
Modifications
Modification de la gestion des threads et mutexes, permettant le choix de ceux qu'on utilise (Win32, MFC ou boost).
Modification des classes de gestion des matrices et points.
Modification de la classe de gestion des chaînes de caractères qui sont maintenant indépendantes de Unicode ou MultiByte.
Modification de la classe de gestion de fichiers qui ne permet plus le choix IO ou Stream mais utilise Stream uniquement.
Modification du render system, ajout d'une classe renderable qui se charge de créer le renderer associé, afin de simplifier la création des dérivés de cette classe (submesh, scene node, light, camera...)
Changement des noms des fichiers de scène/materiaux/meshes du moteur (respectivement cscn/cmtl/cmsh)
Corrections de Bugs
Protection par recursive mutex des données partagées (par les managers, essentiellement) permettant d'éviter des plantages aléatoires.
A faire
Il reste un plantage à la fermeture du soft en release uniquement, apparemment dû aux shaders.
Pour GL3RenderSystem, j'ai un rendu noir (?!?) mais les transformations sont prises en compte correctement.
Dépendances
Pour compiler CastorUtils et Castor3D, vous aurez besoin de boost, FreeImage, FreeImagePlus et glm (OpenGL Mathematics)
Pour compiler GL2RenderSystem et GL3RenderSystem vous aurez besoin de GLEW
Pour compiler CastorShape et CastorViewer, vous aurez besoin de wxWidget
Téléchargement
Sources
CastorUtils(Miroir)
Castor3D(Miroir)
CastorShape(Miroir)
CastorViewer(Miroir)
GL2RenderSystem(Miroir) (OpenGL 2.x et antérieur)
GL3RenderSystem(Miroir) (OpenGL 3.x et ultérieur)
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, ...
Castor3D en version 0.6.0.0
Le moteur de rendu 3D multiplateforme et multi-API
Castor3D en version 0.6.0.0
Le moteur de rendu 3D multiplateforme et multi-API
Le , par dragonjoker59
Une erreur dans cette actualité ? Signalez-nous-la !