Próbuję tworzyć tekstury dla Unity3d i utknąłem na czymś, co wydaje się być prostym etapem. Moim celem jest stworzenie obrazu RGBA z informacjami o kolorze dla każdego piksela i osobnym kanałem alfa. Te dwa elementy są wprowadzane do Unity odpowiednio jako kolor podstawowy i siła odbicia. (Korzystanie z materiału „Reflective / Bumped Diffuse”).
Jeśli korzystam z narzędzi do maskowania w Photoshopie, mogę wymazywać części obrazu wyjściowego (przezroczystość). Chciałbym jednak zachować oryginalne informacje o kolorze RBG podczas drukowania, a nie tylko mieć „puste” obszary. Byłoby również miło, gdybym mógł to zrobić nieniszcząco, tj. końcowy kanał alfa jest zależny od standardowej warstwy lub zbudowany z obiektu ścieżki itp.
Mam ten sam problem z The Gimp.
Każda pomoc w tym zakresie byłaby bardzo mile widziana.
(Jeśli Photoshop / Gimp nie są narzędziami do tego zadania, czy ktoś mógłby polecić lepszy?)
Znajduję najlepszy sposób, aby to zrobić w GIMP jest użycie maski warstwy (kliknij warstwę prawym przyciskiem myszy i utwórz maskę).
Z warstwą będą wtedy powiązane dwa „obrazy” - obraz RGBA i maska warstwy w skali szarości, która działa jako dodatkowy (multiplikatywny) kanał alfa. Możesz kliknąć jeden z tych obrazów, aby wybrać, który będzie edytowany.
Jeśli przytrzymasz CTRL i klikniesz maskę warstwy, zobaczysz tylko obraz RGBA (powoduje to wyłączenie maski). Jeśli przytrzymasz klawisz ALT i klikniesz maskę warstwy, zobaczysz tylko maskę warstwy.
Po wyeksportowaniu obrazu z aktywną maską warstwy wyeksportowany obraz zachowa informacje o kolorze nawet z obszarów, które maska czyni w pełni przezroczystym.
Dla swoich celów skuteczne może być skomponowanie kanału alfa na osobnej warstwie (RGBA) - wtedy po zakończeniu możesz po prostu skopiować tę warstwę do maski warstwy oryginalnej.
źródło
W GIMP jednym ze sposobów byłoby podzielenie obrazu na warstwy dla każdego kanału. Wybierz „Kolory-> Składniki-> Rozkład” i wybierz RGBA lub dowolne kanały, które chcesz podzielić na warstwy. Następnie edytuj poszczególne kanały alfa i kolorowe według własnego uznania (powinny być w skali szarości), a następnie przejdź do „Kolory-> Komponenty-> Komponuj”, wybierz pożądany układ kanałów i wybierz warstwy dla każdego kanału.
Możesz także skorzystać z okna dialogowego „Kanały”. Powinien być częścią domyślnego zestawu narzędzi, ale jeśli nie, możesz wybrać „Windows-> Dockable Dialogues-> Kanały”. Możesz przełączać widoczność każdego kanału kolorów, a klikając i podświetlając nazwy kanałów, możesz wybrać, które z nich chcesz edytować indywidualnie (wygląda na to, że zachowuje kolor z alfa, chociaż nie widzę sposobu, aby ukryć alfa podczas edycja bez ukrywania całego obrazu ...).
źródło
Aby napisać własny procesor treści (jak sugeruje @Andrew Russell) specyficzny dla Unity3D, umieść ten skrypt w
Assets/Editor
folderze połączy dowolny obraz*-Base.*
z*-Alpha.*
plikiem o podobnej nazwie i zmodyfikuje oryginalną teksturę:Dostosuj się do własnych konwencji nazewnictwa plików zasobów.
źródło
Jedną z możliwości jest napisanie własnego procesora treści w celu wykonania żądanej operacji. W ten sposób możesz po prostu nadać swojej warstwie „odbijającej” (lub nawet wielu warstwom odbijającym) specjalną nazwę, a procesor treści umieści te dane w kanale alfa. (Lub rzeczywiście wdrożyć dowolny proces, który ci się podoba.)
Jeśli korzystasz z XNA i GIMP (to jest to, z czego korzystam i jestem zaznajomiony), byłoby bardzo łatwo dodać tego importera XCF do potoku treści i wprowadzić niezbędne modyfikacje do przetwarzania specjalnie nazwanych warstw.
Ponieważ używasz Unity, a nie XNA, nie wiem, jakie masz opcje potoku treści. Być może jednak możesz dostosować połączony kod, aby działał w ramach procesu treści.
źródło