Одежда персонажа, новая модель?
| |
Deeve | Дата: Пятница, 14 Января 2022, 21:53 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброго времени суток, уважаемые игроделы. Решил я, значит, начать свой проект, а следовательно и большой путь. Но сразу возник один единственный (пока ещё) вопрос, который мучает меня отсутствием ответа. В общем, вот есть персонаж (3d моделька). Каким образом ПРАВИЛЬНО делать кастомизацию? Игра на Unity. Моделировать умею в 3ds max, но решил осваивать Blender. Но сути не меняет, здесь общий вопрос по моделированию. В общем, допустим, у меня есть персонаж и на нём должен отображаться доспех. Какой из вариантов ВЕРНЫЙ с точки зрения оптимизации, отрисовки, анимаций?
1) Берем модель персонажа, убираем полигоны, которые не подходят под "модель персонажа УЖЕ с ДОСПЕХОМ", "пришиваем" доспех прямо к модели персонажа, заменяя родную модель персонажа. Т.е. при надевании доспеха модель персонажа будет менять на новую. 2) Модель персонажа остается стандартной, и отдельная модель доспеха надевается поверх модели персонажа. Т.е. под моделью доспеха остается целая модель персонажа. (Что в таком случае делать с выпирающими частями, которые отображались на модели "без доспеха"? Допустим, волосы, если доспех - это шлем или трусы, если у персонажа присутствуют половые признаки?) 3) При надевании доспеха - часть модели персонажа удаляется и заменяется на доспех. Т.е. доспех надевается сверху на персонажа, но та часть персонажа, которая скрыта под доспехом - удаляется.
Какой вариант самый верный? Или я что-то упустил?
Добавлено (14 Января 2022, 22:15) --------------------------------------------- Извиняюсь. Не заметил, что есть специальный раздел, посвященный 3D графике.
Сообщение отредактировал Deeve - Пятница, 14 Января 2022, 22:15 |
|
| |
GameDev2 | Дата: Пятница, 14 Января 2022, 23:12 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Много зависит от вида игры, её детализации. В некоторых случаях вообще достаточно текстурку сменить.
Вариант 1 делается, например, так:
Но если бы вариантов экипировки как в TESV, например, много, то тут нужна какая-то система, я думаю, т.к. там тысячи моделей пришлось бы делать. Я думаю, что достаточно сделать одежду, которая чуть больше торса, отсекает всё, что выпирает и подчиняется костям анимации базовой модели. Возможно, кто-то сталкивался с этим, подскажет ниже.
Сообщение отредактировал GameDev2 - Пятница, 14 Января 2022, 23:12 |
|
| |
Deeve | Дата: Суббота, 15 Января 2022, 23:06 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата GameDev2 ( ) Но если бы вариантов экипировки как в TESV, например, много, то тут нужна какая-то система, я думаю, т.к. там тысячи моделей пришлось бы делать. Я думаю, что достаточно сделать одежду, которая чуть больше торса, отсекает всё, что выпирает и подчиняется костям анимации базовой модели. Возможно. кто-то сталкивался с этим, подскажет ниже. Вот это и интересно, ведь движок, по сути, будет обрабатывать и скрытую часть модели.
Ещё один вопрос, допустим, по смене прически или каких-то частей тела, которые должны быть часть модели, сшитой с ней. Как это осуществить? Допустим, разные формы ушей или других частей тел.
|
|
| |
Storm54 | Дата: Воскресенье, 16 Января 2022, 00:12 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Если рассматривать персонажа со скелетной анимацией, то необходимо обозначить вещи, из которых строится конечный анимированный персонаж: 1. Подходящий скелет, обычно какой-нибудь Biped. 2. Заскиненный меш. У такого меша, помимо стандартного набора треугольников, есть привязка этих треугольников к костям скелета и коэффициент влияния движения кости на каждую вершину. 3. Анимация, которая представляет из себя просто набор позиций костей.
В итоге, что мы имеем:
Заскиненный меш "натягивается" на скелет, а кости этого скелета двигаются в соответствии с анимацией.
Каждый элемент одежды и части тела должны быть как раз этими заскиненными мешами, чтобы их можно было использовать вместе со скелетом.
По умолчанию большинство движков позволяют указать только один скелет, один заскиненный меш и стейт-машину для красивого смешивания анимаций. И Unity - не исключение. Можно указать только один заскиненный меш. Поэтому, придется написать велосипед (всего-лишь десяток строк) и собрать один цельный меш из нескольких отдельных, после чего передать получившийся меш в SkinnedMeshRenderer. Количество частей может быть абсолютно любым - это практически никак не повлияет на производительность. Просто руководствуйтесь своими требованиями: если нужно скрывать торс, то сделайте его отдельным мешем, если нужно скрывать руки - тоже. Это может касаться и пальцев, ушей, глаз и т.п. Все-равно в результате будет собран один заскиненный меш, из тех кусочков, которые вам необходимы в данный момент.
Производительность же зависит от количества вершин в финальном меше. Обычно CPU или GPU нужно рассчитать позицию каждой вершины в каждом кадре - это основные затраты производительности.
Еще один момент: Скорее всего каждый элемент одежды и части тела будут иметь свою текстуру и даже материал, например, с уникальным шейдером. В этом случае просто объединить все меши не получится, а придется их предварительно разбить на группы по материалам и уже меши каждой отдельной группы объединять и отрисовывать отдельно, что увеличит количество draw calls пропорционально количеству материалов.
Сообщение отредактировал Storm54 - Воскресенье, 16 Января 2022, 00:24 |
|
| |
drcrack | Дата: Воскресенье, 16 Января 2022, 01:55 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| выше расписано как это делается по-взрослому в АА+ играх но для начинающего разработчика это вряд ли возможно т.к. нужно уметь и кодить и моделлить (включая скиннинг который здесь не совсем тривиальный из-за необходимости ровно стыковать разные части) а кроме уметь делать, нужно еще и иметь кучу времени на всю эту работу более реальный вариант — использовать https://assetstore.unity.com/package....r-35611 или аналог да, это не так круто, но зато оно работает и ты можешь сосредоточиться на игре, а не изобретении велосипедов
|
|
| |
Deeve | Дата: Вторник, 18 Января 2022, 17:19 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Помогите, пожалуйста. Не понимаю что произошло. Редактировал модель в Blender и вот теперь, когда переключаюсь в Edit Mode, все как-будто продублировалось. Все точки не там, где должны быть. При отключении кнопки Shopw Overlays - нормально выглядит, но редактировать невозможно. Добавлено (05 Февраля 2022, 17:35) --------------------------------------------- И ещё один вопрос, что тут случилось? Работаю в Blender.
Это я что-то сделал не так и придется переделывать? В режиме, где не показывает текстуры все ок выглядит.
|
|
| |
|