Question

Heyo,

Je travaille actuellement sur un projet où je dois placer la caméra de telle sorte que le mouvement complet d'un personnage serait visible sans bouger l'appareil. J'ai la position où le personnage commence, ainsi que la distance maximale que le personnage se rendra dans les trois directions (X, Y, et Z). J'ai aussi le champ de vision (qui est de 90 degrés).

Y at-il une équation qui va savoir où je dois placer la caméra de sorte qu'il ne sera pas avoir à se déplacer pour voir le mouvement complet?

Note:. Est d'utiliser OpenGL

Précision: L'appareil doit être « en face » du personnage qui est dans le mouvement, pas au-dessus

.

Il va également se déplacer le long d'un plan de masse.

Était-ce utile?

La solution

Si vous faites une sphère de délimitation des points, tout ce que vous devez faire est de garder l'appareil à une distance supérieure ou égale au rayon de la sphère englobante / sin (FOV / 2).

Par exemple, si vous avez une sphère de délimitation de rayon Rayon, et spécifié Champ de vision FOV, votre appareil photo a juste besoin d'être à un « Dist » loin, pointant vers le centre de la sphère de délimitation.

L'équation pour calculer la distance est la suivante: Dist = Rayon / sin (FOV / 2);

Cela fonctionne en 3D, pour une caméra à toute orientation.

Autres conseils

Il suffit d'avoir la portée maximale (X, Y, Z) ne sont pas en soi suffisante, car le port d'observation est essentiellement en forme de pyramide, avec le sommet de la pyramide étant à la position des yeux.

Pour les besoins du raisonnement, supposons que tout mouvement est dans le plan (X, Z) plan (par exemple le sol), et de l'oeil est directement au-dessus de l'origine de 10 m le long de l'axe Y.

En supposant une fenêtre carrée, avec votre 90˚ champ de vision que vous seriez en mesure de voir de ± 10 m le long des deux axes X et Z, mais seulement pour les objets qui sont sur le terrain (Y = 0). Dès qu'ils sortent de la terre votre point de vue est réduite. Si elle est 1m du sol alors votre (X, Z) est étendue que ± 9 m.

Il est clair qu'un véritable appareil photo peut être placé de toute façon sur la scène, face à la direction. Même l'angle « rouleau » de la caméra pourrait changer la quantité est visible. Il y a en fait une infinité de ces points de caméra, vous aurez donc besoin de limiter un peu vos critères.

Prenez le segment de ligne du startpoint au point d'extrémité. Construire un plan orthogonal à ce segment de droite passant par le point médian du segment de ligne. Placez ensuite la caméra quelque part dans ce plan à une distance de plus que ce qui suit à partir du point d'intersection du plan et de la ligne à la recherche au point d'intersection. Le vecteur de la caméra jusqu'à doit être dans le plan et le champ de vision horizontal doit être de 90 degrés.

distance = sqrt(dx^2 + dy^2 + dz^2) / 2

Cette position de l'appareil photo ont tous le startpoint et le point final à la frontière gauche ou à droite du port de vue et centré verticalement.

Une autre solution pourrait consister à faire une fonction qui prend la startpoint, le point d'extrémité, et la position désirée des deux points sur l'écran. Puis juste résoudre l'équation de projection pour la transformation de la caméra.

Il dépend, par exemple, si l'objet est mouvement va dans un avion, vous pouvez simplement placer la caméra à l'extérieur une boule circonscrite sa zone de mouvement (cela dépend du fait que FOV est de 90, ce qui est un angle chanceux).

Si l'objet est en mouvement va 3D, il est beaucoup plus difficile. Il serait utile si vous spécifiez la région où les mouvements de l'objet (cube par rapport à la balle ...) et la direction que vous voulez le voir à partir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top