Я хочу сделать текстуры для Unity3d, и я застрял на том, что кажется простым этапом. Моя цель - создать изображение RGBA с информацией о цвете для каждого пикселя и отдельным альфа-каналом. Эти два компонента вводятся в Unity в качестве базового цвета и силы отражения соответственно. (Использование материала «Отражающий / Удар диффузный».)
Если я использую маскирующие инструменты в Photoshop, я могу стереть части выходного изображения (прозрачность). Однако я хотел бы сохранить исходную информацию о цвете RBG при выводе, а не просто иметь «пустые» области. Кроме того, было бы хорошо, если бы я мог сделать это неразрушающим, т.е. конечный альфа-канал зависит от стандартного слоя или построен из объекта пути и т. д.
У меня та же проблема с Gimp.
Любая помощь по этому вопросу будет принята с благодарностью.
(Если Photoshop / Gimp не являются инструментами для работы, кто-то может порекомендовать лучший?)
Я считаю, что лучший способ сделать это в GIMP - использовать маску слоя (щелкните правой кнопкой мыши на слое и создайте маску).
Затем слой будет иметь два «изображения», связанных с ним - изображение RGBA и маску слоя в градациях серого, которая действует как дополнительный (мультипликативный) альфа-канал. Вы можете щелкнуть любое из этих изображений, чтобы выбрать, какое из них будет редактироваться.
Если вы удерживаете клавишу CTRL и щелкаете маску слоя, вы увидите только изображение RGBA (это отключит маску). Если вы удерживаете нажатой клавишу ALT и щелкаете маску слоя, вы увидите только маску слоя.
При экспорте изображения с активной маской слоя экспортированное изображение сохранит информацию о цвете даже из областей, которые маска делает полностью прозрачными.
Для ваших целей может оказаться полезным скомпоновать ваш альфа-канал на отдельном (RGBA) слое - тогда, когда вы закончите, вы можете просто скопировать этот слой в маску слоя исходного слоя.
источник
В GIMP одним из способов было бы разделить изображение на слои для каждого канала. Выберите «Colors-> Components-> Decompose» и выберите RGBA или любые другие каналы, которые вы хотите разбить на слои. Затем отредактируйте ваши индивидуальные альфа-каналы и цветовые каналы по своему усмотрению (они должны быть в оттенках серого), затем перейдите в «Цвета-> Компоненты-> Компоновка», выберите желаемую компоновку канала и выберите слои для каждого канала.
Также вы можете использовать диалог «Каналы». Это должно быть частью набора инструментов по умолчанию, но если нет, вы можете выбрать «Windows-> Dockable Dialogues-> Channels». Вы можете переключать видимость каждого цветового канала, и, нажимая и выделяя названия каналов, вы можете выбрать, какие из них редактировать по отдельности (похоже, он сохраняет цвет с альфа-каналом, хотя я не вижу способа «скрыть» альфа-канал, пока редактирование без скрытия всего изображения ...).
источник
Чтобы написать свой собственный контент-процессор (как предложено @Andrew Russell), специфичный для Unity3D, поместите этот скрипт в вашу
Assets/Editor
папку, объедините любое изображение*-Base.*
с*-Alpha.*
файлом с аналогичным именем и измените исходную текстуру:Приспособьтесь к своим собственным соглашениям об именах файлов активов.
источник
Один из вариантов - написать собственный процессор контента для выполнения нужной вам операции. Таким образом, вы можете просто дать своему слою «отражающей способности» (или даже нескольким слоям отражательной способности) специальное имя, и процессор содержимого поместит эти данные в альфа-канал для вас. (Или действительно реализуйте любой процесс, который вам нравится.)
Если вы использовали XNA и GIMP (это то, что я использую и знакомы с ним), вам будет очень легко добавить этот импортер XCF в ваш конвейер контента и внести необходимые изменения для обработки специально названных слоев.
Поскольку вы используете Unity, а не XNA, я не знаю, какие опции конвейера контента у вас есть. Но, возможно, вы можете адаптировать связанный код так, чтобы он работал в рамках вашего контента.
источник