Как сделать рэгдолл в blender

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Физика тряпичной куклы относится к использованию структур скелетной сетки в контексте реалистичных физических движков, позволяющих моделировать такие вещи, как человеческие тела, довольно точно.

У меня есть тряпичная кукла. Я хочу увеличить масштаб этой тряпичной куклы в игровом режиме. Но когда я увеличиваю масштаб, кости тряпичной куклы смешиваются и пускают слюни. Как я могу этого избежать? Похожие изображения ниже. Нормальный масштаб Масштаб 3x.

У меня только что появилась эта идея, и я хотел бы узнать, как реализовать, то, что я хочу сделать, это когда я нажимаю кнопку прицеливания персонажа, а также IK для прицеливания, например, положение руки или то, как он держит оружие, регулируется по голове, ноги или тело NPC и стреляет в него. .

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

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

У меня есть 2d-персонаж (боковая прокрутка) с анимацией бега / холостого хода, и движение тоже отлично работает. также персонаж прикреплен с помощью сценария die / ragdoll, и этот сценарий делает 1- отключить аниматор 2- отключить жесткое тело (для всего персонажа) 3- отключить коллайдер (прямоу.

Я пытаюсь пройти через тряпичную куклу волшебника единства 4, для этого нужны локтевые и коленные суставы, но у двуногого объекта 3dsmax нет колена и локтя, я попытался поставить верхнюю руку как локоть, а верхнюю ногу как колено, но в результате получилась тряпичная кукла скручивает неправильные п.

Этот урок создан с использованием Blender версии 2.48, урок актуален для версии 2.6 * . Здесь находится версия данного урока для версии Blender v2.40
В этом уроке будет рассмотрено создание меха, или очень большого количество относительно коротких волос покрывающих тело. Мы используем для этого частицы и обсудим несколько вопросов:
- Как изменять длину и ширину (толщину) волос?
- Как определить место роста волос?
- Как задать им цвет?
- Как придать эффектность?

Система частиц в Blender очень сложна, чтобы быть раскрытой в одном уроке. Результаты полученные в финале данного урока могут быть достигнуты и другими способами.

Содержание урока:

1. Эмиттер (Emitter).
2. Материал.
2.1. Шейдер волос.
2.2. Придаем волосам основную окраску.
3. Задание длины волос текстурой.
4. Причесываем.
5. Ссылка на финальную сцену.

Эмиттер (emitter) – тот объект, который порождает частицы

• Откройте Blender.
• Удалите куб. (урок создан с применением начальной исходной сценой Blender)
• Добавьте объект UVSphere, для этого нажмите пробел, Add->Mesh-> UVSphere (рис. 1). Это будет наш эмиттер.



• Установите Amount (количество) в 1000.
• Установите Segments (количество сегментов) в 3.
• В Emit from (Испускать из):
o Нажать Random (случайно), Faсes (полигоны).
o Нажать Even, выбрать Random (случайно).

Данные параметры создадут хорошее равномерное распределение волос.
Отрастим сами волосы. Запомните, что волос это путь частицы:
• В Initial Velocity (начальная скорость) установить Set Normal (скорость параллельно нормали полигона) на 0.05, Random (разброс вектора скоростей от параллельности к нормали излучающего полигона) на 0.005.
Здесь нет ничего страшного: волосы растут в направлении полигонных нормалей. Длина и направление немного варьируются (рис. 3).


Тип визуализации на панели Visualization для выбранного типа частиц Hair (волосы) автоматически меняется на Path (путь). Если его сменить пропадут линии изображающие пути частиц (рис. 4).

• Нажмите клавишу Emitter (эмиттер) на панели Visualization, при этом объект, излучающий частицы тоже будет отображаться на финальной картинке.
• Активизируйте Strand Render (рендер волосинок).

Strand Render просчитывает волосы гораздо быстрее, чем обычный рендер. Данный способ поможет при нехватке оперативной памяти. Но ему присущи следующие недостатки:
- Волосы отрендеренные при помощи Strand Render не участвуют в просчете трассировкой луча (raytracing), соответственно их не будет видно в отражениях и от них не будет raytrace-теней. Для выхода из данной ситуации для отражений можно использовать заранее просчитанную карту окружения (environment mapping), и источники света типа Spot (Пятно) с буферными тенями для получения теней от волос.
- Если волосы очень толсты (более чем 1 единица Blender), форма волосинок может быть искажена.



Теперь нужно изменить параметры источника освещения, чтобы получить предварительный рендер (рис. 5).
• Выберите источник света Lamp(лампа).
• Выберите кнопку Lamp buttons (горячая клавиша F5).
• Измените тип лампы на Spot (пятно).
• Измените тип тени на Buf. Shadow (буферная тень)
• Измените тип буферной тени на Classic-Halfway.



Это лучший тип тени, который дает меньше артефактов для Strand Render (по моему скромному мнению). Я вставил две других лампы и использовал классическое трехточечное освещение для предварительного рендера (рис. 6).



В на панели Shading выберите кнопку Material buttons (горячая клавиша F5) здесь можно отрегулировать другие параметры для шерсти:
- ширина и форма волосинок
- используемый тип затенения
- основной цвет
- текстура вдоль волоска
- а также различные другие параметры, такие как длина, плотность или грубость

• Добавьте материал к эмиттеру, нажмите Add new.
• Переименуйте материал в Fur (мех).

Шейдер волос


Исходные параметры показаны на (рис. 7). Подробное объяснение всех параметров настройки дано по ссылке.

• Измените значение End (конец) на 0.25, это сделает волосы более остроконечными.


Примечание:
Параметр Surface Diffuse: с данным параметром можно проще осветить волосы, и я видел много очень хороших примеров меха, использующих этот параметр. Волосы выглядят менее засвеченными, если эта кнопка отжата. Вы сами должны решить, использовать данный параметр или нет, и определиться с этим перед настройкой материала, так как он очень сильно влияет на то, как будут подбираться другие параметры затенения и соответственно выглядеть мех будет по-разному. Вы сами вольны в выборе, посоветовать здесь я ничего не могу.

Придаем волосам основную окраску

Волосы по умолчанию рендерятся того же цвета, с той же текстурой которая установлена для объекта эмиттера. Также можно задавать свой материал для различных систем частиц, примененных к эмиттеру. Далее будет приведен пример использования одной текстуры, как для частиц-волос, так и для поверхности шара-эмиттера.
• Выберите для трехмерного окна в меню View (вид) - Front (фронтальный). Или клавиша с цифрой 1 на цифровой клавиатуре.
• Убедитесь что вид Orthographic (ортографический) в том же меню View.
• Перейдите в режим редактирования сферы, выделите сферу и нажмите клавишу Tab.
• Если выделены не все вершины, нажмите клавишу с буквой A.
• Нажмите клавишу U, чтоб сделать развертку Sphere from view(сферическая из вида). Это очень быстрый и хороший способ получить развертку сферы.

На данном этапе нам не потребуется назначение текстуры определенной развертке. Так как будет использоваться только одна развертка.

• Добавьте текстуру к материалу, назовите ее FurColor.
• Map input (тип ввода карты) установите на UV (расположение UV-развертки).
• Загрузите текстуру изображения. Я использовал фотографию шкуры зебры (рис. 8).


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

Чтобы это сделать нужно:
• Активировать ZTransp (прозрачность).
• Добавить вторую текстуру.
• Выбрать тип расположения на Strand(волосок)
• Включить воздействие на Map To: Alpha(прозрачность) and Spec(степень бликования), DVar=0 (отвечает за то на сколько будет воздействовать карта прозрачности и карта степени бликов)
• В качестве текстуры выберите карту Blend (градиентный переход) типа Linear или Quad
Полученный результат на рис. 9.


Таким способом можно изменять также цвет или другие характеристики вдоль волоса.


Задание длины волос текстурой

Для начала я покажу как использовать отличные материалы для эмиттера и для самих частиц-волос. Потом вы узнаете, как при помощи текстурной карты изменять длину в полу-интерактивном режиме.

Сейчас эмиттер имеет материал с индексом 2.


• При помощи нажатий на клавишу F5 вернитесь на панель Material buttons.
• В Links and Pipeline (связи и пайплайн) нажмите на крестик рядом с названием материала, удалится связь объекта с материалом.
• Добавьте новый материал
• Переименуйте его в Emitter.

В результате вы получили различные материалы для частиц и для объекта-эмиттера. На частицах материал с индексным номером 1 а на эмиттере 2. Теперь вы можете настраивать их независимо.

На предыдущих этапах мы уже сделали текстурную развертку. Теперь мы будем использовать собственноручно нарисованную текстуру для того чтоб задать длину волос.
• Разделите трехмерное окно на 2 части Split Area (рис. 11).


• Измените тип правого окна на UV/Image-Editor
• Выделите сферу и войдите в режим редактирования.
• В UV/Image-Editor выберите в меню Image->New и подтвердите настройки по умолчанию. Это создаст новое изображение которое мы будем редактировать.
• Нажмите на изображении посылки в заголовке окна UV/Image-Editor, подтвердите.


• Перейдите в режим Texture Paint (рисование текстуры).

Теперь вы должны видеть текстуру на объекте.
• Рисуйте прямо на модели (рис. 12).
• Вернитесь назад в объектный режим.
• Нажмите клавишуF5 пока не перейдете в режим редактирования материала.
• Измините активный материал с Emitter на Fur нажмите на стрелку влево там, где написано 2 Mat2 (второй материал из двух).


• Выберите на появившихся кнопках Length (Длина)
• Установите значение DVar=0 при этом все белые области на текстуре будут соответствовать длине волос равной 0.
• Загрузите в качестве текстуры картинку которую мы нарисовали.


Полученные результаты показаны на рисунке 14, все изменения также видно в трехмерном окне.


Есть еще другие способы позволяющие достигнуть такого же результата, например карты веса вершин. Но способ с использованием текстур более прогрессивный и не требует большого количества вершин на объекте.
Следующим этапом будет редактирование частиц

Этим эффектом не нужно пренебрегать. Он поможет вам придать финальной картинке естественность и задать направления роста волос меха.

• Переходим назад на панели редактирования частиц, клавиша F7 несколько раз.
• На панели Set Editable (сделать редактируемой) на панели Particle System
• Смените режим на Particle Mode (Режим частиц).



• Активизируйте Point select mode (выбор точек) для лучшего контроля.
Оба параметра находятся в заголовке трехмерного окна.

• Откройте окно Particle Edit Properties (параметры редактирования частиц) в трехмерном окне нажав клавишу N.
Выберите Comb (Причесать)
Чтоб узнать о других инструментах редактирования посетите ссылку.

P.S. Аналогичную тему создал и на тематическом форуме. Жду советов от бывалых.


Ставишь на персонажа коллизию и делаешь симуляцию ткани.

Ставишь на персонажа коллизию и делаешь симуляцию ткани.

Deleted ( 24.06.19 01:03:26 )
Последнее исправление: Deleted 24.06.19 01:04:24 (всего исправлений: 1)


Мне совсем не хочется заново создавать шмот. Должен быть способ приспособить то, что имеется. Может надо что-то изменить.


Ну так используй, говорю.

гугли cloth rigging blender

Deleted ( 24.06.19 01:13:05 )
Последнее исправление: Deleted 24.06.19 01:15:27 (всего исправлений: 1)

Нет, физика тут не нужна, она будет в движке.


Дело не в том, СКОЛЬКО вершин, а в том, КАК они развесованы на скелет.

Советы корректные, но мне для игры. У движка своя физика. Симулировать в блендере мне не надо.

Одежда должна сидеть на персонаже как часть его, а не расползаться.

Transferring the weights тоже не помогает. Я всё это гуглил, хотя по первой ссылке видос всё же гляну.

Deleted ( 24.06.19 01:19:34 )
Последнее исправление: Deleted 24.06.19 01:25:41 (всего исправлений: 1)

Менять вес в той части меша я уже пробовал, но не помогло, ничего не изменилось вообще. Хотя в обычных случаях развешивание помогает. Но количество вершин тоже имеет значение, т.к. шмот растягивается.

Deleted ( 24.06.19 01:23:34 )
Последнее исправление: Deleted 24.06.19 01:24:40 (всего исправлений: 1)


А объеденить меши?

В общем, ответ по третьей ссылке всё-таки помог добиться нужного результата. Только перед этим удалил старые вершины в Vertex Group.

Осталось немного поработать с весами, но это мелочи.

Всем спасибо за советы.

Deleted ( 24.06.19 01:47:25 )
Последнее исправление: Deleted 24.06.19 01:52:28 (всего исправлений: 2)

Рад, если нашел полезное.

А ты можешь теперь мне чуть пояснить? Я плохо шарю в ригах. Как движения костей и тела передаются на одежду чтобы ничего не вылезало в движке игры?

Вот это. В реальных играх одежда это просто другая моделька тела.


А что за игра? Результат можно глянуть в видосике или гифке? =)

