Каким будет хороший фильтр для создания «магнитных деформеров» из карты глубины?


10

В моем проекте я создаю систему для деформации высокодетализированной сетки (одежды), чтобы она «вписывалась» в выпуклую сетку. Для этого я использую карты глубины предмета и «корпуса», чтобы определить, в какой точке мирового пространства происходит отклонение и степень.

Простое преобразование всех окклюзированных вершин в глубины, как это определено в «оболочке», является довольно эффективным и имеет хорошую производительность, но оно сталкивается с проблемой не сохранения особенностей сетки и требует обширного отбраковки, чтобы избежать ложноположительных результатов.

Вместо этого я хотел бы сгенерировать из карты отклонения глубины набор простых «деформаторов», которые «вытолкнут» * все вершины деформированной сетки наружу (в мировом пространстве). Таким образом, все особенности сетки сохраняются, и нет необходимости иметь сложную эвристику для отбраковки неподходящих вершин.

Однако я не уверен, как создать этот набор деформеров. Я представляю что-то вроде алгоритма, который пытается сопоставить сферическую поверхность каждому участку непрерывных отклонений в определенном диапазоне, но не знаю, с чего начать.

Кто-нибудь может предложить подходящий фильтр или алгоритм генерации деформеров? Или, другими словами, «сжатие» карты глубины?

(* Толчок, потому что его прилегание к выпуклому «выпуклому» гуманоиду, так что трансформации, вероятно, будут «сферическими» от POV поверхности.)

Изменить: Вот изображение / схема, правильно предложенная, которая иллюстрирует то, что я пытаюсь достичь.

Кроме того, я должен сказать, что поскольку этот вопрос был опубликован, я много работал над этой проблемой, и хотя я так и не решил, как получить деформаторы, я в итоге решил, что карты глубины для этого не подходят, так как:

  1. Если деформированная сетка не завершена, на карте можно получить тексели, которые должны быть на другой стороне выпуклой сетки (потому что они не скрыты теми, кто ближе к камере на правильной стороне).
  2. Эффективность была не такой высокой, как я надеялся, из-за того, что для деформации требовалось 6 карт.

Не то чтобы они были неразрешимыми, но другое решение, которое включало тестирование коллизий в ядрах, работающих на графическом процессоре, привело к получению более качественных результатов и было намного проще, хотя и не так быстро.

Я все еще думаю, что эта проблема вопросов интересна и будет заинтересована любыми ответами, поскольку я уверен, что есть ситуации, где это было бы предпочтительно.

введите описание изображения здесь


Не могли бы вы вставить изображение или рисунок того эффекта, которого вы хотите достичь? Было бы легче понять вашу проблему.
протрите

После комментария, сделанного ниже, картинка или рисунок могут очень помочь. Есть много способов смоделировать, как одежда обволакивает части тела, и, возможно, ваша идея «деформаторов» - это только один из нескольких подходящих вариантов.
Сэм Хоцевар

что не так с перемещением всей фигуры?
Ali1S232

Gajoo, представьте, что если форма, обернутая вокруг сетки, смещая ее в одном направлении, заставит ее еще больше пересекать форму на другой стороне - хотя на самом деле именно это и делают деформаторы, только маленькие кусочки формы за раз.
2013 года

SamHocevar, этот вопрос был только об аппроксимации - у вас есть сетка, которая немного меньше символа, который он должен соответствовать, поэтому сетка корректируется соответствующим образом. Внедрение глубинного поля было выбрано по соображениям производительности, деформаторы были выбраны из-за того, что приближает способность к сохранению характеристик.
2013 года

Ответы:


2

У вас есть карта глубины, которая, как я предполагаю, представляет собой просто расстояние между выпуклой сеткой A и нейтральной деформированной сеткой B, и у вас есть поверхностные нормали сетки A.

Вам не хватает весов (или группировок) того, как каждый вершина на сетке B влияет на своих соседей. Например, когда центральный вертик перемещается, он также должен перетаскивать соседние вершины на некоторое количество (в процентах), если они находятся в одной группе.

Если у вас есть группа вершин, которые на 100% влияют друг на друга, все они будут вытеснены на наибольшее количество от вашей карты глубины, как если бы они были частью несгибаемой стальной конструкции, которая движется как единое целое, установите для этой структуры 50%. может больше походить на толстые резиновые листы и на 10% - на пластиковую обертку в форме, потому что каждый вертолет почти не влияет на соседа (то, что у вас есть сейчас).

Очевидно, что происходит некоторое смешение и слияние ценностей. Как @Gajoo сказал, "что не так с перемещением всей формы?"

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.