2010-02-18 20 views
5

¿Hay algún algoritmo para proyectar imágenes en una superficie no plana (deformada)?¿Hay algún algoritmo para proyectar imágenes en una superficie no plana?

No se deforma demasiado. Es una superficie realmente vidriosa cubierta con papel de calco duradero de alta calidad. Tengo un modelo tridimensional de eso. ¿Cómo puedo texturizarlo con un proyector? projection

Quiero escribir un programa en C \ C++ \ C# para Windows, que podría texturizar cualquier superficie dada por un modelo tridimensional utilizando un proyector.

Necesito un algoritmo o bibliotecas de código abierto que contengan algoritmos.

+5

¿Estás tratando de simular cómo se vería si alguien señaló con un proyector de películas ordinaria en esta superficie? ¿O estás tratando de ajustar lo que estás proyectando para tratar de cancelar las deformaciones en la superficie? –

Respuesta

1

No está nada claro qué algoritmo utilizaría una biblioteca de texturas estándar, y probablemente no sea una proyección verdadera, por lo que si la precisión es importante, es necesario que lo haga usted mismo (o investigue qué algoritmos específicos se están usando). usado para una biblioteca dada).

El algoritmo básico es simple. Básicamente, solo necesita encontrar dónde la línea que emana de su punto de proyección se cruza con su superficie. En más detalle:

  1. decidir sobre su punto de proyección
  2. decidir sobre un montón de líneas que emanan de su punto de proyección que le dará la resolución que necesita en su superficie alabeada
  3. Determinar donde estas líneas se cruzan su superficie (el método exacto dependerá de su representación de la superficie)
  4. asumir que su imagen plana se coloca en algún lugar entre el punto de proyección y superficie alabeada y encontrar la intersección de la línea con la superficie plana y asignar este valor a la ubicación en el combado superficie.

Por otro lado, si su superficie se describe matemáticamente, puede haber una ecuación simple para esto, como sería el caso, por ejemplo, si estuviese mapeando un plano a una esfera.

3

Sí, hay un algoritmo. A menos que realmente desee implementarlo por su cuenta, probablemente sea más fácil permitir que una implementación de gráficos 3D existente haga el trabajo por usted, tanto OpenGL como DirectX le permitirán aplicar una textura a la superficie de un modelo 3D. Los tutoriales de NeHe incluyen un example de la idea básica usando OpenGL.

+0

Para añadir a esto, la llamada OpenGL específico es 'glTexGen (..., GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR)'. –

0

Se llama corrección de distorsión de imagen.

Cuestiones relacionadas