Они наобещали как минимум GTA SA+deusEX+Dishonored в одном флаконе.

Насколько я понял, модификатор data-transfer переносит свойства меша персонажа (тело) на меш шмота (т.е. его вершины). И при анимации шмот ведет себя в соответствии с телом, т.е. трансформируется аналогично телу. Небольшие провалы в шмоте исправляют с помощью весовой покраски (Weight Paint).

В движках имеется своя физика и я не уверен, что физические свойства импортированной из блендера модельки правильно применятся. Всё-таки инструменты разные, и наверняка физику тела придется настраивать отдельно в движке.

Увы, пока еще слишком рано показывать что-то, ассеты не готовы, движок окончательно не определен. На выбор у меня есть Panda3D или Unity, и еще надо изучить особенности и возможности обоих движков. UE4, к сожалению, в моей генте не собрался.

Сюжет не доработан, хотя, он скорее всего будет условный, т.к. я не уверен, что потяну создание RPG. Диалоговая система тоже обдумывается, т.к. у меня нет актеров озвучки. Все эти вопросы надо продумать.

Deleted ( 24.06.19 13:57:43 )
Последнее исправление: Deleted 24.06.19 14:01:44 (всего исправлений: 2)


В целом, это моя первая попытка, так что я не питаю особого оптимизма.

