mardi 18 novembre 2014

Contrainte 2
Sujet - Reboot de Gun Smoke (NES) + Ghosts'n Goblins
Artiste FX - Shader

Semaine 4:

Flamme de chandelle:

Cette semaine je devais faire une flamme de chandelle. Pour la faire, j'avais en tête d'avoir seulement une texture et de trouver le moyen d'utiliser un sinus afin de créer de la distorsion dans le matériel. Je savais déjà que j'aillais mette le matériel dans le système de particule et que j'allais le mettre en Ribbon avec une accélération.

Comme on peut voir dans le vidéo on peut isoler la sinus pour en extraire une ligne droite qui pan. La façon de l'isoler c'est en faisant une addition entre la node ''Time'' et entre un des channel d'un ''Texture Coordinate'', qu'on va ensuite brancher dans le sinus. Avant de réussir ce que je voulais faire avec le sinus j'ai fait quelques trucs qui sont des erreurs, mais qui m'ont permis de mieux comprendre le comportement du sinus.

Voici le vidéo montrant la flamme et le matériel:





Splash de sang:



Alors pour le sang j'ai continué à partir des rendus test de realflow de la semaine 3. J'ai exporté 3 simulations à l'intérieur de 3ds max pour que je puisse y créer les rendues dont j'avais besoin. Je voulais créer un spritesheet pour voir la qualité du résultat. J'ai alors créé un setup de caméra ainsi que de lumière pour simuler les coordonnés UV sur le splash pour que je puisse avoir une normal map. Le setup de la caméra est fait à la main, la caméra doit alors suivre le splash et le garder cadré. Je ne sais pas s’il y a une meilleure façon de pouvoir rendre les splash, mais j'ai du y aller avec mes connaissances.


Le setup de caméra:

Ensuite le résultat c'est une immense texture:

Pour les normal on doit faire, une image a la fois, l'ajustement du channel bleu pour avoir le rendu de la normal map. Le rendu des normal une fois terminé:

Close up



Au final, tous fonctionnent excepté que le spritesheet est gros et c'est une texture assez lourde. Dans mon cas elles font 48 Mo chaque. Voici le vidéo qui montre non pas un rendu d'un effet final, mais seulement un test de Particle SubUv pour voir l'animation. Lors de la prise vidéo j'ai omis de flipper mes normals désolé pour l'inconvénient:







Malheureusement, mes textures étaient trop lourdes et j'avais alors un nouveau problème, celui de l'optimisation. J'ai alors trouvé une méthode pour faire de l’alpha érosion ou de l’alphatest, il y a plusieurs noms pour ce type d'effet.

Alors, pour l'alphatest, j'ai toujours besoin des rendus de splash que j'ai déjà fait, mais il y a une méthode à appliquer:

1- Choisir le nombre d'images nécessaires pour créer une texture qui va bien s’éroder. J'en ai eu besoin de 16, j'ai alors choisi 16 images à intervalle régulier. Le but est d'avoir une suite d'images qui montre pas mal toute la simulation, car on veut le début de la simulation et la fin.

2- Ensuite on doit aller dans photoshop avec les images chacune dans leur layer et on applique un Adjustment layer de ''Level''. Ce qui doit être changé dans le Level c'est le gamma, on doit diviser la valeur des pixels par le nombre d'images. Donc, dans mon cas j'utilisais 16 images, je divise alors 255 (la valeur maximale) par 16 ce qui donne 15.93 arrondies à 16. Ça veut donc dire que j'applique un gamma de 16 sur chacun de mes layer.

Voici un exemple visuel des images que j'utilise et du setup de Level:





3- Après avoir sauvegardé les images, on doit les additionner pour avoir ce genre de texture:






Avec cette texture on peut tester l'effet d'érosion que nous allons avoir dans Unreal. Dans photoshop c'est pixelisé, mais on peut avoir une bonne idée du résultat. Il faut seulement ajouter un Adjustment layer ''Threshold'' et jouer avec le slider pour voir l'effet :


Setup de threshold

Résultat du test:


J'ai alors testé l'alphatest dans unreal, c'est très simple il suffit de brancher la map dans la node ''A'' d'un subtract et de brancher un dynamic parameter dans le ''B''. L'effet fonctionne très bien, mais ma normal map ne fonctionnait pas parce qu'elle ne se défaisait pas en filaments et en gouttelettes.

Exemple de la normal qui ne marche plus:


Alors la j'ai créé une normal à partir de la map de Alphatest et je l'ai normalize. Ensuite j'ai été légèrement blender les 2 normals. Ma normal n'est pas encore au top, mais elle fonctionne beaucoup mieux qu'avant.

La nouvelle normal:



Le résultat en comparaison avec l'ancienne normal:


Un vidéo du sprite toujours dans le contexte de RnD, l'effet n'est pas finale.


Avant que je puisse commencer à faire les effets de splash avec les anime de Pat, il me reste à créer d'autre map de splash et surtout de me créer un shader plus réaliste avec de la réfraction (à tester).

Aucun commentaire:

Enregistrer un commentaire