¿Cuál sería un buen filtro para crear 'deformadores magnéticos' a partir de un mapa de profundidad?

10

En mi proyecto, estoy creando un sistema para deformar una malla (vestimenta) altamente detallada para que 'se ajuste' a una malla convexa. Para hacer esto, uso mapas de profundidad del artículo y el 'casco' para determinar en qué punto del espacio mundial se produce la desviación y la extensión.

Simplemente transformar todos los vértices ocluidos a las profundidades definidas por el 'casco' es bastante efectivo y tiene un buen rendimiento, pero sufre el problema de no preservar las características de la malla y requiere un sacrificio exhaustivo para evitar falsos positivos.

En cambio, me gustaría generar a partir del mapa de desviación de profundidad un conjunto de 'deformadores' simples que 'empujarán' * todos los vértices de la malla deformada hacia afuera (en el espacio mundial). De esta forma, se conservan todas las características de la malla y no hay necesidad de tener heurísticas complejas para eliminar vértices inapropiados.

Sin embargo, no estoy seguro de cómo generar este conjunto deformador. Me estoy imaginando algo así como un algoritmo que intenta hacer coincidir una superficie esférica con cada parche de desviaciones contiguas dentro de un cierto rango, pero no sé por dónde empezar a hacer esto.

¿Alguien puede sugerir un filtro o algoritmo adecuado para generar deformadores? ¿O para decirlo de otra manera "comprimiendo" un mapa de profundidad?

(* Empuje porque se ajusta a un humanoide 'abultado' convexo, por lo que es probable que las transformaciones sean 'esféricas' desde el punto de vista de la superficie).

Editar: Aquí hay una imagen / diagrama correctamente sugerido que ilustra lo que estoy tratando de lograr.

Además, debo decir que desde que se publicó esta pregunta, trabajé mucho más en este problema, y ​​aunque nunca resolví cómo obtener los deformadores, finalmente decidí que los mapas de profundidad para esto no eran adecuados como:

  1. Si la malla deformada no está completa, es posible obtener texels en el mapa que están destinados al otro lado de la malla convexa (porque no están oscurecidos por los que están más cerca de la cámara en el lado correcto).
  2. La eficiencia no fue tan alta como esperaba debido al hecho de que se necesitaban 6 mapas por deformación.

No es que no se puedan resolver, pero la otra solución, que incluía pruebas de colisión en núcleos que se ejecutan en la GPU, dio como resultado resultados de mayor calidad y fue mucho más simple, aunque puede que no sea tan rápido.

Sin embargo, todavía creo que este problema de preguntas es interesante y estaría interesado en cualquier respuesta, ya que estoy seguro de que hay situaciones en las que sería preferible.

ingrese la descripción de la imagen aquí

sebf
fuente
¿Podría insertar una imagen o dibujo del efecto que desea lograr? Sería más fácil entender tu problema.
wip
Secundando un comentario hecho a continuación, una imagen o dibujo puede ayudar mucho. Hay muchas formas de simular cómo la ropa envuelve las partes del cuerpo y tal vez su idea de "deformadores" es solo una de las varias que podrían aplicarse.
sam hocevar
¿Qué hay de malo en mover toda la forma?
Ali1S232
Gajoo, imagina que la forma envuelta alrededor de la malla, moviéndola en una dirección, provocaría que solo se cruzara más con la forma en el otro lado, aunque de hecho eso es lo que están haciendo los deformadores, solo pequeños trozos de la forma a la vez.
sebf
SamHocevar, esta pregunta se refería solo a la adaptación: tienes una malla que es un poco más pequeña que el personaje que debe ajustarse, por lo que la malla se ajusta en consecuencia. La implementación del campo de profundidad se eligió por razones de rendimiento, se eligieron los deformadores debido a que se acerca a la capacidad de preservación de características.
sebf

Respuestas:

2

Tiene un mapa de profundidad, que supongo que es simplemente la distancia entre la malla convexa A y la malla deformada neutral B, y tiene normales de superficie de malla A.

Lo que falta son los pesos (o agrupaciones) de cómo cada vert en la malla B afecta a sus vecinos. Por ejemplo, cuando se mueve el vert central, también debe arrastrar a lo largo de sus verts vecinos en cierta cantidad (porcentaje) si están en el mismo grupo.

Si tiene un grupo de verts que se afectan entre sí al 100%, todos terminarán expulsados ​​por la cantidad más lejana de su mapa de profundidad como si fueran parte de una estructura de acero que no se puede doblar que se mueve como una unidad, establezca al 50% esta estructura puede actuar más como láminas de goma gruesas y 10% como envoltura plástica que se ajusta a la forma porque cada vert apenas afecta a su vecino (que es lo que tiene ahora.

Obviamente hay una combinación y fusión de valores. Como dijo @Gajoo, "¿qué hay de malo en mover toda la forma?"

Patrick Hughes
fuente