8

Estoy desarrollando una aplicación iOS de deformación de imagen con OpenGL ES 2.0.OpenGL ES 2.0 Algoritmos de transformación de vértices

Tengo una buena comprensión de la configuración, la tubería, etc., y ahora me estoy moviendo a lo largo de las matemáticas.

Como mi experiencia con la deformación de imagen es nula, estoy buscando sugerencias de algoritmos.

Actualmente, estoy configurando los vértices iniciales en puntos en forma de cuadrícula, que igualmente dividen la imagen en cuadrados. Luego, coloco un vértice adicional en el medio de cada uno de esos cuadrados. Cuando dibujo los índices, cada cuadrado contiene cuatro triángulos en la forma de una X. Ver la imagen de abajo:

opengl es image vertex map

Después de jugar con el photoshop un poco, me di cuenta de Adobe utiliza un algoritmo ligeramente más complicado para su Puppet warp, pero un algoritmo mucho más simplificado para su Warp estándar. ¿Cuál cree que es mejor para mí aplicar aquí/preferencia personal?

En segundo lugar, cuando muevo un vértice, me gustaría aplicar una transformación ponderada a todos los demás vértices para suavizar los bordes (en lugar de lo que tengo a continuación, donde solo se transforma el vértice seleccionado). ¿Qué tipo de algoritmo debería aplicar aquí?

opengl es image warping

+0

im facine el mismo problema. ¿Conseguiste la solución? ¿Cómo fue eso? Por favor, ayúdenme –

+1

lo siento, pero fue trabajo para un empleador, así que no puedo entregar el código. manipular las estructuras de los vértices dentro del método touchesmoved. cuando manipule los vértices, asígneles un peso en función de su distancia desde ciertos puntos que establece como "anclajes" y desde las paredes de la pantalla. los anclajes podrían colocarse en cualquier lugar; por ejemplo, fijé las pupilas para evitar que los ojos se movieran. si el peso es 0, entonces el vértice no se ve afectado. si el peso es 1, entonces se aplica una transformación completa. nuevo x = (transformación horizontal * peso), nuevo y = (transformación vertical * peso). etc. –

+1

gracias ............. –

Respuesta

4

Como cada vértice se procesa de forma independiente por el shader de vértice, no es fácil tener vértices influir en las posiciones de cada uno. Sin embargo, debido a que no hay tantos vértices, debería estar bien hacer el trabajo en la CPU y actualizar dinámicamente los atributos de sus vértices por cuadro.

Dado que lo que usted busca es que su superficie actúe como una lámina de goma a medida que se extraen sus partes, ¿qué hay de seguir adelante e implementar una simulación dinámica de una lámina de goma? Hay muchos buenos artículos sobre simulación de tela en 3D completo, como Jeff Lander's. Su aplicación podría ser una simplificación de estas técnicas. Tengo previamente implemented a simulation like this en 3D. Necesité una fuerza que atrajera mis vértices generados a sus ubicaciones de grillas originales. Podría tener una fuerza similar atrayendo vértices a los píxeles en los que se generan antes de que comience la simulación. Esto los haría volver a su estado predeterminado cuando se los deja solos y reduciría progresivamente la influencia de su arrastre en vértices más distantes.

Cuestiones relacionadas