PureBasic

Forums PureBasic
Nous sommes le Dim 16/Juin/2019 18:19

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: [Résolu] script material canal Alpha, l'arbre qui cache...
MessagePosté: Sam 16/Jan/2016 17:29 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Bonjour,
Je tente d'intégrer dans mon projet un objet mesh dont les textures sont définies par un script material.
Ces textures sont des png avec un canal alpha pour la transparence.
J'obtiens de drôles de choses : là où on devrait seulement voir à travers les faces associées à la texture concernée, il arrive qu'on voit aussi à travers les objets placés derrière (comme des rayons X), mais pas à tous les coups !
J'ai fait plusieurs tentatives avec les paramètres scene_blend et même transparent_sorting, mais je ne parviens pas à trouver la solution.
Plus fort, le résultat obtenu n'est pas le même suivant l'image de texture associée au material. Et même en essayant d'associer la même texture à deux material différents, le résultat est bon pour l'un, mais pas pour l'autre. (par exemple, ça semble moins bien fonctionner avec le feuillage vert qu'avec le brun dans mon archive). Le résultat est aussi différent suivant l'ordre dont on définit les material dans le script. Un casse-tête !
J'ai dû manquer un truc...

L'archive est ici http://lecartablededudule.pagesperso-orange.fr/test_material_alpha.zip
Voyez les feuilles brunes, c'est nickel. Voyez les feuilles vertes, bêrk !
J'aimerais bien mettre une capture ici, mais je ne sais pas comment faire.

Un extrait de mon fichier material
Code:
material arbre_1_obj#3
{
   technique
   {
      pass
      {
         ambient 0 0 0 1
         diffuse 0.5 0.5 0.5 1
         specular 0 0 0 1
                        scene_blend alpha_blend
         //transparent_sorting force

         texture_unit
         {
            texture arbre_1.png
         }
      }
   }
}

material arbre_1_obj#4
{
   technique
   {
      pass
      {
         ambient 0 0 0 1
         diffuse 1 1 1 1
         specular 0 0 0 1
                        scene_blend alpha_blend
         //transparent_sorting force

         texture_unit
         {
            texture arbre_2.png
         }
      }
   }
}


Quelqu'un connaît la solution ?


Dernière édition par Dudule le Dim 17/Jan/2016 11:53, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: script .material et canal Alpha, l'arbre qui cache la fo
MessagePosté: Sam 16/Jan/2016 22:35 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
J'essaie encore, mais j'ai comme un doute. J'ai l'impression que le moteur n'accepte qu'une face texturée avec un canal alpha par objet mesh. Sinon l'objet s'auto-cache lui-même.
A terme, je ne veux mettre qu'une seule texture feuille dans l'arbre, mais sur plusieurs faces orientées dans différents plans. On dirait que le problème est là : ça ne fonctionne que sur un plan. Les autres plans font disparaître l'objet à l'endroit de la transparence de la texture.
Ce n'est pas parce que les faces se croisent. J'ai fait attention à cela car j'imagine que ce n'est pas conseillé.
je pensais aussi à la profondeur de l'image. C'est du 32 bits. Mais j'ai essayé avec du 8 bits et là j'ai du noir au lieu de la transparence. Et avec du gif je reviens au problème initial.

Pour que ce soit plus clair, une archive ici : http://lecartablededudule.pagesperso-orange.fr/test_material_alpha_2

a noter que si j'enlève la ligne 'transparent_sorting force', eh bien l'arbre fait disparaître certaines face de la maison en arrière plan.

Code:
material arbre_1_obj#3
{
   technique
   {
      pass
      {
                        scene_blend alpha_blend
         transparent_sorting force

         texture_unit
         {
            texture arbre_1.png
         }
      }
   }
}


Ça n'est pas loin de me gaver...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: script .material et canal Alpha, l'arbre qui cache la fo
MessagePosté: Sam 16/Jan/2016 23:44 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Et avec la ligne 'depth_write off', il y a du changement, mais ce n'est encore pas convaincant : il y a confusion entre les faces, qui pourtant ne se croisent pas.

Code:
material arbre_1_obj#3
{
   technique
   {
      pass
      {
            scene_blend alpha_blend
             depth_write off
         
         texture_unit
         {
            texture arbre_1.png
             }
      }
   }
}


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: script .material et canal Alpha, l'arbre qui cache la fo
MessagePosté: Dim 17/Jan/2016 0:25 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5161
essaye avec ça (material récupéré ici)
Code:
material arbre_1_obj#3
{
     technique
     {
         pass
         {
             lighting off

             ambient 1 1 1 1
             diffuse 1 1 1 1
             specular 0 0 0 0
             emissive 0 0 0

             // by increase this number, we will get more transparent objects
             alpha_rejection greater 128
             depth_write on

             texture_unit
             {
                 texture arbre_1.png
                 tex_coord_set 0
                 colour_op modulate
             }
         }
     }
}

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: script .material et canal Alpha, l'arbre qui cache la fo
MessagePosté: Dim 17/Jan/2016 11:52 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Ça fonctionne !
Le truc qui change tout, c'est donc la ligne 'alpha_rejection greater 128' qui vaut mieux que 'scene_blend alpha_blend'. J'ai enlevé tout le reste qui n'a aucun effet sur la scène.
Je testerai, si j'ai le temps, avec d'autres valeurs d'alpha_rejection, et je tenterai peut-être de comprendre pourquoi scene_blend ne fonctionne pas. Mais l'important est que ça fonctionne, et que je peux maintenant poursuivre mon apprentissage jusqu'au prochain obstacle...

Merci beaucoup !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [Résolu] script material canal Alpha, l'arbre qui cache.
MessagePosté: Dim 17/Jan/2016 12:12 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5161
Il est aussi conseillé de ne pas laisser en blanc la partie de l'image non visible, mais d'utiliser une couleur proche de la partie visible , dans ton cas du vert. Et peut-être que dans ce cas ton script initial aurait pu fonctionner ? faut expérimenter.
lu ici.

Citation:
Another thing to know: the non visible part of your texture, don't let it white, give it a near color of your visible part. Here, a green color.

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye