+  oZone3D.Net Forums
|-+  Our Softwares» Demoniak3D - French Forums» WIP» Débutants» Noël approche.... Lentement.
Username:
Password:
Pages: [1]
  Print  
Author Topic: Noël approche.... Lentement.  (Read 1649 times)
0 Members and 1 Guest are viewing this topic.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« on: November 21, 2007, 12:22:41 PM »

Première tentative de scène hypérion...
La but est d'obtenir quelque chose dans le style de la démo de nöel (http://www.ozone3d.net/demos_projects/merry_christmas.php).
Modélisation : Wings3D principalement.

Résultat actuel :  mefiant



Bon. C'est pas gagné !  mrgreen

Les problèmes les plus visibles :
-les ombres portées produisent des artefacts sur le bonhomme de neige.
-le vertex shading est affreux sur le chalet.


Les améliorations à faire :
-de l'ambiant occlusion sur la maison et le bonhomme de neige ? problème, AOGen refuse de se lancer chez moi (win XP, pourtant)...
-un peu de relief sur tout ça ne ferait pas de mal ! un peu de bump ou normal mapping...
-des textures sur le chalet, bien entendu,
-un sol moins laid (celui-ci est un terrain exporté depuis Bryce),
-une jolie cubemap que je ferai sous TerraGen,
-de la fumée pour la cheminée,
-quelques sapins et autres arbres,
-un meilleur éclairage, avec par exemple une ambiance de nuit et une lumière qui sort des fenêtres de la maison,
-de la neige....
Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #1 on: November 22, 2007, 09:05:02 AM »

Hello shadow!

avec un pseudo comme le tien, tu ne devrais pas avoir de problème avec l'ombrage  king

Non plus sérieusement, pour une première scene avec Hyperion c'est bien. Le résultat visuel est en effet pas terrible
mais c'est normal. Hyperion n'est pas un soft click-bouton. C'est plus un ensemble de fonctions bas niveau (moteur 3D scriptable) qui demande
un peu de maitrise et d'entrainement. Cela veut dire que tu est obligé de comprendre ce que tu fais, ce que tu manipules.
La demo Merry Christmas de Satyr est un exemple de ce que l'on obtient avec de l'entrainement. Le truc à savoir c'est que les principes de
base et les concepts utilisés dans Hyperion sont les principes de la 3D temps réel que l'on retrouve dans n'importe quel moteur 3D.
Finalement ce qui différencie Hyperion d'un moteur 3D classique, c'est que tu n'as pas besoin de compilateur C++ pour coder une petite scene.
Tout se fait avec des langages très simples comme le XML ou LUA.

Donc voilà pour l'intro à Hyperion. Maintenant on va regarder les premiers problèmes.

-les ombres portées produisent des artefacts sur le bonhomme de neige.
Regarde ce tuto: http://www.ozone3d.net/tutorials/stencil_shadow_volumes.php?lang=1
Il va t'aider à comprendre ce que sont les ombres volumiques et comment faire les réglages pour diminuer les artefacts.

-le vertex shading est affreux sur le chalet.
Comme avec n'importe quel moteur 3D, même celui de Crysis, quand tu utilises les fonctions fixes du pipeline 3D pour effectuer l'éclairage sur un modèle
avec un faible nombre de polygones, tu obtiens ce résultat. Il y a plusieurs façons d'améliorer le rendu:
   1 - toujours en utilisant le pipeline 3D fixe, il te suffit d'augmenter sensiblement le nombre de polygones de ton chalet. Et ensuite avec un peu de réglage
       sur les composantes ambiente, diffuse et speculaire de la lumière et des matériaux, tu auras un résultat assez correct.
   2 - utiliser le pipeline programmable. Cela veut dire utiliser les vertex/pixel shaders pour le rendu. Dans ce cas tu n'as pas besoin d'un modèle high-polys.
       Le modèle que tu as est parfait. Récupère un shader de phong par exemple et applique le aux matériaux qui constituent ton chalet. Bidouille ensuite
      les paramètres materiau/lumière et là tu auras un beau résultat. Voir ce tut pour le shader de phong: http://www.ozone3d.net/tutorials/glsl_lighting_phong.php
      
Pour les autres améliorations on verra ça par la suite.

Par contre pour le pb de l'AOGen peux-tu m'envoyer ton modèle pour que je teste ?

Et ne te décourage pas, tu as fait le plus dur, c'est à dire un codage manule d'une scène 3D temps réel.     thumbup
Le reste c'est que de la compréhension
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #2 on: November 22, 2007, 02:24:03 PM »

