Хорошая, годная деформация объектов

Физика в Unity

Хорошая, годная деформация объектов

Сообщение 4ufak 30 мар 2011, 15:17

Хотелось бы сделать красиво деформирующийся объект.

В одной из демок PhysX видел превосходные вмятины на листе металла - как результат работы кошерно настроенного обработчика тканей. Сколько не пытался повторить это в Unity3D - ничего не вышло, максимально возможная упругость слишком мала. Раз так, могу сделать и сам.

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

Но тут есть один сильный недостаток. Повреждения будут, спору нет. Только вот объект сразу же отскочит. А, по идее, должен продолжать напирать, деформируясь все больше и больше.

Как я вижу решение - отметить у Collider'а свойство isTrigger. И обрабатывать OnTriggerEnter. А у него перед OnCollisionEnter есть большой недостаток. Он не знает ни точек контакта, ни силы. Оно и понятно. Он не для этого делался.

Короче, вопросы:
- Есть ли способ настроить InteractiveCloth, чтобы объект вел себя как лист металла?
- Можно ли заставить твердотелый объект не терять скорость и не менять траектории при ударе и при этом получать OnCollisionEnter? Я бы потом отпихнул его скриптом.
- Можно ли получить Collision из OnTriggerEnter?
- Можно ли проверить, пересекаются ли два коллидера, и если пересекаются, то где?
Аватара пользователя
4ufak
UNец
 
Сообщения: 39
Зарегистрирован: 23 мар 2011, 18:50
Откуда: Россия, Москва
  • ICQ

Re: Хорошая, годная деформация объектов

Сообщение Zaicheg 30 мар 2011, 15:32

Вы можете отлавливать OnCollisionEnter, прекращать в этот момент физическое поведение (Rigidbody.isKinematic должно хвтатить) объекта и двигать его вручную.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Хорошая, годная деформация объектов

Сообщение 4ufak 30 мар 2011, 16:01

Спасибо за идею, то что нужно.

А если у коллидера выставлять isTrigger = true? Вроде тоже должно подойти, причем физика не будет отключена.
Аватара пользователя
4ufak
UNец
 
Сообщения: 39
Зарегистрирован: 23 мар 2011, 18:50
Откуда: Россия, Москва
  • ICQ

Re: Хорошая, годная деформация объектов

Сообщение Zaicheg 30 мар 2011, 16:29

Попробуйте. Просто тело может успеть получить импульс от столкновения и начать движение в соответствие с ним (isTrigger движению не помешает).
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Хорошая, годная деформация объектов

Сообщение 4ufak 30 мар 2011, 19:23

Так. Я правильно понял - деформировать Mesh Collider в реалтайме нельзя?

Например, так:
Синтаксис:
Используется csharp
Vector3 <img src="./images/smilies/unmarked.gif" alt="[]" title="Запланировано" /> verts = col.sharedMesh.vertices;
for (int i = 0; i < verts.Length; ++ i){
        verts[i].y += 10;
}
colider.sharedMesh.vertices = verts;
colider.sharedMesh.RecalculateBounds();


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

У меня есть подозрение, что она меняется сразу, но при этом это изменение на обнаружение столкновений не влияет. И, кроме того, изменение этой сетки сохраняется. Странно.
Аватара пользователя
4ufak
UNец
 
Сообщения: 39
Зарегистрирован: 23 мар 2011, 18:50
Откуда: Россия, Москва
  • ICQ

Re: Хорошая, годная деформация объектов

Сообщение gnoblin 30 мар 2011, 19:58

изменение сетки сохраняется т.к. вы редактируете исходный ассет, а не его копию в сцене
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Хорошая, годная деформация объектов

Сообщение DiXel 28 май 2011, 15:13

Я эту демку тоже видел, но это вроде другая технология, не cloth.
Я вот думаю: если кто возьмётся делать эту всю деформацию сам, может было бы полезно сделать, чтобы деформация сохранялась в файл и при перезапуске игры\сцены объект был деформирован
P.S.: Технология называется Metal Cloth. А тема эта уже поднималась. Там, на следующей странице вестки.
Вот ещё оттуда цитата:
jonas echterhoff said on September 7th, 2010 at 7:10 pm:

we will not support the metal cloth functionality in PhysX for Unity 3.0. In summary, we did not find the feature to be developed enough yet to meet our user’s expectations so we chose to leave it out instead.
Skype: dixellitum
Mail: _the.dixx@yandex.ru
DiXel
UNIверсал
 
Сообщения: 396
Зарегистрирован: 27 май 2011, 07:19


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1