geometry - cinema - uv mapping software
Cómo asignar un punto a una cuadrícula deformada (4)
Comprendí que tienes correspondencia uno a uno entre los puntos de la cuadrícula envueltos y no envueltos. Y asumo que la deformación no es tan extrema que podría tener líneas de cuadrícula que se cruzan (como la imagen que muestra).
La estrategia es exactamente lo que sugiere Jacob: Triangular las dos cuadrículas de modo que haya una correspondencia uno a uno entre triángulos, ubicar el punto a mapear en la triangulación y luego usar coordenadas baricéntricas en el triángulo correspondiente para calcular la nueva ubicación del punto .
Preproceso
- Genere la triangulación de Delaunay de los puntos de la cuadrícula envuelta, llamémosla
WT
. - Para cada triángulo en
WT
agregue un triángulo entre los vértices correspondientes en la cuadrícula no envuelta. Esto da una triangulaciónUWT
de los puntos desenvueltos.
Asigne un punto p
a la cuadrícula envuelta
- Encuentra el triángulo
T(p1,p2,p3)
en elUWT
que contienep
. - Calcule las coordenadas baricéntricas
(b1,b2,b3)
dep
enT(p1,p2,p3)
- Deje
Tw(q1,q2,q3)
sea el triángulo enWT
correspondiente aT(p1,p2,p3)
. La nueva posición es
b1 * q1 + b2 * q2 + b3 * q3
.
Observaciones Esto proporciona una función de deformación como una spline lineal . Para un comportamiento más suave, se podría usar la misma triangulación pero realizar una aproximación de orden superior que llevaría a un cálculo un poco más complicado en lugar de las coordenadas baricéntricas.
Supongamos que tiene una colección de puntos con coordenadas en un sistema de coordenadas cartesianas.
Desea trazar otro punto y conoce sus coordenadas en el mismo sistema de coordenadas cartesianas.
Sin embargo, la trama que está dibujando está distorsionada con respecto al original. Imagine tomar el avión original, imprimirlo en una lámina de goma, estirarlo en algunos lugares y pellizcarlo en otros, de forma asimétrica (sin superposición ni nada complejo).
( fuente )
Conoces las coordenadas estiradas y no estiradas de cada uno de tus conjuntos de puntos, pero no la función de estiramiento subyacente. Usted conoce las coordenadas no estiradas de un nuevo punto.
¿Cómo puede estimar dónde trazar el nuevo punto en las coordenadas estiradas en función de las posiciones estiradas de los puntos cercanos? No es necesario que sea exacto, ya que no puede determinar la función de estiramiento real a partir de un conjunto de puntos remapeados a menos que tenga más información.
otras palabras clave posibles: deformado deformado cuadrícula malla plana coordinar deshilacharse
Las otras respuestas son geniales. Lo único que agregaría es que tal vez quiera echar un vistazo a la deformación de forma libre como una forma de describir las deformaciones.
Si eso es útil, entonces es muy posible ajustar una cuadrícula / red de deformación a sus pares conocidos, y luego tiene un método muy rápido de deformar puntos futuros.
Mucho depende de la cantidad de puntos existentes que tenga. Si solo tiene uno, no hay mucho que pueda hacer con él: puede compensar el segundo punto por la misma cantidad en la misma dirección, pero no tiene suficientes datos para hacerlo mejor que eso.
Si tiene una cantidad suficiente de puntos existentes, puede hacer un ajuste superficial a través de esos puntos, y usar eso para aproximar la posición correcta del nuevo punto. Dados N puntos, siempre se puede obtener un ajuste perfecto usando un polinomio de orden N, pero rara vez se desea hacer eso; en cambio, normalmente se adivina que la función de estiramiento es bastante baja (p. Ej. Cuadrática o cúbica) y se ajusta una superficie a los puntos sobre esa base. Luego, coloca su nuevo punto según la función de su superficie ajustada.
Ok, entonces esto suena como una deformación de imagen. Esto es lo que debes hacer:
Cree una triangulación de Delaunay de su cuadrícula no deformada y use su conocimiento de las correspondencias entre la cuadrícula deformada y no deformada para crear la triangulación de la cuadrícula deformada. Ahora que conoce los triángulos correspondientes en cada imagen y ya que no hay superposición, debe poder realizar el siguiente paso sin mucha dificultad.
Ahora, para encontrar el punto
A
correspondiente, en la imagen deformada:- Encuentre el triángulo
A
y utilice la transformación entre el triángulo en la cuadrícula no deformada y la cuadrícula deformada para descubrir la nueva posición.
- Encuentre el triángulo
Esto se explica en detalle explícito aquí .
Otro método (mucho más complicado) es el Thin Plate Spline (que también se explica en las diapositivas anteriores).