Skyzogine
Proposé par TUpac

le mardi 28 decembre 2010 à 21h 35mn 44s

4605 visualisations

Déconseillé aux moins de 16 ans
compatible Windowscompatible Linux
compatible opengl

Si vous ne voyez pas cette vidéo, téléchargez le plug-in Flash



Salut, ça fait un petit moment que je traîne ce projet et c'est du coup la v2 du projet que je vous présente, car j'ai malheureusement suivis une mauvaise architecture au départ.
J'ai donc tout refondu proprement et même si cette version vient tout juste de fonctionner, je suis très satisfait du résultat.
C'est un petit moteur 3d minimaliste basé sur l'API OpenGl et bientôt sur les shaders Cg (de nVidia).
Il comprend actuellement :
-un gestionnaire de VBO qui charge, supprime et répertorie les pointeurs VBO.
-un autre pour les textures globalement pareil.
-encore un autre gère le clavier et la souris. Croyez-moi ou pas c'est un boulot de dingue !
-un gestionnaire de gui. On ne peut pas encore l'appeler comme ça, il n'y a que les Labels qui fonctionnent mais ils sont aussi en VBO.
C'est donc une gui 3D rendue après le rendu principal et fixe par rapport à l'écran. Un future shader interne contrôlera les couleurs.
-un Render, il en faut bien un smile il gère bien sûr le rendu complet, du calcul du framerate et de la création de la fenêtre.

Les objets ne sont actuellement composés que d'un vbo et d'une texture.
Plus tard j'ajouterai un material avec une solution de rendu complexe avec des rendus vers textures (via FBO) plusieurs textures, et des shaders bien sur.
Pour parler compatibilité, c'est encore léger: les formats 3d supportés sont *.skz (le mien) et *.obj (Wavefront en mode triangle sans support des materials).
Les texture supportées sont *.tga et voilà big_smile.
Le code est portable Linux évidemment !! Mais je n'ai pas encore débuggé et ça crash lamentablement. Mais c'est prévu wink

Alors bien sûr il faut rester sur terre il n'y a QUE le rendu principal, mais je fais des scores de 1000fps+ alors que l'ancienne version plafonnait beaucoup plus bas.
Pour finir j'aimerais en profiter pour demander si quelqu'un connait un peu CUDA... j'aimerais l'utiliser, mais je manque de temps et je n'ai pas bien compris dans quelles mesures et de quelle façon, on peut mêler le c++ avec.
Ce projet représente beaucoup de travail, j'ai commencé de rien et je n'ai jamais cédé à la facilité donc, toute suggestion ou critique est bienvenue mais personne ne fait de mal à mon bébé ! tongue.


#1 

28-12-2010 22:47:02

wabb
Membre
Date d'inscription: 30-04-2010
Messages: 68
Corrections: 1
Site web

je n'ai malheureurement pas la competence requise ni des notions pouvant t'aider. je ne peux donc que te souhaiter bon courage dans ce que tu entreprends et j'espère de tout coeur que quelqu'un repondra favorablement a ton appel d'aide.


Cordialement !


Projet: EVO_Conflict's Factor (http://titanworks-system.over-blog.fr/#)

Hors ligne


#2 

29-12-2010 10:09:14

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Salut TUpac.

Beau boulot, tu t'es lancé dans un projet qui n'a rien d'évident (un moteurs 3D).  big_smile
Je vois que ton moteur tourne déjà, c'est vraiment bien.

Tu t'es lancé dans cette aventure suite à un besoin réél d'un moteur collant parfaitement à tes besoin, ou par pur plaisir ?

Sinon, pour CUDA, je n'ai pas encore essayé, ceci dit, si je puis me permettre, pourquoi vouloir intégrer cette API pas évidente du
tout dans ton moteur, alors qu'il y a déjà pas mal à faire avec l'exploitation profonde d'OGL (shader, etc...) ?

Hors ligne


#3 

29-12-2010 10:57:08

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Merci tmyke le but est effectivement d'avoir un moteur parfaitement adapté et sans fioritures inutiles. Bien sur c'est aussi pour le plaisir car c'est passionnant wink
Sinon comme je l'ai déjà dit, la première version était quasi-complète et je refait le code à une vitesse folle donc je commence à penser à l'optimisation de la boucle de rendu. De plus, Cuda permet un travail directe en Vram et je voudrais faire un moteur de collisions donc j'ai besoin d'un accès direct aux VBOs.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#4 

29-12-2010 13:17:57

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Dans ce cas effectivement, cela devrait être intéressant.

Petites curiosité, pourquoi partir sur du 'fait maison' alors que des solutions de moteurs3D comme de moteurs physiques sont désormais légions et relativement
intéressantes ? (hormis le coté passion/formateur)

Hors ligne


#5 

29-12-2010 14:02:01

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

et bien tu l'a dit, la passion et la formation sur les Api qui aident à comprendre les autres projets.
Mais surtout car c'est le meilleur moyen de créer de nouvelles techniques de rendu maison elles aussi.
Je pourrai toujours hacker un moteur opensource mais la aussi je devrais décrypter le travail des codeurs et ça revient au même en moins éducatif.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#6 

29-12-2010 14:24:00

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Noble approche wink