Effectivement, JeGX, le shading, je devrais quand même pouvoir y arriver  king (d'autant plus que je code des shaders au boulot...)

Quelques petites modifs hier soir, et on arrive à ça :


C'est déjà mieux !

-Pour les ombres portées : il va effectivement falloir que je joue sur la composante ambiante....
-Pour le chalet, je pense que mettre une texture ou du bump pourra aussi aider à atténuer les défauts. Mais effectivement, le passage au shader semble inévitable, j'ai commencé à voir ça.
-j'ai rajouté une skybox, qui évoluera probablement, et j'ai changé le sol.

Pour AOGen : le modèle est accessible ici http://www.3dvia.com/shadows44/media/7555596B7D4F6173 ( je l'ai modifié par rapport à hier ; il y a une version low poly et une version smooth ; au passage, le maillage est loin d'être parfait, je sais !  Wink

Ne t'inquiète pas, je n'ai pas l'intention de me décourager, je compte bien arriver à quelque chose de plus que potable !
Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #3 on: November 22, 2007, 05:56:47 PM »

c'est tout de suite mieux  thumbup
C'est presque une scene à faire en cel-shading.

Oui pour ce qui est des shaders, il faut les considérer comme un passage obligatoire pour avoir des rendus corrects surtout dès qu'il y a de l'éclairage dynamique.
Un peu de bump mapping va accroitre encore le réalisme.
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #4 on: November 28, 2007, 02:19:02 PM »

Suite des hostilités : la fumée pour la cheminée.
Je suis en train de voir comment fonctionne le système de particules d'Hyperion. Au départ, je pensais plutôt faire des nuages très sommaires, pour garder le côté cartoon, un peu dans ce style là :  (nuages puis panache de fumée)

Mais je pense que je vais finalement plutôt m'orienter vers quelque chose d'un peu plus soft, un peu dans ce style là : http://blog.all-pixels.com/?p=210 .

Sinon, j'ai trois questions techniques :  (que je peux au besoin déplacer dans la partie technique, d'ailleurs)
  • j'ai l'impression que le détourage des particules par hypérion se fait en fonction de la couleur (noir = transparent ?), au moins pour les images jpeg... J'imagine que pour du png, la couche alpha sera prise en compte ?
  • Est-il possible d'utiliser non pas des textures mais plutôt des objets 3D pour les particules ?
  • Peut-on obtenir des ombres à partir des particules ? Apparemment non, puisque je ne vois l'effet nulle part...

EDIT : voila le résultat actuel ! C'est finalement assez peu cartoon, mais assez réaliste. Il faut encore que je retravaille ça, le problème principal est l'aspect trop blanc de la fumée au niveau de la cheminée.
« Last Edit: November 28, 2007, 04:22:34 PM by shadow » Logged

3D, photos panoramiques : http://www.shadows.fr
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #5 on: December 03, 2007, 04:34:42 PM »

Pour que tout ça soit un peu plus vivant : une capture vidéo de l'état actuel de la démo !
http://uk.youtube.com/watch?v=qQHe3ETWCjE
Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #6 on: December 04, 2007, 12:53:42 PM »

Cool pour la video, je vais la mettre sur le blog  Wink

Pour le système de particules, tu ne peux utiliser que des particules. Il n'y a pas d'ombres avec les particules. Au niveau des images, hyperion ne charge que les 3 cannaux R, G et B. Le détourage ou mieux le mélange des couleurs (le fameux blending) des particules se fait en paramétrant les facteurs de blending source et destination au niveau du système de particules. En gros, ces facteurs permettent de spécifier comment les composantes R, G et B des textures se mélangent dans le framebuffer en prenant en compte la composante alpha que tu spécifies dans le noeud particle_system_emitter, élément particle_color.

Dès que tu es satisfait de ta demo, envoi moi toutes les sources et je la rajoute dans la section "Demos et Projets" du site.
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #7 on: December 04, 2007, 01:44:50 PM »

Quote
Cool pour la video, je vais la mettre sur le blog
  Grin Merci !

Pour les particules, ça confirme ce que je pensais... J'imagine que la seule solution serait de passer par du script.  Je crois que je vais éviter ça pour le moment, cette démo avait surtout pour but de me plonger dans les grandes lignes d'hyperion.
Merci pour les infos sur le blending, ça risque fort de me servir à nouveau.

Par contre, une question :  pour afficher plusieurs fois un objet, la solution est-elle justement uniquement le LUA (comme pour le code sample 41) ou bien peut-on réutiliser plusieurs fois le même objet directement ? (je pensais rajouter quelques sapins.... Wink)

Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #8 on: December 04, 2007, 02:36:12 PM »

