Войти
UnityФорумПрограммирование

Проблемы с материалом в Unity

#0
14:21, 18 окт 2022

Добрый день. Столкнулся с такой проблемой: хотел сделать невидимость корабля, изменяя настройки альфа канала в материале, но при изменении Surface Type c Opaque на Transparent корабль просто ломается (видоизменяется) и я не понимаю почему так.

вот так с opaque:
Изображение

вот настройки материала:

Изображение

а вот так становится с Transparent:

Изображение

и вот его настройки:

Изображение

как видите, я изменил только surface type, но с кораблем что-то совсем не то и я не понимаю что не так. Буду благодарен за любую помощь

#1
17:34, 18 окт 2022

Да там беда с двойной прозрачностью. Насколько я понял это от геометрии модели зависит.

#2
18:03, 18 окт 2022

sledo
Т.е. эта ошибка на этапе создания модели?
Ее надо исправлять в блендере?

#3
21:03, 18 окт 2022

DenisU
> Т.е. эта ошибка на этапе создания модели?
Сложно сказать. Обычно я просто брал другую модель и не парился

#4
(Правка: 9:14) 9:11, 19 окт 2022

DenisU
все дело в порядке отрисовки треугольников, получается так, что в z буфер пишутся дальние или ближние к камере треугольники (порядок в данном случае зависит от порядка индексов треугольников), а остальные в свою очередь не проходят z тест. Тут или отделить навесные детали корабля как отдельные объекты, или попробовать разбить модель на отдельные меши и попробовать заново их сшить в нужном порядке.

#5
(Правка: 9:49) 9:49, 19 окт 2022

https://docs.unity3d.com/2017.2/Documentation/Manual/SL-CullAndDepth.html
Изображение

#6
(Правка: 9:51) 9:50, 19 окт 2022

Сделай не через альфу, а через dithering shader - быстрее добьёшься желаемого результата, хоть и менее красиво.
Альфа в 3д - это сложно, сеньоры-помидоры не всегда понимают, как с этим работать

#7
22:12, 19 окт 2022

DenisU
Получилось исправить. Нашел решение?

#8
10:10, 27 окт 2022

SergeyZx
к сожалению еще нет

#9
(Правка: 0:22) 0:22, 9 дек 2022

Render Mod = Transparent это для стекла и прочих полупрозрачных объектах
Render Mod = Cutout сделает объект невидимым. просто постепенно уменьшайте его альфа канал

#10
(Правка: 1:46) 1:45, 9 дек 2022

DenisU
Отрисовка модели с прозрачностью даст не то что ты хочешь, даже если разберешься с глубиной, т.к. в процессе исчезания будут видны некрасивые кишки корабля.

Чтоб красиво было, исчезающий корабль надо рисовать обычным способом, но не в общий фрейбэмбуффер, а в отдельную рендертекстуру. А потом уже с уменьшающейся альфой накладывать эту рендер текстуру на основную картинку. Делается через вторую камеру, смотрящую туда же что и основная, указанием рендертаргета и... Как выкладывать рендертекстуру на кадр - я не помню.

Разумеется, подойдёт только если исчезающих кораблей мало в кадре.

UnityФорумПрограммирование