Войти
ПрограммированиеФорумОбщее

[UNITY] Декали повреждений на Skinned Mesh Renderer

Страницы: 1 2 3 4 Следующая »
#0
17:30, 24 мая 2017

Погуглив эту тему, оказалось что по ней вообще нет инфы.

Есть такая процедура Texture2D.SetPixels рисует на текстуре. Получить координаты рейкаста можно через RaycastHit.textureCoord, причем это  обязательно должен быть MeshCollider. Замечательно.
Для статичных объектов все прекрасно сделано.(Mesh Renderer)
А вот если речь идет о динамике Skinned Mesh Renderer - здесь начинаются велосипеды, которые мне пришлось изобретать.
Понятно что MeshCollider не может менять форму, а если и может это затратно.
Однако можно было бы поделить модельку на отдельные меши в местах сгиба костей и прикрепить к костям MeshCollider - однако тут Unity начинает выдавать ошибку
"Unity No Longer Supports Non-Kinematic, Non-Convex colliders"
пришлось продублировать position и rotation кости на отдельный GameObject в LateUpdate, припарентить к нему GameObject c MeshCollider вот что получилось
MeshCollider двигается с костью.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Теперь получить координату и покрасить текстуру дело простое.
Супер черезжопный метод в современном блин движке Unity. Начинаю не любить Unity. Насколько просто это было в Blitz3d движке 2000-х годов и насколько геморно в юньке.
Если кто-то знает другие способы красить текстуру Skinned Mesh Renderer пишите).


#1
17:40, 24 мая 2017

ты, Вова, пацан реальный и правильный?

#2
17:41, 24 мая 2017

Misanthrope
И я хочу с тобой посоветоваться.)

#3
17:57, 24 мая 2017

Flash
вон Tac же делал по этому принцыпу. нарезал модель на конвексы и вуаля.Flash
> Texture2D.SetPixels
стремный способ но часто применяемый. нельзя наложить красивую декаль с блеском итд, че делать кучу сетпикселей еще и текстуру спека?
если этот материал используется для пачки монстров то текстуру тоже менять нельзя так как точка нарисуется на всех сразу. или материал отшарится.

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

сам велосипедил чето такое http://www.gamedev.ru/code/forum/?id=220422

#4
18:04, 24 мая 2017

Mira
> вон Tac же делал по этому принцыпу. нарезал модель на конвексы и вуаля
А причем тут конвексы, конвекс выдаст координату 0.
Mira
> стремный способ но часто применяемый. нельзя наложить красивую декаль с блеском
> итд, че делать кучу сетпикселей еще и текстуру спека?
Почему кучу? есть GetPixels берем все пиксели из текстуры декальки помещаем в Color[] и делаем SetPixels() - одной командой.
Насчет блеска спекулара - я планирую полностью прозрачную текстуру установленную в стандарт шейдере в слоте Secondary Albedo detail. И на ней уже рисовать. В принципе не супер, но блестеть будет. А больше и не надо, учитывая, что юнити у нас в 21 веке обделила нас простыми способами.
А и UV Paint говорят вещь очень сомнительная.
И еще: речь идет о динамике - об анимированной модели, со статикой все понятно и прозрачно.

#5
18:11, 24 мая 2017

> А причем тут конвексы, конвекс выдаст координату 0.
а да, он юзал для выделения части тела а не хитпойнт ловил.

а я пытался просто чтоб для декалей юзались кастомные шейдеры, с нормалями в том числе. поэтому рисование на текстуре не рассматривал как решение.
вот и извращался с скиннед декалями
Flash

кстати что у тебя по производительности? перемещение некинематрических тел должно перестраивать ветки в окттри и быть тяжелой задачей

#6
18:21, 24 мая 2017

Mira
в пересчитаных вершинах отскиненой декали теоретически может оказаться больше 4 весов.. если лишние отбросить и нормализовать то геометрия декали может перестать быть компланарной основной сетке.. артефакты

#7
18:22, 24 мая 2017

Mira
> кстати что у тебя по производительности? перемещение некинематрических тел
> должно перестраивать ветки в окттри и быть тяжелой задачей
Не понял кинематрических, кинематических? Там не участвует риджибоди. Его нет. Вернее есть но на примитивных коллайдерах.
Объясню как работает - регдолл использует примитивные коллайдеры на костях, попали в коллайдер, делаем второй рейкаст в отдельный layer попадаем в meshcollider, рисуем на текстуре.
PS Вешать rigibody на meshcolider это убийство. В 5 версии юнити на это выдает ошибку.

#8
19:12, 24 мая 2017

Все больше убеждаюсь, что надо переходить на Unreal.

#9
20:18, 24 мая 2017

Есть ассет UVPaint.
Никакого тебе анрила пока не доделаешь на юнити.

#10
20:22, 24 мая 2017

E-Cone
я его приводил в ссылке. но он стоит 50 баксов, и так почти с любым более менее продвинутым функционалом. при этом покупка не гарантирует его работоспособности в высших версиях, API могут сломать или поменять а автор положить болт на изделие (что в общем то случается нередко). так же после покупки могут всплыть неприемлимые ограничения в применении, я обычно ищу сначала пиратку или читаю весь тред на форуме - что пишут юзеры

#11
20:24, 24 мая 2017

Я его купил по скидке за 35, + сам автор жаловался, что пиратку на торренты положили.

#12
20:29, 24 мая 2017

E-Cone
и как он работает? создает свою текстуру и блендит? не рисует же в оригинальную текстуру (то видеопамяти не хватит держать клоны)
и коллизию как считает интересно. наверное ченеть типа аппроксимации простыми коллайдерами как рагдолл а потом потрианглово ? я так делал по крайней мере.

#13
20:51, 24 мая 2017

E-Cone
> Никакого тебе анрила пока не доделаешь на юнити.
>
Есть! Кэп) Юнити, никуда от него не денешься.
> Я его купил по скидке за 35, + сам автор жаловался, что пиратку на торренты
> положили.
Предполагаю, что используются сторонняя dll.

#14
20:54, 24 мая 2017

Flash
ыы точно, используется dll какая-то
впрочем я большинство так же делаю через dll на SIMD. работает очень быстро
у меня даже гпу анимация в длл работает, и персонаж рисуется без SkibbedMeshRenderer http://www.gamedev.ru/code/forum/?id=225403&page=12

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее