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