Caelacanthe : Oui il y'en a,une seule Lightmap par Directionnal Light,et les ombres ne fonctionnent elles aussi qu'avec une seule Directionnal Light
Enfaite,ce qui kill les Normal Maps c'est lorsque vous faites un backing de vos lights maps.Unity va retirer toutes les donnés de vos sources lumineuses qui étaient ans votre scène lorsque vous avez backé votre Lightmap,et ensuite ni la Normal ni la Specular ne peuvent le faire,puisqu'ils n'ont plus de lumière,et meme lorsqu'on ajoute une lumière,ça ne marche pas,du moins pas chez moi,puisqu'on doit supprimer ses anciennes lumières pour retrouver les normal maps
Vintrigue : Un shader qui fait quoi ?
Y'a deja le shader pour la Normal Map,et on a Beast pour le backing des Lightmaps,donc un shader ne servirai à rien dans cette situation,et puis,je ne suis pas programmeurs hein,je suis modélisateur,et la prog c'est vraiment pas mon trip ![]()
Je parlais de calculer l'éclairage statique sur un logiciel de 3D et de l'exporter en texture, et de l'utiliser dans unity. Y a un calcul de lightmap dans le moteur directement? J'ose pas imaginer la qualité honteuse du truc, surtout si ça vire tout les effets par la suite. Dommage, ça donnerait un magnifique rendu a ta scène, avec les volume et recoins et tout, enfin j'admet qu'avec le système de niveaux en légos que t'as choisi, t'as peu de chances de pouvoir faire ça correctement..
"Oui il y'en a,une seule Lightmap par Directionnal Light,et les ombres ne fonctionnent elles aussi qu'avec une seule Directionnal Light
"
C'est mieux que rien, I guess... Par contre, j'espère que tu sais qu'on peut augmenter leur résolution jusqu'à 4096 pixels? Ca peut toujours aider à mettre un maximum de trucs dessus.
"Enfaite,ce qui kill les Normal Maps c'est lorsque vous faites un backing de vos lights maps.Unity va retirer toutes les donnés de vos sources lumineuses qui étaient ans votre scène lorsque vous avez backé votre Lightmap,et ensuite ni la Normal ni la Specular ne peuvent le faire,puisqu'ils n'ont plus de lumière,et meme lorsqu'on ajoute une lumière,ça ne marche pas,du moins pas chez moi,puisqu'on doit supprimer ses anciennes lumières pour retrouver les normal maps
"
Ouais mais justement, en directional lightmaps, et bien... Les normales restent. ![]()
Vintrigue : Pour calculer un éclairage statique directement dans le logiciel 3D,il me faut créer deux UVsets,une pour la diffuse,Normal,Specular et autres et l'autre UVset pour le lightmap.Cette solution est faisable,mais requière un temps fou,d'autant plus que ma GT210 ne me permet pas de faire un backing correct ![]()
Sinon,je vois vraiment pas comment le niveau peux ressembler à du logo,rien que cet objet :
http://sdz-upload.s3.amazonaws.com/prod/upload/screen011.png
n'a rien à voir avec le légo,qui est tout le temps carré/rond,mais pas de caré arrondit ou autre chose
Caelacanthe : Les Normal ne restent pas toujours,tu as deja essayé avec Beast ?
J'ai entendu dire qu'il y'a un moyen d'avoir Normal Map+Light Map,mais je ne suis ni codeur pour comprendre leur charabia,et je n'ai vraiment pas le temps pour checker tout ça,pas pour le moment en tout cas,puisque je travail comme un dingue sur l'Alpha ![]()
"Cette solution est faisable,mais requière un temps fou,d'autant plus que ma GT210 ne me permet pas de faire un backing correct
"
Quoi? Ca se fait en quelques secondes à l'import du modèle, normalement...
"Caelacanthe : Les Normal ne restent pas toujours,tu as deja essayé avec Beast ? "
Directement à l'intérieur de yewniteh, même, mais c'est vrai qu'il a fallu chercher, mais il faut utiliser les directionnal lightmaps en forward rendering et les dual lightmaps en deffered shiadin'.
ou quelquefois, elles existent encore mais ont un effet très très ténu, et il faut augmenter énormément la luminosité pour simplement les voir.
"Sinon,je vois vraiment pas comment le niveau peux ressembler à du logo"
L'idée d'assembler les niveaux par petits bouts, je crois. ![]()
J'ai rien dit pour les quelques secondes, mal lu le paragraphe ![]()
"
L'idée d'assembler les niveaux par petits bouts, je crois.
"
Ce n'est pas du légo ça,on appel ça le design modulaire ![]()
C'est le meme principe que pour le légo ou la construction de maison,on crée plusieurs objets dits modules qui doivent toujours avoir une puissance de 2 (64,128,256,512) pour ne pas casser la modularité .Quel intérêt ?
-Cela évite d'avoir à créer plusieurs fois le meme type d'objets,comme par exemple les murs d'un donjon,on va créer un module mur qui sera ensuite dupliqué plusieurs fois pour former le donjon
"
Directement à l'intérieur de yewniteh, même, mais c'est vrai qu'il a fallu chercher, mais il faut utiliser les directionnal lightmaps en forward rendering et les dual lightmaps en deffered shiadin'.
"
Y'a pas de Deffered rendering dans Unity Free
Pour le reste,j'ai deja tout tenté,sans succès ![]()
Je vais essayer de finir cette satané Alpha pour pouvoir prendre quelques jours de vacances afin de mieux étudier le rendering dans Unity
Ah et,prions pour que la version 5 ne soit pas aussi castré que la 4 ![]()
"-Cela évite d'avoir à créer plusieurs fois le meme type d'objets,comme par exemple les murs d'un donjon,on va créer un module mur qui sera ensuite dupliqué plusieurs fois pour former le donjon
"
Oui, et le problème c'est que tu peut pas calculer facilement un éclairage correct. quand je disais "comparable a du légo", c'est au niveau de ce mode de conception, le problème de collectionner de petit objets c'est justement que pour éventuellement calculer des ambiances/lightmap communes, c'est effroyablement compliqué. un jeu comme minecraft s'en sort avec son design simpliste et une occlusion ambiente assez simple, mais toi, faudra plus que ça pour arriver a donner un rendu correct a ce niveau là.
Que ce soit Gears of War,Halo,COD,BF ou tous les jeux en 3D que tu peux imaginer,ils utilisent tous le design modulaires.L'éclairage est un problème bien à part,le CryEngine par exemple s'en charge automatiquement,tandis qu'UDK non.La meilleur méthode,et la plus utilisé consiste à créer en plus de la première UVchannel de vos textures une autre spécialement faite pour le lightmapping.On va donc backer l'AO et la lightmap (si possible) dans le logiciel 3D,puis ensuite on ajoute un shader d'Ambient Occlusion pour l'AO et on change le render mode dans Unity en mode "BackedOnly",on obtiendra alors une bonne lightmap+AO,pas dynamique biensur,mais c'est mieux que rien ![]()
Sauf qu'unity fait des lightmap bidons, surtout en version gratuite, donc sort ton logiciel de 3D, modelise toute ta map dedans et cuisine la texture d'illumination dedans, les moteurs qui construisent leurs niveaux en design modulaire le font car ils peuvent assurer derrière pour l'éclairage ![]()
" les moteurs qui construisent leurs niveaux en design modulaire le font car ils peuvent assurer derrière pour l'éclairage
"
Ce n'est pas une question de moteur puisque tous les moteurs font du design modulaire.Cette technique peux te faciliter la tache pour le texturing,mais aussi pour l'Occlusion Culling,pour faire disparaitre les modules qui sont hors de ton FOV.
"donc sort ton logiciel de 3D, modelise toute ta map dedans et cuisine la texture d'illumination dedans"
Haha,si seulement je pouvais
comme dit plus haut ma carte graphique,une GT210 ne me permets pas de faire ce genre de choses,deja qu'il m'est très difficile de faire un simple backing,imagine si c'est pour une map toute entière...
Je préfère attendre un plugin nommé Voxel Cone tracing machin truc sur Unity,il apporte le GI de façon dynamique,reste à voir si il sera compatible avec unity free ![]()
Pour avoir les normal map avec lightmap sous Unity free, il suffit de passer les lightmap en mode Dual lightmap et de modifier le shader avec la directive appropriée (dualforward je crois). J'avais déjà étudié la question une fois mais je ne connais rien en GLSL... Sinon, essaye de jouer avec l'éclairage pour donner un peu de relief au niveau. Les directionnals c'est pas super en interieur, c'est mieux les points lights placées au bon endroit, avec des zones sombres et des zones claires : pour crysis 3, ils ont fait pas mal d'ajouts de points lights pour augmenter le contraste entre sombre-clair.
Voilà, sinon je suis ton projet, j'espère une alpha ![]()
Salut,
je comprend rien à vos termes (ça veut dire quoi "backing" ?) mais une lightmap est parfaitement compatible avec les normal maps, vu que c'est une simple texture diffuse.
Au besoin, si unity est volontairement "castré" à ce niveau, refais un shader de bump, c'est pas compliqué et y en a plein le net ^^ (les shaders font partie du boulot du graphiste
).
Effectivement la lightmap aura des uv différents que les autres textures mais un moteur digne de ce nom doit les générer évidemment avec la texture, ça m'étonne que tu aies à les paramétrer à la main...
Désolé si je suis à côté de la plaque.
Sinon ça rend bien
!
Par contre j'ai rien compris à cette histoire de puissance de 2 pour les objets "modulaires"...
Et l'aspect "légo" ça vient surement du fait que quasi-tous les murs sont alignés sur les axes (mais moi ça me gène pas
).
Toto2100 : Pour le moment je me concentre surtout sur la modélisation,car directement attaquer la lumière alors que le niveau n'est meme pas encore terminé ... ![]()
Je vais utiliser plusieurs Point Lights et Area lights une fois que j'aurai terminé le niveau,comme ça il me sera plus facile de placer mes différentes sources de lumières
N_I_C_S : "Backing" vient du mot "bake" et c'est une technique qui consiste à retirer une texture à partir d'un mesh.Pour avoir une Normal Map par exemple,on procède à un backing,idem pour la lightmap ![]()
Et non Unity free ne génère pas la lightmap,tu dois le faire avec Beast,qui est un "plugin" crée par Autodesk et inclus dans Unity
.
Pour l'histoire des puissance,je vais essayer d'expliquer :
Dans un jeu vidéo en 3D,on se doit de travailler le plus proprement possible ses objets 3D.Lorsqu'il s'agit de créer par exemple une toiture,sol,mur ou autre,il est préférable d'utiliser la modularité,puisque tu devra modéliser seulement un bout,que tu va ensuite dupliquer plusieurs fois sur ta map pour constituer un niveau
Les puissances de 2 sont très importantes dans ce procédé puisque les grilles des logiciels de modélisation et les moteurs de jeu sont reparties en puissance de deux.Cela te permet de pouvoir coller plusieurs objets sans avoir des problèmes au niveau du positionnement.Voici deux images tirées du jeu pour illustrer mes propos :
Image respectant le principe des puissances de 2 :
Image ne les respectant pas :
Là ce sont deux objets,et comme tu peux le voir sur la seconde image il y'a comme des bugs au milieu .Cela est dû au fait qu'on les a positionné sans prendre en compte la grille,dans ce cas,on dit que les deux objets ne sont pas Snapped to grid
Sur la première image c'est le cas,du coups quand j'appuie sur la touche CTRL dans Unity,ça m'active directement le snapping
Après je ne suis pas un mateux mais plutot un littéraire,donc je ne pourrais pas te dire exactement le pourquoi du comment ![]()
"Ah et,prions pour que la version 5 ne soit pas aussi castré que la 4
"
Pff , ils vous ont déjà justement offert les ombres dynamiques sur une lumière directionnelle (avant y avait rien) et un minimum de lightmaps entre la version 3 et la version 4, et vous en demandez encore?
Faut bien qu'ils continuent de taxer les petits indépendants pour continuer d'être dans le haut du panier... ![]()
j'ai aussi peur qu'un design trop modulaire fasse exploser ton nombre de draw calls
modeliser la map en entier, pas question evidemment, mais pas aller jusqu'a exporter chaque porte et pan de mur séparément.. Ce que j'aurais fait c'est exporter chaque gros objet, en calculant l'illumination et l'ombrage propre. A propos, je vois pas le problème avec la GT210
précalculer une lightmap sur un logiciel de 3D ne fait pas forcément appel au GPU, et les logiciels de 3D n'affichent pas les modèles avec le plus grand niveau de rendu possible, du moins ils ne le font pas sans qu'on leur demande ![]()
Journey : Ce que je voulais dire c'est que l'aspect plat aurait été le même sous d'autres moteurs. Donc pour le moment, il faut se concentrer sur la qualité des models qui je trouve sont supers. L'aspect modulaire disparaitra je pense, avec les objets uniques sur la map, les fps d'aujoudhui n'ont pas que des murs.
vintrigue : le nombre de drawcall peut être réduit grace au batching (automatique) et au mesh combiner.
D'ailleurs ça tourne à combien de fps pour le moment ?
@[Heaven]Journey
Hé, merci pour ta réponse complète ^^ .
Bon, j'ai toujours rien compris au "backing", me renseignerai
...
Dur le plugin pour les lightmaps, je suppose qu'il est payant...
Pour les puissances de 2, je vois : le partitionnement de l'espace doit être un octree (des petits cubes récursivement imbriqués) et par exemple pour descendre d'un "étage" il suffit de faire "size << 1", plus rapide que "size * 0.5" .
Cela dit c'est un choix très discutable, de grosses contraintes pour un gain de perf certainement minime...
(pour un partitionnement plus souple faut peut-être acheter un plugin
...)
"Pour les puissances de 2, je vois : le partitionnement de l'espace doit être un octree (des petits cubes récursivement imbriqués) et par exemple pour descendre d'un "étage" il suffit de faire "size << 1", plus rapide que "size * 0.5" . "
Non, il parlait du z-fighting, je crois... Bizarre cependant, il serait évité en posant les objets sur des grilles en puissance de 2? Ca mérite de faire des recherches
"Bon, j'ai toujours rien compris au "backing", me renseignerai
... "
Et bien tu vois, tu as un objet éclairé par une lumière, et bien en fait, pour économiser une source de lumière, tu vas la supprimer et mettre l'éclairage qu'il produisait directement dans la texture de l'objet, 'fin en gros c'est ça, c'est le cuisinage de textures. ![]()
""Bon, j'ai toujours rien compris au "backing", me renseignerai
... " "
Ca ne sert a rien de calculer dynamiquement l'éclairage sur un objet immobile a partir d'une source de lumière qui ne change pas. Dans ces cas là, on calcule l'éclairage et on le met dans la texture, pour sacrifier un peu de mémoire au profit d'un peu de performances, ou tout simplement de qualité. Un exemple en image:
http://sournoishack.com/uploads/402700272test1.JPG Voici l'effroyablement moche mascotte de blender, entourée par une lumière rouge et une lumière bleue. L'éclairage est dynamique, je peut bouger les lumières et ça changera l'apparence du modèle. Sauf que ça me fait chier de dépenser des nanosecondes pour calculer de l'éclairage sur cette tête de mort, je vais donc cuisiner la texture.
http://sournoishack.com/uom/uploads/2067930664test2.jpg Voici l'UVmapping de la monstruosité, en mode lightmap. Je ne te décris pas le principe de l'UV mapping, j'espère que tu le connais, mais en gros on place les polygones sur la partie d'image qu'on veut qu'ils affichent.
http://sournoishack.com/uploads/85944585test3.jpg je crée une image d'une certaine taille, j'appuie sur "bake" et voilà, comme diraient les anglais, les lumières ont coloré la texture selon la manière dont elles coloraient le modèle. Dans ce screenshot, j'ai viré les deux lumières, c'est donc la texture qui donne son apparence a suzanne, un si beau nom jusqu'a ce que blender sorte.
http://sournoishack.com/uom/uploads/1730185802test4.jpg Je peut même lui peinturlurer la tronche a cette grognasse.
Mais l'un des autre avantage du cuisinage de texture, même dans des conditions d'éclairage dynamique, c'est aussi de calculer l'ombrage propre, ou occlusion ambiante, c'est a dire l'ombrage de recoin, là ou la lumière a du mal a passer:
http://sournoishack.com/uom/uploads/2029439167test5.jpg Ce rendu donne énormément de volume aux objets 3D et est un requis majeur dans le rendu d'une scène 3D. Manque de pot, on ne peut pas le faire en temps réel ou presque, car ça pompe une puissance de folie. Unity le fait mal. UDK le fait mal. Cry engine le fait mal. Ogre3D le fait mal. On appelle ça la SSAO, l'HDAO, l'HBAO, et c'est bancal, mais c'est obligé, car ça consomme une puissance astronomique pour pas grand chose. Alors que précalculer ça en arrière plan pendant quelque minutes/heures pendant qu'on continue de bosser, et coller ça en texture d'illumination au modèle, ça change la vie, et ça supporte très bien un éclairage dynamique, les zones peu accessibles restant globalement plus sombres même si y a des lumières qui tournent autour du modèle.