Castor3D en version 0.6.0.0
Le moteur de rendu 3D multiplateforme et multi-API

Le , par dragonjoker59, Expert éminent
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, ...


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Projets