Pull to refresh

Comments 6

По np-задаче выпуклого разбиения 3д-мешей имеет смысл что-то искать? Или "специально обученный человек" ® дешевле всегда?

Если ты про эту задачу codesuppository.blogspot.com/2011/05/hacd-hierarchical-approximate-convex.html я находил только частные случаи или разные реализации HACD. В целом зависит от требований, но если писать с нуля — «обученный человек» дешевле и лучше сделает, если не продавать само такое решение. Мало кому это надо в промышленных масштабах
спасибо, хоть понял немного, как новичок в юньке — информация важна, буду отслеживать)
Спасибо за статью. Пробовал для триангуляции Triangle.NET и poly2Tri — последняя библиотека понравилась больше,
особенно в союзе с clipper (использовал для реализации динамического 2D навигационного меша).
Избавление от double это правильно (тот же recastnavigation, который использует Unity3D, довольстуется float),
но в некоторых случаях недостаточно — лучше полностью переходить на целые числа (как в AStarProject к примеру,
где многие функции используют перегрузку с Vector2/Vector3 на Int2/Int3),
особенно если код будет работать не только на клиенте.
Poly2Tri сильно слабее, и он генерит не очень хорошие сетки. Но он прям заточен под Unity, в отличии от Triangle.Net. Я использовал Poly2Tri в этом проекте — для такого норм. В целом зависит от конкретной задачи + лицензии тоже важны. Poly2Tri кажется под MSPL, а Triangle.Net — MIT. И MIT даёт больше возможностей по использованию.

У меня сейчас есть идея поиграться с FEM (метод конечных элементов) в Unity, а для этого лучше иметь Delanay Refinement алгоритмы под рукой.

Между этими двумя либами основная разница, что Poly2Tri сильно проще, но Triangle.Net в разы мощнее и позволяет решать большее число задач, так как судя по сетке Poly2Tri, у него под капотом Ear Clipping with Holes.
Согласен с Вами. Poly2Tri намного проще, собственно поэтому и использовал — мне было важно полностью понимать каждое действие — читал статьи + смотрел готовые реализации. По сути использовал связку Poly2Tri c Clipper в качестве «прототипа», потом все переписывал — в целом эта связка делала ту часть работы, которая нужна для построения динамического nav mesh, в основном первые этапы.

По поводу построения сетки — там на самом деле много было проблем из-за float, переписывание на интах сильно помогает, особенно когда речь идет не просто о построении, а о последующем применении рейкаста к этой сетки (например движение персонажа, управляемого игроком при помощи джостика — в RTS с этим проще, там во многом достаточно pathfinding применить)
Sign up to leave a comment.

Articles