Je ne connais pas OpenGL (j'ai toujours été plutôt DirectX), mais si t'as besoin, n'hésites pas à passer dans le coin wink
on va suivre ton projet d'un œil attentionné.

Hors ligne


#7 

29-12-2010 14:28:06

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Merci beaucoup voilà qui est motivant wink


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#8 

29-12-2010 16:19:54

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Tu vois, personnellement je suis la démarche plutôt inverse que la tienne, puisque je suis en train de travailler sur un moteur de jeux,
assemblage de plusieurs moteur existant (moteur3D, moteur physique, partie son, etc...).

Hors ligne


#9 

30-12-2010 13:37:55

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Peut-on tester ton moteur ?
Est-il open source ?
as-tu suivi un tutoriel aux commencements ?

Merci de me répondre.

Hors ligne


#10 

30-12-2010 14:24:12

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

mmorpglefilm a écrit:

Peut-on tester ton moteur ?
Est-il open source ?
à tu suivi un tutoriel aux commencement ?

Merci de me répondre.

la question concerne-t-elle le projet de TUpac ou mon dernier message ?

Hors ligne


#11 

30-12-2010 20:18:26

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Si c'était pour moi, les sources sont fermées tant que le projet n'est pas fini. Cependant, ça n’empêche pas de le distribuer mais il n'est pas assez aboutit pour être intéressant.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#12 

30-12-2010 21:24:50

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Celui de TUpac...je voudrais savoir si tu as suivi un tutoriel pour réaliser les bases de ton moteur ?

Hors ligne


#13 

30-12-2010 22:46:54

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Bonne question, même si elle parait naïve. Je n'en ais pas suivis; je me suis beaucoup inspiré de l'architecture de Ogre3d pour la gestion des ressources mais c'est de la pure création. Ce genre de projets ne se construit pas à partir d'un tuto.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#14 

31-12-2010 00:13:59

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

C'est ça se que je voudrais apprendre, savoir décrypter des programmes pour savoir comment ils fonctionnent , savoir où commencer à lire dans un projet fini, comme pour irrlicht.

J'avais eu l'idée de créer un moteur 3D, mais comme je ne savais absolument pas comment faire j'ai suivi le tutoriel sur developpez.com.

Hors ligne


#15 

31-12-2010 17:11:35

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Si tu veux mon avis, il faut apprendre les techniques avancées en c++.
Ce que tu fais avec irrlicht est très simple, il faut aller plus loin...
Sinon developpez.com c'est le must !! Regarde les cours de loulou par example wink


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#16 

31-12-2010 17:40:32

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

En effet, arpente 'developpez.com', il y a plein de tuto et autre info très intéressante, et élargie ton champ d'apprentissage avec d'autre site aussi.

Vouloir créer son propre moteur requiert déjà un niveau minimum, que ce soit en programmation 3D ou que ce soit en programmation..tout court.

Ne brule pas les étapes, sinon tu iras régulièrement vers des désillusions et des découragement, c'est dommage, et cela ne te servira pas wink

Hors ligne


#17 

02-01-2011 00:08:59

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

J'ai enfin ajouté la gestion des shaders et j'ai bien galéré mais voici un aperçu:

http://www.youtube.com/watch?v=_HY_IsKIMJQ

Le système fonctionne grâce à deux fichiers, un .cg qui contient le fragment et le vertex shader en cg et un .mtl qui contient des infos sur les paramètres.
Seules les paramètres de textures sont supportés pour le moment donc j'ai fait un splatting shader qui n'a besoin de rien d'autre.

voici le fichier mtl:
  base.cg   // fichier shader utilisé
  frag tex grass grass.tga // paramètre de texture
  frag tex dirt dirt.tga       // frag pour le shader cible (ou vert)
  frag tex mask mask.tga // tex pour texture, ensuite le nom du paramètre et enfin le fichier texture.

tout est en lien directe avec le moteur mais je dois ajouter de nouveaux types de paramètres et ensuite j'ajouterais des shaders intégrés avec le support de la lumière wink
à suivre ...


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#18 

02-01-2011 10:47:38

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

excellent.

Tu t'inspires un petit peu, dans le principe, du système que l'on retrouve sous Ogre non ?

Hors ligne


#19 

02-01-2011 15:55:55

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Merci encore et oui l'architecture ressemble fortement à Ogre avec des scripts matrials qui font les liens entre les ressources. Mais il y'a aussi l'utilisation finale du moteur qui y ressemble. On lance le moteur dans le main et on code dans des callbacks.  Pour le moment il y'a le callback appelé après le chargement et celui appelé à chaque frame.

Ps: j'aimerais changer la vidéo du projet mais j'ai pas trouvé. Help nico !! wink

Dernière modification par TUpac (02-01-2011 15:58:21)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#20 

02-01-2011 16:38:28

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

TUpac a écrit:

Ps: j'aimerais changer la vidéo du projet mais j'ai pas trouvé

Dans le carré en haut à droite avec ton avatar en haut de page, tu n'a pas l'option modifier ?

Hors ligne


#21 

02-01-2011 17:20:40

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Si mais je ne peux que retoucher le texte, rien d'autre apparemment.

Dernière modification par TUpac (02-01-2011 17:21:01)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#22 

02-01-2011 17:30:54

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

donne moi le lien de ta vidéo, je le remplacerais wink

en attendant j'ai mis celui du post au dessus...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
872 membres
1423 sujets
11109 messages
Dernier membre inscrit: Glider
9 invités en ligne
Aucun membre connecté
RSS Feed

[ Générée en 0.012 sec., 11 requêtes exécutées ]