Ты не питай надежд, а вот оптимизм питай =) Делай в каеф, с похерестическим отношением к результату, ну не к результату самоёй игры а к тому что выстрелит.

Я в 2016 Карл! решил сделать игру и мне понравился Corange я тупо воообще ничего не понимал в движке, а он не дописан шо пи*да, целиком на С и на каждый чих надо лезть в потроха. Всё это время одновременно с продумыванием игры я под неё (под игровые идеи) пилю форк и по возможности бекпортирую полезности в Corange. =) Это всё жутко сложно для меня glsl, ручной закат солнца на Си как говорится, но также это всё жутко интересно.

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

Короче быстрее выбирай двиг и в бой на эксперименты! А ещё важно недостатки делать достоинствами, я вот знаю что более 1500 частиц я не могу позволить заспавнится и всё я теперь это ограничение закладываю в механику что есть на них я не буду делать масштабные вещи, а всякие мелочи.

Ну как бы вот, успехов. =)

UE4, к сожалению, в моей генте не собрался

А соберется ли Visual Studio для Unity в Gentoo? Ты бы винду поставил, я конечно не геймдевелопер, но чет мне кажется тут стоит накатить.

Ну зачем сразу VS. Я и в виме могу. К тому же нормальное IDE можно найти.

Хотя Unity мне не особо нравился из-за ограничений в бесплатной версии, лицензии, да и редактор неудобный. А проект на базе Panda3D пилится в PyCharm.

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

Corange примитивный и забагованный, там нету не сложности, не возможностей %) Не знаю как с Panda3D, мне кажется там тоже все не сладко. Пробуй конечно, главное не мазохистируй!

У Panda3D редактора вроде нету даже

Потому и выбрал :)

Panda3D ориентирован на ПК и использует OGL (с DX под Windows какие-то проблемы, вроде бы были).

Godot ориентирован на мобильщину и использует OGL ES.

Меня интересует только ПК в связке с линуксом, поэтому выбор очевиден.

Godot ориентирован на мобильщину и использует OGL ES.

Там на выбор, ES для мобилок и веба, и нормальный GL для всего остального.

А де уровни редактировать будешь?

Не взлетит, нужна кроссплатформа. Желательно с поддержкой телефонов, внезапно оказалось что многие игры на порядок удобней играть на телефоне.

Основная потенциальная аудитория на виндоус (и андроиде, линукс как дополнение), не стоит это забывать.

Создание уровней в блендере, экспорт в .egg в движок, а там уже кодом можно всё скомпоновать.

Не хочется брать монстроуозные движки типа Unity или UE4, у меня железо не топовое, не потянет их.

А ещё говорят с линуксом очень много проблем, если вам для души, лучше брать что-то готовое вместо сырых и кривых недоделок.

Маркетолух ты мой :)

Обожди, это не для коммерции, эта игра пилится просто для себя, джаст фор фан. Если она будет, конечно.

Для продажи у меня силенок не хватит в одиночку поддерживать билды для мобилок и маздая. Да и вообще не тот уровень графона и физики будет. Совсем не тот.

Deleted ( 24.06.19 18:13:55 )
Последнее исправление: Deleted 24.06.19 18:15:41 (всего исправлений: 1)

Да, таких полно на itch.io. Вполне ничего, но лучше всего когда они прямо в браузере запускаются, а значит какой-нибудь unity-webplayer (его там закопали вроде?) который будет работать на любой платформе. И главное не затягивать, полчаса максимум. Тогда людям понравится.

А ещё говорят с линуксом очень много проблем,

