2009-10-08 7 views
2

J'ai une question très générale. Je souhaite déterminer les points limites d'un certain nombre d'objets (comprenant 30-50 polygones fermés (z) ayant chacun environ 300 points (x, y, z)). Je travaille avec une fenêtre fixe qui tourne autour des axes x, y et z (alpha, bêta, gamma) par rapport à l'origine du système de coordonnées pour les polygones. Comme je le vois, il y a deux possibilités: la projection en perspective ou le lancer de rayons. La projection en perspective semble nécessiter un grand nombre d'opérations matricielles pour chaque point afin de déterminer sa position à l'intérieur ou à l'extérieur de la fenêtre. Ou étant donné le grand nombre de points, est-ce que je ferais mieux de raytracer les pixels de la fenêtre à l'objet? , c'est-à-dire de déterminer s'il y a une intersection et ensuite si une intersection se produit dans ou sans objet (s). Dans les deux cas, je vais écrire ce résultat comme 0 (à l'extérieur) ou 1 (à l'intérieur) à 200x200 une matrice de nombre entier représentant la fenêtreEfficacité de la projection de perspective vs lancer de rayons/rayon

vous remercions d'avance

Répondre

6

projection en perspective (et Scan-conversion des polygones en coordonnées de l'image) va être un lot plus rapidement.

La transformation matricielle requise dans le cas de la projection perspective (essentiellement la matrice monde-caméra) est exactement requise de la même manière lors du lancer de rayon. Cependant, avec la projection en perspective, vous ne faites que transformer les points de coin, alors qu'avec le lancer de rayons, vous transformez tous les points dans l'image.

+0

Merci pour la réponse rapide: mais je dois encore déterminer le sous-ensemble de « points d'angle » somehow- sans doute la distance maximale perpendiculaire à « objectif de la caméra "axe? –

+0

Par "points d'angle", je veux dire les sommets du polygone. Je suppose que votre polygone est défini par une liste de sommets. (Si ce n'est pas le cas, comment sont définis vos polygones?) Pour effectuer une projection en perspective sur un polygone, il suffit de projeter les sommets; En effet, une projection perspective mappe toujours une ligne droite dans l'espace sur une ligne droite de l'image. –

+0

que ces (sommets) sont les 50 * 300 (x, y, z) points: j'étais un peu lent là-bas! Merci encore! –

0

Vous devriez être capable d'utiliser la projection perspective et une matrice de projection perspective pour calculer la position des sommets dans l'espace écran? Il est difficile de comprendre ce que vous voulez vraiment faire. Si vous voulez créer une image de cette scène 3D avec seulement quelques polygones, il est difficile de voir une différence entre le lancer de rayons et la rasterisation si votre code est optimisé (vous aurez toujours besoin d'une structure d'accélération pour l'approche par rayons)), cependant, la pixellisation est susceptible d'être plus rapide de toute façon. Maintenant, si vous avez besoin de calculer la distance entre l'œil (l'origine de la caméra) et la géométrie visible à travers la vue de la caméra, je ne vois pas pourquoi vous ne pouvez pas utiliser la valeur de profondeur de n'importe quel échantillon pour pixel dans l'image et utilisez l'inverse de la matrice de projection de perspective pour trouver sa distance dans l'espace de la caméra.

Pourquoi la vitesse est-elle un problème dans votre problème? Sinon, utilisez RT en effet.

La plupart de ces informations se trouvent sur www.scratchapixel.com

Questions connexes