Vous cherchez à créer des textures pour Unity3d, et je suis bloqué sur ce qui semble être une étape simple. Mon objectif est de créer une image RGBA, avec des informations de couleur pour chaque pixel, et un canal alpha séparé. Ces deux composants sont introduits dans Unity en tant que couleur de base et force de réflexion, respectivement. (Utilisation d'un matériau "réfléchissant / diffusé".)
Si j'utilise des outils de masquage dans Photoshop, je peux effacer des parties de l'image de sortie (transparence). Cependant, je voudrais conserver les informations de couleur RBG d'origine lors de la sortie, et pas seulement avoir des zones "vides". De plus, ce serait bien si je pouvais le faire de manière non destructive, c'est-à-dire. le canal alpha final dépend d'un calque standard, ou construit à partir d'un objet chemin, etc.
J'ai le même problème avec The Gimp.
Toute aide à ce sujet serait grandement appréciée.
(Si Photoshop / Gimp ne sont pas les outils pour le travail, quelqu'un peut-il en recommander un meilleur?)
Je trouve que la meilleure façon de le faire dans The GIMP est d'utiliser un masque de calque (clic droit sur un calque et créer un masque).
Le calque sera alors associé à deux "images" - l'image RGBA et un masque de calque en niveaux de gris qui agit comme un canal alpha supplémentaire (multiplicatif). Vous pouvez cliquer sur l'une de ces images pour sélectionner celle qui sera modifiée.
Si vous maintenez CTRL et cliquez sur le masque de calque, vous verrez juste l'image RGBA (cela désactive le masque). Si vous maintenez la touche ALT enfoncée et cliquez sur le masque de calque, vous ne verrez que le masque de calque.
Lorsque vous exportez une image avec un masque de calque actif, l'image exportée conservera les informations de couleur même à partir des zones que le masque rend entièrement transparentes.
Pour vos besoins, vous pouvez trouver efficace de composer votre canal alpha sur un calque séparé (RGBA) - puis lorsque vous avez terminé, vous pouvez simplement copier ce calque dans le masque de calque du calque d'origine.
la source
Dans le GIMP, une façon serait de diviser l'image en couches pour chaque canal. Sélectionnez "Couleurs-> Composants-> Décomposer" et choisissez RGBA ou les canaux que vous souhaitez diviser en calques. Ensuite, modifiez vos canaux alpha et couleur individuels comme bon vous semble (ils doivent être en niveaux de gris), puis allez dans "Couleurs-> Composants-> Composer" choisissez la disposition de canal souhaitée et choisissez les calques à utiliser pour chaque canal.
Vous pouvez également utiliser la boîte de dialogue "Chaînes". Cela devrait faire partie des choses par défaut de la boîte à outils, mais sinon, vous pouvez sélectionner "Windows-> Dialogues ancrables-> Canaux". Vous pouvez basculer la visibilité de chaque canal de couleur, et en cliquant et en mettant en surbrillance les noms de canal, vous pouvez choisir ceux à modifier individuellement (il semble qu'il préserve la couleur avec alpha, bien que je ne vois pas de moyen de "masquer" l'alpha pendant modification sans masquer l'image entière ...).
la source
Pour écrire votre propre processeur de contenu (comme suggéré par @Andrew Russell) spécifique à Unity3D, placez ce script dans votre
Assets/Editor
dossier combinera n'importe quelle image*-Base.*
avec un*-Alpha.*
fichier du même nom et modifier la texture d'origine:Adaptez-vous à vos propres conventions de dénomination des fichiers de ressources.
la source
Une alternative consiste à écrire votre propre processeur de contenu pour effectuer l'opération souhaitée. De cette façon, vous pourriez simplement donner à votre couche de "réflectivité" (ou même plusieurs couches de réflectivité) un nom spécial, et demander au processeur de contenu de mettre ces données dans le canal alpha pour vous. (Ou bien implémentez tout type de processus que vous aimez.)
Si vous utilisiez XNA et The GIMP (c'est ce que j'utilise et que je connais bien), il vous serait très facile d'ajouter cet importateur XCF à votre pipeline de contenu et d'apporter les modifications nécessaires pour traiter des couches spécialement nommées.
Comme vous utilisez Unity, pas XNA, je ne connais pas les options de pipeline de contenu dont vous disposez. Mais vous pouvez peut-être adapter le code lié pour qu'il fonctionne dans votre processus de contenu.
la source