Pour le moment hyperion ne supporte pas l'instancing. Ce qui veut dire que pour rendre plusieurs fois le meme objet, tu dois en réalité avoir plusieurs fois le meme objet: soit tu charges n fois ton modèle au niveau XML, soit tu clones ton modèle avec LUA.

Pour ce qui est du blending, je dois avoir quelque part un tuto sur le sujet, je vais essayer de le retrouver.
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #9 on: December 04, 2007, 02:52:01 PM »

Quote
Pour le moment hyperion ne supporte pas l'instancing
Du point de vue xml, je pensais à quelque chose comme, par exemple, plusieurs <position ... /> dans une balise <model> </model>... A ajouter à la longue liste des suggestions à implémenter un jour, peut-être !

Pour le blending, si c'est spécifique à hyperion, je suis preneur ! Pour le blending OpenGL, j'ai http://www.zanir.szm.sk/10-19.html en stock, l'illustration du programme 11 est très utile en aide-mémoire.
Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #10 on: December 05, 2007, 08:55:53 AM »

C'est justement une des grandes forces d'hyp3rion que de ne pas avoir de concepts propres. Le blending utilisé dans hyp3rion est celui d'opengl:
GL_ONE <==> BLENDING_FACTOR_ONE
GL_SRC_ALPHA <==> BLENDING_FACTOR_SRC_ALPHA
et ainsi de suite.
Donc ton exemple du site de zanir est parfait  Wink
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #11 on: December 05, 2007, 10:26:53 AM »

Bon, entre les noms CgFx, OpenGL et Hyperion, je vais devoir faire attention à ne pas taper sans réfléchir, moi...  mrgreen

En ce qui concerne la démo, elle est (je pense) finie, et voici le résultat :


Tout est en toon shading, sauf le sol, qui rendait moins bien.
Par contre, pour le shader, j'ai repris celui d'un certain... JeGX  Wink, du tuto 48. Je le précise dans le fichier, histoire de ne pas m'attribuer ce qui n'est pas de moi. Après, tout dépend de toi : est-ce que ça te va si je te cite dans le xml, ou bien est-ce que tu préfèrerais carrément que je n'utilise pas le shader ?

Du point de vue des meshes, ça donne ça :

J'ai eu la main un peu lourde, et tout ça pourrait largement être optimisée, on est d'accord... Ca vient en partie du fait que je ne pensais pas m'orienter vers le toon shading au départ.
Les sapins ont été dupliques sans LUA, "àa la main" : un modèle comportant un groupe de 3 sapins a été importé plusieurs fois dans la scène.

Le tout tourne à 60 fps sur ma 8600, sous Vista.
« Last Edit: December 05, 2007, 10:28:28 AM by shadow » Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #12 on: December 05, 2007, 11:04:09 AM »

Remarque pour simplifier un peu l'utilisation du blending, je vais autoriser l'utilisation de GL_ONE, GL_SRC_ALPHA, etc., pour les facteurs source et destination du blending.

Le rendu de ta scene est chouette   clap

Pour le toon-shader, aucun problème pour l'utiliser et le modifier, il est là pour ça! Pas besoin de me citer (sauf si tu y tiens).

Pour la fumée, peut être que le vertex_pool te permettra de créer une fumée de type cartoon.
La page de ref du vertex_pool est ici: http://www.ozone3d.net/hyperion/devguide-v1/api_hyp_lua_vertex_pool.php
et une démo qui l'utilise se trouve ici: http://www.ozone3d.net/demos_projects/spiral_galaxy.php

Pourquoi 60FPS ? La synchro verticale est activée on dirait...
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
shadow
Moderator
Capo Regime
*****
Posts: 258



View Profile WWW
« Reply #13 on: December 05, 2007, 12:37:10 PM »

Effectivement, la synchro verticale est peut-être active, mais là je ne suis pas chez moi, donc je ne vais pas vérifier.  Wink
Pour la fumée, en fait je pense que je vais rester sur la version actuelle, même si elle n'est pas parfaite. Le LUA, ce sera pour la prochaine démo !
Si éventuellement tu veux les sources de la démo, je les ai en .zip, ça fait à peine plus de 1 Mo.
Logged

3D, photos panoramiques : http://www.shadows.fr
JeGX
Global Moderator
Capo Bastone
*****
Posts: 1784



View Profile WWW
« Reply #14 on: December 05, 2007, 01:23:08 PM »

oui envoi moi tes sources pour que je fasse la page officielle de ta demo!
Logged

Don't Play, Code or Die! .: Visit my Infamous Blog:.  .:Visit Demoniak3D Blog::.
Pages: [1]
  Print  
 
Jump to: