Колайдер для генерируемого меша.

Физика в Unity

Колайдер для генерируемого меша.

Сообщение DarkMaster 18 июл 2012, 11:55

Уважаемы знатоки помогите решить следующий задачу:

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

Что я пробовал:
1. Я пробовал использовать MeshColider - все хорошо и точно определяет, но постоянное пересоздание этого коллайдера дает фризы и зависания, особенно на сложных мешах и сложных сценах где много одновременных динамических изменений мешей.
2. Пробовал написать собственную обработку столкновений с мешем. Я определял принадлежность точек одного меша треугольникам другого. И это тормозило.

Вопрос:
Как быть в такой ситуации ? Помогите советом, поделитесь опытом или возможно есть какое то стороннее решении физики для юнити ?.
DarkMaster
UNец
 
Сообщения: 8
Зарегистрирован: 08 фев 2010, 14:43

Re: Колайдер для генерируемого меша.

Сообщение bojlahg 18 июл 2012, 12:54

по п1. Зачем MeshCollider пересодавать? Вроде нужно только апдейтить sharedMesh.
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Колайдер для генерируемого меша.

Сообщение DarkMaster 18 июл 2012, 12:58

bojlahg писал(а):по п1. Зачем MeshCollider пересодавать? Вроде нужно только апдейтить sharedMesh.


Я так и делаю. Именно процесс замены меша у МешКолайдера и вызывает тормоза и фризы. Я точно не знаю что происходит в этот момент, но эта операция видимо тяжеловесна для Физикса.
DarkMaster
UNец
 
Сообщения: 8
Зарегистрирован: 08 фев 2010, 14:43

Re: Колайдер для генерируемого меша.

Сообщение Kann 18 июл 2012, 19:49

DarkMaster писал(а): дает фризы и зависания, особенно на сложных мешах и сложных сценах где много одновременных динамических изменений мешей.
2. Пробовал написать собственную обработку столкновений с мешем. Я определял принадлежность точек одного меша треугольникам другого. И это тормозило.

тут и ежу понятно что будет тормозить, не кто так не делает, а если и делает, то пишут узкозаточенную физику и делают сильную оптимизацию кода, по большей части на асме, обычно решение состоит в том, что бы пользовать предрасчетное изменение коллайдеров, как например сделанно разрушение в UDK с помощью того же physX и расширения Apex, либо юзают для меш колайдера сильно упрощенную геометрию, юнити для такого слабо подходит....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Колайдер для генерируемого меша.

Сообщение DarkMaster 19 июл 2012, 12:12

Kann писал(а):тут и ежу понятно что будет тормозить, не кто так не делает, а если и делает, то пишут узкозаточенную физику и делают сильную оптимизацию кода, по большей части на асме, обычно решение состоит в том, что бы пользовать предрасчетное изменение коллайдеров, как например сделанно разрушение в UDK с помощью того же physX и расширения Apex, либо юзают для меш колайдера сильно упрощенную геометрию, юнити для такого слабо подходит....


Ну это просто замечательно *))) Ну а по делу ? Как решить задачу конкретно в рамках Юнити ?
DarkMaster
UNец
 
Сообщения: 8
Зарегистрирован: 08 фев 2010, 14:43

Re: Колайдер для генерируемого меша.

Сообщение Nicloay 19 июл 2012, 12:27

Где то была демка по плагину для модификации мешей, дак вот там была поверхность по которой гуляли волны и там вроде всякие предметы с физикой работали. - никаких томрозов там вроде не было, поэтому мне кажется было бы правильней по профайлить какая часть программы отбирает больше времени может таймстампами, если не про.
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Колайдер для генерируемого меша.

Сообщение DarkMaster 19 июл 2012, 14:50

Nicloay писал(а):Где то была демка по плагину для модификации мешей, дак вот там была поверхность по которой гуляли волны и там вроде всякие предметы с физикой работали. - никаких томрозов там вроде не было, поэтому мне кажется было бы правильней по профайлить какая часть программы отбирает больше времени может таймстампами, если не про.


Суть в том что в примере о кортом вы говорите демонстрирует эффект "воды", по сути он двигает вершины меша, не перестраивая его структуру. В моей задаче происходит именно изменения структуры меша, то есть удаление или добавление вертексов и треугольников и в этом случае требуется обновить меш у МешКолайдера, что и приводит к фризам.
DarkMaster
UNец
 
Сообщения: 8
Зарегистрирован: 08 фев 2010, 14:43

Re: Колайдер для генерируемого меша.

Сообщение Kann 19 июл 2012, 20:08

DarkMaster писал(а):Ну это просто замечательно *))) Ну а по делу ? Как решить задачу конкретно в рамках Юнити ?

а хз, ройте в сторону вокселей, такое готовое решение по моему есть только в CryEngine
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Колайдер для генерируемого меша.

Сообщение Nicloay 20 июл 2012, 10:48

а на сколько координально изменение меша? - может можно сделать свертывающуюся систему типа все меши стандартно 100 треугольников, ненужные свернуты внутрь объекта, ну либо имеют толщину 0 пиксеелей, ну и вытягивать тогда когда нужно. тогда не нужно будет создавать новых массивов и делать пересчеты нормалей и т.п. (для текстур)
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Колайдер для генерируемого меша.

Сообщение IDoNotExist 20 июл 2012, 11:47

Kann писал(а):а хз, ройте в сторону вокселей, такое готовое решение по моему есть только в CryEngine

Да вы чо!


http://forum.unity3d.com/threads/94224-Introducing-Voxelform-voxel-terrain-%28Marching-Cubes%29-with-real-time-deformation.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Колайдер для генерируемого меша.

Сообщение DarkMaster 20 июл 2012, 14:14

Nicloay писал(а):а на сколько координально изменение меша? - может можно сделать свертывающуюся систему типа все меши стандартно 100 треугольников, ненужные свернуты внутрь объекта, ну либо имеют толщину 0 пиксеелей, ну и вытягивать тогда когда нужно. тогда не нужно будет создавать новых массивов и делать пересчеты нормалей и т.п. (для текстур)


Ну очень объемные. Проект в стиле Minecraft. У нас меш - это массив кубиков. То есть сам меш строиться по массиву кубиков и только те грани которые реально видны, ну и добавление удаление в реальном времени и т.д.

Я тут прошелся еще раз по тестам и вот что выяснил для себя MeshColder.sharedMesh - это ведь ссылка на объект типа Mesh. Раньше я удалял старый меш, потом генерировал на основе карты кубиков новый меш и приравнивал к MeshColder.sharedMesh полученный после генерации меш. Ну и получал провисание. Я попробовал работать с вершинами не удаляя старый меш - а в рамках текущего, и провисания пропали, что логично так как я модифицировал уже существующий объект не переиздавая его и не производя новой привязки колайдер к этому новому мешу. Надо более детально все про тестировать. Проведу тесты отпишу о результатах.
DarkMaster
UNец
 
Сообщения: 8
Зарегистрирован: 08 фев 2010, 14:43

Re: Колайдер для генерируемого меша.

Сообщение ArtUni3d 13 авг 2012, 15:50

Омг, опять копатель, так бы сразу и сказали )
Где-то на оф. форуме видел Minecraft Starter Kit или что-то такое, возьмите и не мучайтесь)
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12


Вернуться в PhysX

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

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