Коллизия колеса с поверхностью земли - Houdini

Вступление и дискламер


Всем привет. Меня зовут Евгений, в данный момент я нахожусь на позиции CG Artist-а в студии PLAYD. С недавних пор я выбрал в качестве основного инструмента в своем пайплайне Гудини. И решил завести тут небольшой блог с описанием решений некоторых повседневных задач из своих проектов. Во многом для себя, но может и другие найдут это интересным.

Опыта в подобных туторах у меня немного. Так что если что пишите ваши предложения ЛС.

Задача:

Осуществить коллизию колеса с поверхностью земли.

Проще говоря что бы наше колесо реагировало на неровности поверхности по которой перемещается.


Решение (алгоритм тут получился не сложный):
1. Высчитать точку в центре колеса.
2. Посчитать дистанцию от этой точки до поверхности.
3. Сместить точку на эту величину вниз.
4. Скорректировать положение точки вверх на величину радиуса колеса.

Как это выглядит в Гудини:

Имеем меш колеса и неровную поверхность

  1. Пакуем колесо в пакед и тем самым получаем точку в середине.
  2. Чтобы посчитать дистанцию до поверхности на точку сперва нужно добавить нормаль направленную на поверхность. Сделать это можно нодой Point.
  3. Теперь можно посчитать дистанцию до земли нодой Ray. По большому счету нода Ray сразу и сместит точку на поверхность. Это нам как раз и надо. Но если вдруг нет, или нам перед смещением нужно сделать какие то действия то можно отключить галку с Transform Points оставив только на Point Intersection Distance.
  4. Ну теперь нам надо только поднять колесо на высоту его радиуса. Используем функцию Bounding Box по Y ( http://www.sidefx.com/docs/houdini15.0/ref/expression_cookbook)



Перемещать колесо или землю под ним естественно нужно перед заходом в ноду Ray.

На этом пока все, тема для меня интересная так что с радостью подискутирую в комментариях.



617 0 850 7
2
2016-04-28
Толковый материал, спасибо. RENDER.RU поддержит ваш пост в наших группах в соц.сетях, это более 28 000 подписчиков.
2016-04-28
Круто! спасибо.
RENDER.RU