[Résolu] 2 Materials - transparent+diffuse = erreur visuel

Questions à propos du scripting Shader.
Avatar de l’utilisateur
kamorne
Messages : 137
Inscription : 18 Juil 2012 07:44
Localisation : Bruxelles

[Résolu] 2 Materials - transparent+diffuse = erreur visuel

Message par kamorne » 02 Juin 2014 21:06

Salutation,

J'ai un mesh d'une épaulière d'armures, sur le quel j'ai appliqué 2 textures :
1) une texture Transparent, un emblème avec une couleur
2) une texture en speculare, le métal de l'armure

La 1er texture Transparent pourra être modifier par le joueur (l'image et la couleur) j'ai donc besoin de garder 2 textures,

Mon soucis est : une erreur d'affichage, l'emblème semble superposé/clignote :
Image

pourtant dans l'inspector l'affiche est correct :
Image

la texture :
Image


Webplayer : https://dl.dropboxusercontent.com/u/515 ... _2mat.html ( bouton milieu souris pour faire pivoter la camera )

j'ai déjà essayé :
- les divers shader disponible (transparent/cutoff etc...)
- modifier la config de la texture (GUI, ...)

Sur la toile j'ai trouvé quelques informations où il faut crée un shader pour faire ceci, mais peut être que je m'y prend mal pour avoir le résultat escompté ? si quelqu'un a une piste, je suis preneur ;) si je suis obligé de passer par un shader adapté, une piste est également bienvenu :idea:

Thanks,
Dernière édition par kamorne le 02 Juin 2014 22:15, édité 1 fois.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: 2 Materials - transparent+diffuse = erreur visuel

Message par cayou66 » 02 Juin 2014 21:30

C'est un problème de Z fighting, dans ton cas ça m'a pas l'air trop grave, c'est seulement que lorsque la distance est trop faible entre deux meshs unity va avoir tendance à mélanger leur ordre.
C'est encore pire sur les objets transparents.

Je vois deux solutions rapides, écarter un peu les objets, ou bien réduire le far de la caméra. En effet, si tu baisses le champ de vue de la caméra, Unity aura plus de facilité à calculer les distances.
Une dernière solution serait de passer par un autre système que ce que tu utilises. Tu pourrais avoir plusieurs matériaux sur un même objet, et jouer avec les UVs. Cette solution marche bien pour des edges bien séparés. Sinon tu peux aussi passer par un shader spécial, qui pourrait remplacer une couleur de ton objet par une autre (genre rose bonbon par un paramètre couleur du shader).

Edit: Bon point pour la présentation du problème. C'est assez peu fréquent pour le signaler ;)

Avatar de l’utilisateur
kamorne
Messages : 137
Inscription : 18 Juil 2012 07:44
Localisation : Bruxelles

Re: 2 Materials - transparent+diffuse = erreur visuel

Message par kamorne » 02 Juin 2014 22:14

Merci pour la réponse rapide ! je suis partit sur l'option "écarté l'objet"

j'ai ajouté un mesh pour l'emblème, qui est légèrement au dessus de mon mesh de base d’épaulière, je perd surement un peu en perf, mais le rendu est exactement ce que je cherchais ;)

Image

thx

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par F@B » 02 Juin 2014 22:16

c'est pas super optimisé tout ça, il te faudrait faire un bon dépliage uv de ton perso et y inclure ta texture! :)

m'enfin ça marche aussi
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
kamorne
Messages : 137
Inscription : 18 Juil 2012 07:44
Localisation : Bruxelles

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par kamorne » 02 Juin 2014 22:54

tu veux dire au niveau de l'épaulière ?
si oui, c'est voulu (en tout cas c'est la solution que j'avais trouvé :) ) que ce ne soit pas un mesh avec tout inclu (armure+personnage), ça me permet d'avoir un mesh de perso avec anim d'un côté et d'un autre lui composer une armure en mélangeant les parties d'armure (une épaulière, un plastron etc ...) qui sont attaché aux bones du personnage

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6224
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par boubouk50 » 03 Juin 2014 09:49

Sinon y'a toujours la possibilité, en shader, d'utiliser le Z-Depth pour simuler un décalage et afficher ton alpha toujours devant.
Documentation Unity

C'est un peu loin pour moi maintenant, si je me souviens bien, tu dois ajouter cette ligne à ton shader:

Code : Tout sélectionner

SubShader {
    ...
    Offset -1,-1 //Offset sur Z local
    ...}
Vois avec la doc et fais quelques tests. Si tu arrives au bon résultat, poste-le ici, ça nous servira toujours.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par cayou66 » 03 Juin 2014 15:35

boubouk50 a écrit :Sinon y'a toujours la possibilité, en shader, d'utiliser le Z-Depth pour simuler un décalage et afficher ton alpha toujours devant.
Documentation Unity

C'est un peu loin pour moi maintenant, si je me souviens bien, tu dois ajouter cette ligne à ton shader:

Code : Tout sélectionner

SubShader {
    ...
    Offset -1,-1 //Offset sur Z local
    ...}
Vois avec la doc et fais quelques tests. Si tu arrives au bon résultat, poste-le ici, ça nous servira toujours.
Le problème c'est que si il tourne son personnage, le logo risque d'être visible à travers le corps, non?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6224
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par boubouk50 » 03 Juin 2014 17:27

Dans ce cas d'un objet convexe, non, puisque la face intérieure n'est pas rendue.

En y repensant, je crois que l'offset est effectué suivant le Z local de la face (normale), donc il n'y a pas de problème. C'est une sorte de "push" en fonction de la distance caméra pour rectifier les conflits de superposition. Dans tous les cas, donc, ça devrait marcher.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6224
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par boubouk50 » 03 Juin 2014 17:29

Le souci c'est si il y a un autre objet qui viendrait proche de l'emblème, genre une épée qui viendrait sur l'épaule. il se peut que l'emblème soit rendu par dessus (en fonction de la distance de la caméra)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: [Résolu] 2 Materials - transparent+diffuse = erreur visu

Message par cayou66 » 03 Juin 2014 17:31

boubouk50 a écrit :Le souci c'est si il y a un autre objet qui viendrait proche de l'emblème, genre une épée qui viendrait sur l'épaule. il se peut que l'emblème soit rendu par dessus (en fonction de la distance de la caméra)
En effet.

Répondre

Revenir vers « les Shaders »