Неруйнівний спосіб редагування альфа-каналу у зображенні Photoshop / Gimp


9

Хочу зробити текстури для Unity3d, і я застряг у тому, що здається простим етапом. Моя мета - створити RGBA-зображення з кольоровою інформацією для кожного пікселя та окремим альфа-каналом. Ці два компоненти надходять у Unity як відповідно базовий колір, так і сила відбиття. (Використання матеріалу "Відбиваючий / зіткнений дифуз".)

Якщо я використовую інструменти маскування у Photoshop, я можу стерти частини вихідного зображення (прозорість). Однак я хотів би зберегти оригінальну інформацію про кольори RBG під час виведення, а не просто мати «порожні» області. Також було б непогано, якби я міг це зробити неруйнівно, тобто. остаточний альфа-канал залежить від стандартного шару або побудований з об'єкта шляху тощо.

У мене така ж проблема з The Gimp.

Будь-яка допомога з цього приводу буде дуже вдячна.

(Якщо Photoshop / Gimp не є інструментом для роботи, хтось може, будь ласка, порекомендувати кращий?)

Відповіді:


4

Photoshop Рішення

Видалення ділянки зображення лише впливає на цей шар. Що ви хочете зробити, це створити окремий канал, який зберігає вашу альфа-інформацію.

  1. На панелі інструментів із шарами / каналами / шляхами виберіть вкладку канали. Тут ви побачите RGB, червоний, зелений та синій.
  2. Створіть новий канал за допомогою кнопки внизу панелі, це ваш альфа-канал. Це 8-бітний канал сірого масштабу, що забезпечує 256 рівнів прозорості.
  3. Ви можете використовувати маленькі піктограми "очей", щоб увімкнути / вимкнути цей канал.
  4. Намалюйте або скопіюйте / вставте свою інформацію в канал.

Примітка. Під час збереження потрібно бути обережним щодо форматів файлів. Такі речі, як .Tiff & .TGA, зберігають повний альфа-канал незалежно від кольорової інформації. Однак Photoshop не дозволяє цього з PNG, багатьом розробникам неприємно. Він не буде належним чином зберігати зображення альфа-каналів і прагне викреслити кольорову інформацію для повністю прозорих областей для стиснення розміру файлу.


Саме в цьому полягала моя проблема. Я виходив на PNG і не бачив жодної «альфа» каналу. Дякую, це ідеально. Хтось має інструкції щодо використання Gimp аналогічно?
eli

1
Це засмучує те, що назад навколо версії 5.0 або 5.5 Photoshop фактично збереже весь канал на PNG. Adobe змінила спосіб поводження з ними для наступних версій програмного забезпечення.
Зітхніть

4

Я вважаю, що найкращий спосіб зробити це в GIMP - це використовувати маску шару (клацніть правою кнопкою миші на шарі та створити маску).

Потім у шарі будуть пов'язані два "зображення" - зображення RGBA та маска шару сірого шару, яка виконує функцію додаткового (мультиплікативного) альфа-каналу. Ви можете натиснути будь-яке з цих зображень, щоб вибрати, яке з них буде відредаговано.

Якщо ви тримаєте CTRL і натискаєте маску шару, ви побачите лише зображення RGBA (це відключає маску). Якщо утримувати ALT і натиснути маску шару, ви побачите просто маску шару.

Коли ви експортуєте зображення з маскою активного шару, експортоване зображення збереже інформацію про колір навіть із областей, які маска робить повністю прозорими.

Для ваших цілей вам може бути ефективним складати свій альфа-канал на окремому шарі (RGBA) - тоді, коли ви закінчите, можете просто скопіювати цей шар у маску шару початкового шару.


Це ближче до того, що мені потрібно. Але це впливає лише на верхній шар! У мене на зображенні є кілька шарів, і я хотів би це зробити, не згладжуючи. Дякую за відповідь.
eli

Додайте шар маски до кожного шару вашого зображення.
deft_code

2

У GIMP одним із способів було б розділити зображення на шари для кожного каналу. Виберіть "Кольори-> Компоненти-> Розкласти" та виберіть RGBA або будь-який канал, який ви хочете розбити на шари. Потім відредагуйте свої індивідуальні альфа- та кольорові канали, як вам здається (вони повинні бути відтінками сірого), потім перейдіть до пункту «Кольори-> Компоненти-> Створити», виберіть потрібний макет каналу та виберіть шари, які потрібно використовувати для кожного каналу.

Також ви можете скористатися діалогом "Канали". Це повинно бути частиною речей інструментів за замовчуванням, але якщо ні, ви можете вибрати "Windows-> Діаграми доклейки-> Канали". Ви можете перемикати видимість кожного кольорового каналу, натискаючи та підсвічуючи назви каналів, ви можете вибрати, які редагувати окремо (схоже, він зберігає кольори за допомогою альфа, хоча я не бачу способу "приховати" альфа під час редагування без приховування всього зображення ...).


схоже, я повинен спершу вирівняти зображення, потім розкласти, потім відредагувати, а потім перекомпонувати. Дякую за пораду! Але я шукаю неруйнівний шлях.
Eli

А-а-а, я припускав, що ви працюєте з одношаровим зображенням, так що вирівнювання не буде потрібним, але тоді нічого не потрібно. Удачі!
Райлі Адамс

2

Щоб написати власний процесор контенту (як це запропонував @Andrew Russell), характерний для Unity3D, розмістіть цей скрипт у своїй Assets/Editorпапці, поєднуючи будь-яке зображення *-Base.*з аналогічним *-Alpha.*файлом та змініть оригінальну текстуру:

class AlphaCombinerPostprocessor extends AssetPostprocessor {
    function OnPostprocessTexture(texture : Texture2D)
    {
        if (assetPath.Contains("-Base.")) {
            var fn = assetPath.Replace("-Base.","-Alpha.");
            var alpha = AssetDatabase.LoadAssetAtPath(fn,Texture2D);
            if (alpha) {
                Debug.Log("Adding alpha from "+fn);
                var c : Color[] = texture.GetPixels();
                var a : Color[] = alpha.GetPixels();
                if (c.Length != a.Length) {
                    Debug.LogError(fn+" is different size to "+assetPath);
                    return;
                }
                for (var i=0; i<c.Length; i++)
                    c[i].a = a[i].a;
                texture.SetPixels(c);
                texture.Apply(true);
            }
        }
    }
}

Адаптуйте до власних угод про іменування файлів активів.


0

Однією з альтернатив є написання власного процесора вмісту для виконання потрібної операції. Таким чином, ви можете просто надати шару "відбиваючої здатності" (або навіть декілька шарів відбивної здатності) спеціальне ім'я, а процесор вмісту помістити ці дані в альфа-канал для вас. (Або дійсно впроваджуйте будь-який процес, який вам подобається.)

Якщо ви використовували XNA та GIMP (саме цим я користуюсь і я знайомий), вам було б дуже просто додати цього імпортера XCF до контентного конвеєра та внести необхідні модифікації для обробки спеціально названих шарів.

Оскільки ви використовуєте Unity, а не XNA, я не знайомий з наявними у вас варіантами конвеєра контенту. Але, можливо, ви можете адаптувати зв'язаний код так, щоб він працював у вашому процесі вмісту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.