Tom's Guide > Forum > Programmation > rendu sans context graphique

rendu sans context graphique

Forum Programmation : rendu sans context graphique

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,
Je travaille sur un projet qui consiste à:
"En indiquant à l’outil le point de vue désiré, le champ de vue, ainsi que la taille n*m en pixels, l’utilisateur pourra obtenir une image de rendu qui comprendra le numéro de face à laquelle appartient chaque pixel.
Ce résultat sera stocké dans un fichier texte".
En fait cet outil doit s'executer en mode batch, on lui rentre les renseignements et il me renvoit un fichier texte avec pour chaque pixel le numero de face de l'objet auquel il appartient. On m'a parlé d'une fonction de MESAGL, pbuffer qui ferait exactement ca (un rendu sans context graphique) mais j'avoue ne pas connaitre grand chose a MESA.
Si quelqu'un peut me renseigner ou bien me proposer une autre solution.
N.B: ne peut on pas tout simplement utiliser un buffer d'openGL??
merci d'avance

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu peut faire le calcul toi même ce n'est que de la géométrie 3d.
MESAGL c'est la version d'openGL sous linux.
Avec OpenGL il existe des fonction pour savoir si un pixel appartient à une face.
Il te suffit de balayyer tous les point.
Installe les examples du RedBook qui montrent comment faire.

Répondre à CRicky

j'avais déjà tenté une méthode qui consistait à faire une sorte de lancer de rayon (picking) mais c'est super long comme temps de calcul. Je vais continuer de chercher dans les fonctions d'opengl, pour voir si je trouve mon bonheur.
Merci :-D

Répondre à lizou03

le lancer de rayon n'est pas trop lent.
Tu as juste à balayer les rayons du point d'origine vers le pixel courant de l'écran, apres un petit calcul mathématique te donne le point d'intersection P avec un plan.
Et pour savoir si le point est dans le polygone, tu peux calculer le produit vectoriel (PA,PB), puis (PB,PC) ... (P [N], P[N+1]) puis (P[N+1], PA).
Et tu vérifie que tous ces points sont dans le meme sens (produits scalaires > 0).

Sinon en openGL, c'est sûr on peut le faire. Je m'en suis servi pour le clic de souris.
Je te revois encore sur le redBook
Plus précisément l'exemple pickdepth qui utilise une fonction GLU: gluPickMatrix ()
qui avec un glRenderMode(GL_RENDER); permet de calculer le rendu (la sélection en fait)

Répondre à CRicky

l'exemple pickdepth est exactement le code dont je me sert pour le lancer de rayon et c'est celui ci qui est super long (il faut savoir que mes scenes 3D sont énormes)
c'est pour cette raison que je souhaite utiliser un buffer

Répondre à lizou03

Je pense que tu ne pourra pas aller plus vite que cette fonctionnalité opengl, car le calcul est effectué en faisant un rendu.

http://www.opengl.org/resources/tutorials/sig99/advanced99/notes/node35.html

Quand tu lances un rendu pour la sélection, opengl passe des vecteurs aux fragments vers les primitives, mais ne génère pas les fragments. Bref, tout ça est optimisé.

Il faut savoir que si les jeux n'utilisent pas le ray tracing, c'est parce que les calculs sont long à effectuer. Alors je ne sais pas ce que tu fais de ce lancer de rayon (ou combien tu en fais), mais si c'est complexe, ne t'attend pas à avoir tu temps réel...

Répondre à CRicky
Tom's Guide > Forum > Programmation > rendu sans context graphique
Aller à :

Il y a 2626 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens