Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

N3XTD - un moteur 3D dédié à PureBasic

Le , par tmyke

0PARTAGES

0  0 
N3XTD, Un moteur 3D pour PureBasic.

Depuis déjà bien des années, je cherche à faire bouger un peu la 3D à travers PureBasic. N3XTD est né de cette intention,
dans l'optique de favoriser la création 3D ludique à travers PureBasic.

LES OBJECTIFS DE BASE:
--------------------------------
Le principal objectif de ce projet est donc au départ de pouvoir fournir une alternative crédible en matière de moteur 3D
à celui proposé par PureBasic dans son package initial, avec à la clé un certains nombres de spécifications de bases ayant
pour objectif globalement (si possible) les éléments suivants:
- moteur simple, complet et facile d'accès, s'inscrivant dans la même veine de ce qu'était Dreamotion3D sur le principe.
- projet opensource et gratuit,
- projet ayant une capacité multiplateforme.
- pas d'usine à gaz hyper gourmandes en ressource.
- moteur relativement complet, intégrant 3D, collisions et physique, GUI, etc..

CHOIX DU MOTEUR:
---------------------------
Ne voulant pas repartir de zéro (au vue du travail que cela représente), j'ai donc cherché à m'appuyer sur un moteur déjà
existant, je suis donc parti en quête du moteur 3D type pour mener à bien ce projet.

Plus que la réalisation d'un simple wrap, il s'agit en fait de refaçonner le 'dit-moteur' dans certains cas pour
le faire coller au mieux aux principaux objectifs visés. A la base donc, je me suis rapidement fixé un certains nombres
de contraintes pour arrêter un choix et ce, pour resserrer le cercle des moteurs existants:

1- moteur gratuit / OpenSource: désireux de coller au mieux au projet et à l'idée que je m'en fais, pouvoir rentrer et modifier
le code natif du moteur choisi est un argument très important. De plus, ce projet n'a aucune vocation vénale.

2- moteur multiplateforme: ne voulant laisser aucune plateforme sur le bord de la route, il est important de choisir un moteur
existant ayant cette capacité.

3- moteur simple et pas trop lourd: il ne s'agit pas de se prendre la tête avec le code du moteur et son adaptation. Il faut donc un
moteur pas trop lourd. En final, une simple DLL ou lib, c'est tout.

4- moteur ouvert, surtout niveau media: ce critère, non rédhibitoire ceci-dit, est aussi à prendre en compte. En d'autres termes,
les moteurs aux formats 3D propriétaires sont si possible à éviter.

5- moteur pas trop gourmand: dans la mesure du possible aussi, il est fortement souhaitable de s'appuyer sur un moteur pas trop
gourmand, et donc pouvant tourner sur des configurations modestes et pas forcément dernier cri. Donc pas de moteur soit disant 'nex-gen',
nécessitant des conf de brutes pour tourner à peu près convenablement.

En ayant en tête toutes ces contraintes, j'ai testé et regardé de près tout ce qui pouvait se faire en terme de moteur 3D sur le
'marché' (sur les projets un tant soit peu sérieux et établis bien sûr).
J'ai donc passé en revue durant quelques temps, entre-autre: Ogre - Irrlicht - Hordes3D - OpenSceneGraph - CrystalSpace - etc...

Mon choix c'est finalement arrêté sur Irrlicht. Explication (en reprenant la liste des pseudo-spécifications énumérées ci-dessus):

1-moteur gratuit et OpenSource: c'est le cas d'Irrlicht
2-moteur multiplateforme: ce moteur tourne très bien depuis déjà un bon moment sur toutes les plateformes, d'ailleurs la communauté
Irrlicht possède certainement l'une des plus impressionnantes part d'utilisateur 'non-Windows'.
3-moteur simple et pas trop lourd: une simple DLL, qui pèse moins de 2Mo, c'est l'un des plus léger de ceux testés (Ogre = 7 DLL et
60Mo de lib à lier) (Hordes3D, 3 DLL) (etc...).
4- moteur ouvert, surtout niveau media: Irrlicht n'a pas de format propriétaire. Il s'appuie sur des formats existants (3DS, B3D, X,
Collada, MD2, BSP, CSM, DeleD, Ogre, Maya, etc...), plus d'une dizaine en tout.
5- moteur pas trop gourmand: Irrlicht tourne plutôt bien sur toutes les conf, même les moins récentes. De simples cartes intégrées
ne lui font pas peur..

Bref, ce choix d'Irrlicht s'est imposé finalement logiquement et naturellement. Certes, ce moteur a aussi ces défauts (le moteur parfait
n'existe pas, ou alors je ne le connais pas), comme un manque de performances certain dès que les scènes s'alourdissent, quelques
fonctions non aussi poussées que certains de ses concurrents. Mais comme l'objectif n'est pas de réaliser un 'CryEngine2 like', il
devrait être assez aisé de s'accommoder de ces quelques lacunes. D'autant qu'au fil du temps il sera plus que largement possible de
combler ces lacunes par l'apport de codes 'maison', ce que j'ai déjà commencé à faire. C'est aussi l'un des 'plus' d'Irrlicht, son fort
taux d'abstraction permet d'insérer nos codes personnels pour en améliorer les capacités, et ce de façon simple. Irrlicht lui même évolue
très vite, et dispose d'une bonne communauté, tout sera fait pour que les mise à jour soient faciles et pas trop galère.

PACKAGE
-------------
Passons aux choses plus concrètes. Voici les liens permettant l'accès aux packages. Tout n'est pas encore implémenté, et pas mal de choses
sont encore à compléter ou corriger, mais cela représente déjà quelques 900 fonctions, couvrant un ensemble de domaine très raisonnable.

version 20 (05-fevrier-2010)
c'est ici->http://www.n3xt-d.org/_download/n3xtd.zip

INSTALLATION:
---------------------------
L'installation est simple, comme souvent, il suffit de copier les trois répertoires présent dans l'archive dans le répertoire de
PureBasic. C'est tout. Les exemples fournis (une cinquantaine) sont surtout là pour montrer l'emploi des fonctions et autres instructions,
ils sont très basic, et ne sont en rien spectaculaire.

La doc est en Anglais (désolé), pour assurer d'emblée une capacité ouverte au projet, qui je l'espère dans l'avenir ne restera pas
cloisonné à la communauté francophone.
J'ai joint au package par contre un fichier CHM en Français (dans rep irrPBDoc), sous forme de tutoriel et reprenant certaines parties
d'un tutoriel que j'avais écrit il y a quelques temps. C'est à peaufiner et à pas mal améliorer. Cela explique les bases et permet
de bien débuter avec aussi un peu de théorie, même si cela manque encore de codes en guise d'exemples. C'est destiné aussi aux vrais
débutants. Je tacherai de continuer à alimenter et améliorer ce fichier au fil de l'évolution du projet.

CODE SOURCE:
---------------------------
Un second lien permet de télécharger le code source du moteur complet. ça c'est pour ceux qui voudront aller plus loin, ou par
simple curiosité. Il permettra aussi aux 'non Windows' de pouvoir installer et faire tourner N3XTD sur d'autres plateformes.
Pour le moment, pas de SVN, mais si le nombre d'amateurs désireux de s'impliquer au niveau du code source, ainsi que des
adaptations sur certaines plateformes est suffisant, alors cela s'imposera de lui même et cela sera fait...

version 20 (05-Fevrier-2010)
c'est là->http://www.n3xt-d.org/_download/SourceEngine.zip

CONCLUSIONS:
------------
Voilà pour cette présentation de base. J'espère ne pas avoir été trop long et barbant, ne pas être à coté de la plaque non plus,
et ne pas avoir fait fuir.
Je sais pertinemment que les amateurs de programmation3D ne sont pas légions dans le coin, je suis habitué, et cela ne m'a jamais
vraiment découragé, donc je garde malgré tout le cap.

Ceux qui voudront apporter leur petite pierre seront bien évidement les bienvenues...






Une erreur dans cette actualité ? Signalez-le nous !

Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 07/06/2009 à 12:25
Salut tmyke

Content de te voir par ici

Il est vraiment sympa ce moteur, je l'ai testé rapidement, les exemples fonctionnent parfaitement et donnent un bon aperçu de ce qu'il est possible de faire.

Merci pour ce que tu fais pour la communauté PureBasic, courage pour la suite.
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 07/06/2009 à 15:51
Pas de quoi et merci, même si il reste beaucoup de travail encore.

Les mises à jours devraient se poursuivre à un rythme similaire pendant encore
quelques temps, vu les nouveautés à intégrer ces prochains temps.
J'espère aussi que j'aurais quelques retour, car il y a certainement du debugage
à faire
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 13/06/2009 à 14:58
Petite mise à jour (la 9 ième), pas de grandes nouveautés, j'ai pas mal travaillé en interne pour
améliorer certaine parties de la gestion du moteur physique, ainsi que quelques bricoles
sur la GUI.
Trois samples supplémentaires (les 068, 091 et 092) sont venus s'ajouter à le liste.

Les liens sont toujours ceux du post originel.

Le gros du codage est sur le point de prendre fin, j'axe mes efforts sur certains ajouts,
la correction de certains trucs gênant, bref, un travail moins spectaculaire, mais néanmoins
indispensable. Je vais voir aussi pour intégrer des démo si possible.
Donc la fréquence des updates sera certainement moins élévé que ces derniers temps.
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 20/06/2009 à 20:06
Petite mise à jour (la 10 ieme).

Les ajouts et améliorations concernent :
- nouveau portail internet (toujours http://www.n3xt-d.org ),
- certains point de syntaxe,
- les Sprites3D qui sont enfin opérationnels,
- ajout d'exemples de postprocessing pour les plus velus.
- renomage des exemples pour s'y retrouver plus facilement.

Les liens sont toujours ceux du post originel.

Travaux en cours:
- la 2D, en particulier les sprites. Le moteur est assez pauvre pour le moment,
donc je fais en sorte que les choses changent.
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 21/06/2009 à 20:38
la 2D va être intéressante
Elle pourra être mixée avec la 3D en avant plan et arrière plan ?

Je n'ai pas trop le temps en ce moment pour tester, on verra ça cet hiver, d'ici là ton moteur aura encore bien progressé, ça n'en sera que mieux.
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 23/06/2009 à 18:12
Citation Envoyé par comtois Voir le message
la 2D va être intéressante
Elle pourra être mixée avec la 3D en avant plan et arrière plan ?
Oui, le mix sera parfaitement possible

Citation Envoyé par comtois Voir le message
Je n'ai pas trop le temps en ce moment pour tester, on verra ça cet hiver, d'ici là ton moteur aura encore bien progressé, ça n'en sera que mieux.
Oui, comme tu le dis le moteur aura progressé, épuré ces défauts de jeunesse et surtout murie,
avec des codes et demo j'espère
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 27/06/2009 à 19:59
Mise à jour (la 11 ieme).

J'ai donc tenu compte de quelques bugs et autres manques (comme par exemple l'AntiAliasing,
iFreeNode, etc...)
L'essentiel de mon travail à donc comme promis porté sur la 2D, j'ai donc inclue et créé
certaines instructions, et vue pour voir comment faire de la 2D, même si cela n'égale pas
pour le moment les 'vrais' moteur 2D dédiés.

En guise d'exemple, j'ai écris vite fait deux petits programmes 2D sous forme d'un petit jeux
tout simple. L'objectif étant surtout de montrer ce que l'on peux faire et surtout comment.
Les média sont pas top, mais bon, j'ai fais vite fait avec ce que j'avais sous la main.
Le point encore à explorer pour la 2D, ce sont les collisions, pour le moment il s'agit
de simples tests de positions, c'est très sommaire, mais c'est un secteur à creuser

Ceci dit, N3xtD est quand même à la base un moteur 3D

Par contre le mix de 2D/3D peut permettre moyennant quelques efforts d'arriver à des choses bien
sympa pour ceux qui s'en donneront la peine.

Par contre, sous OpenGL, j'ai sur certaines machines un ou deux petits bugs visuels encore
gênant, je suis en train de voir d'où cela peut venir.

Les liens sont toujours ceux du post originel, ou encore sur le site http://www.n3xt-d.org

Travaux en cours pour la 12 ième mise à jour:
- Toujours un peu la 2D,
- Routines divers visant à améliorer et ajouter certaines fonctions.

0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 05/07/2009 à 12:27
Mise à jour N°12.

Pas mal de bugs corrigés ou de manque comblés (merci à Cpl.Bator, le TerminaBetaTesteur).
Au chapitre des nouveautés, l'intégration des instructions XEffect. Elles permettent une
mise en oeuvre simples et faciles d'effet (shader) ainsi que des scènes complètes en
shadowmapping. Attention, cartes anciennes ou d'entrées de gamme s'abstenir .

Deuxième intégration attendu, la possibilité d'importer directement les scene construite
avec irrEdit1.5 (section Link du site). Très interessant pour ceux qui connaissent.

En résumé, 6 nouveaux samples, les 031-048-220-221-222-223

Les liens sont toujours ceux du post originel, ou encore sur le site http://www.n3xt-d.org

Travaux en cours pour la 13 ième mise à jour:
- Le Header C++, qui en a bien besoin,
- Toujours des routines divers visant à améliorer et ajouter certaines fonctions.


0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 05/07/2009 à 19:10
Avec la dernière version , j'ai ce message d'erreur avec les derniers samples (par exemple le 088).

---------------------------
PureBasic
---------------------------
Line 51: iCreateMaterialPair() is not a function, array, macro or linked list.
---------------------------
OK
---------------------------
Je n'ai pas tout testé, en échantillonnant les exemples, tout fonctionne bien.
J'aime bien l'exemple 2D, ça rend bien.
0  0 
Avatar de tmyke
Membre régulier https://www.developpez.com
Le 05/07/2009 à 21:08
Merci pour l'info, je regarde cela dès demain
0  0