Ну еще бы, ведь проект для массы надо отлаживать и фиксить баги. А в мое поделие буду играть только я сам на своем i7 3770/1050Ti :)


Я сделал русский перевод видеоурока этого чувака. В первой части очень хорошо объясняется, как делать волосы из кривых.



Включение бевельного объекта для кривой Путь в табе Геометрия в Свойствах Кривых.


Материал

Вторая часть видеоурока на любителя. Это схемы материала чувака: A, B

Я пробовал, терпения не хватило. Сильно долго. Этот вопрос скорее теоретический, чем практически применимый. Сайклз вообще медленный сам по себе.

Но я сделал нечто подобное для рендерера Блендер. Идея заключается в том, чтоб вдоль волосяных кусков пустить борозды из нормала, а кончики сделать прозрачными.

1

2

3

4

5

6

1

Material Nodes
2

Composition Nodes



Oписание

В рендерере Блендер узловой материал не работает прямо на кривых. Почему-то UV геометрия на кривые не ложится, хотя и активирована в табе Текстурное пространство в Свойствах Кривых. Наверное, она только в Сайклз работает. Потому волосы я перевел в мэш, уменьшив разрешение Preview U на волосах до 2, а на бевеле до 6, чтоб комп сильно не тормозил. Ниже вы найдете подробное описание, как конвертировать кривые в полисетку. Потом, чтоб волоса стали поглаже, на мэш я поставил модификатор Subdivision Surface.


Потом я подключил узловой материал к этим волосам.


Для волос я сделал отдельный слой визуализации, а слой, где голова, включил как z-маскировочный, чтоб изнанка волос за головой не ренделась.


Потом в Свойствах Визуализация я включил Затенение: Альфа: С прозрачностью.


А потом с узлами композитинга я прорендил картинку.

1
2
3


Конвертирование кривых в полисетку


Бевел может быть любой формы. Но если это кольцо, то после перевода кривой в мэш, труба должна быть разомкнута, а то волосы не получатся.

Я в качестве бевела использую окружность NURBS, а не безье, как на видео выше. Можно использовать любую кривую.



Nurbs Curve as Bevel



Path as a hair strand



Path + Bevel

Перед конвертированием надо уменьшить Resolution: Preview U на бевеле и, возможно, на волосах. Если оно сильно большое компьютер может зависнуть.


Path в мэш переводится комбинацией Alt-C.


Конвертирование полисетки в систему частиц


Сначала надо сделать швы на поперечных реберных петлях. Волосы будут расти поперек них и повдоль продольных реберных петель.

В Object Mode в разделе Particles в табе HairNet включи Emit Hair on Itself и нажми Add Hair From Sheets.


Если растить волосы на отдельном эмиттере, как на видео выше, то сначала надо применить положение, вращение и масштаб для волос и эмитера комбинацией Alt-A. Иначе волосы разлетятся. Так же я заметил, что на одном эмитере системы больше двух ведут себя непредсказуемо. Волосы третьей и последующих систем выгибаются под немыслимыми углами.

Переключись в Particle Mode. Кликни по волосам.

Кликать обязательно, чтоб система частиц стала нередактируемая, а волосы не разлетелись в разные стороны.

Еще помогает стереть дубликаты: A > W > Remove Doubles.

В Свойствах Particles поставь


Tab

Option

Value
Children Display 1
Children Render 3
Children Radius 0.01
Children Roundness 0
Render Strand Render OFF
Render Bi-Spline ON
Render Steps 6
Roughness Uniform 0.2
Roughness Size 1
Roughness Endpoint 0.5
Roughness Shape 10
Roughness Random 1
Roughness Size 10

Radius желательно ставить низкий. Так натуральней выглядит. Radius - это расстояние на которое дети Simple расползаются от родителя. Для разных прядей можно ставить разный радиус.

По желанию еще можно экспериментировать с Kink, но это не обязательно.


Если волоса получатся толстые и бугристые, то картинку надо прорендить на большее разрешение - чем больше, тем лучше - а потом уменьшить ее в GIMP.


Axis
Value
Y 600
X 800
Size 200%



Axis
Value
X 800
Y 600
Size 800%

Но сначала старайся уменьшить толщину волос в Material > Strand, поставив Blender Units.


Чтоб спрятать эмитер поставь Bounds в Maximum Draw Type. Для анимации прикрепи его к черепу Ctrl-P.


Так же в лампе сделай тень более мягкой, а то будет черточками, как от проволоки.





Мягкая тень от волос

Читайте также: