pro premiere how essential espaƱol cs6 graphics 3d points bezier geometry-surface

how - motion graphics premiere



Calcule el horizonte de una cara curva?-No extrema (3)

Necesito encontrar los 2 puntos del horizonte visual , de una cara curva.

Yo tengo:

  • XYZ de los 4 puntos de esquina
  • XYZ de los 2 puntos bezier de borde curvo

Y necesito calcular cualquiera:

  • XY de los 2 puntos horizontales
  • XYZ de los 2 puntos horizontales

Nota: La última vez que hice esta pregunta obtuve una solución, pero solo encontré los extremos de las curvas, no los puntos horizontales , que cambian en función de la posición y la rotación de ambas curvas una respecto de la otra.


¿Funciona rotar primero las curvas para que la conexión entre los puntos de esquina sea horizontal y luego calcular los extremos?

Para probarlo visualmente, puede rotar su imagen de ejemplo en aproximadamente 150 grados:

Imagen girada http://www.freeimagehosting.net/uploads/ad502509e9.png

Tenga en cuenta que los extremos de esta curva no están exactamente donde los quiere, pero esto podría deberse a varios factores, por ejemplo, la forma en que marcó los puntos del horizonte no parece ser tan exacta.


Lo que estás buscando se llama realidad una silueta , no un horizonte.
El método más simple de hacerlo es encontrar el límite entre las partes superficiales en las que la normalidad se dirige hacia la cámara (el producto escalar es negativo) y las partes superficiales en las que la normal se aleja de la cámara (el producto escalar es positivo) .

Con una malla triangular puedes hacer esto directamente usando las normales. con NURBS probablemente pueda encontrar una fórmula cerrada que lo haga.


No dice cómo se define su superficie, solo que está delimitada por dos curvas cuadráticas de Bézier. Hay muchas maneras de construir una superficie así, y cada forma de construirla tendría un horizonte diferente. Entonces esta respuesta va a ser una conjetura.

El horizonte consiste en esos puntos en la superficie donde el vector de la cámara al punto es tangente a la superficie, como se muestra aquí:

Una curva cuadrática de Bézier tiene ecuación paramétrica

B ( t ) = (1 - t ) 2 P 0 + 2 (1 - t ) t P 1 + t 2 P 2

diferenciando eso con respecto a t nos da la tangente a la curva:

B ''( t ) = 2 ( t - 1) P 0 + 2 (1 - 2 t ) P 1 + 2 t P 2

y esto es paralelo con el vector de la cámara (en el origen) a la curva si

B ( t ) × B ''( t ) = 0

Resuelve esto para t y tendrás el punto en la curva en el horizonte. Cómo puede extender esto al horizonte para toda la superficie depende de cómo se construya su superficie. (¿Quizás pueda encontrar los puntos del horizonte para las curvas en cada extremo de la superficie y unirlos con una línea recta?)