-
Question de picking
Bonjour,
Je me suis renseigné sur les techniques de picking (principalement le mode SELECT d'OpenGL et le raytracing) et j'aurais voulu quelle est la plus performante? Dans quel cas l'une est plus adaptée? Peut-on envisager de switcher de l'une à l'autre en fonction du matériel du client (bonne carte graphique ou chipset intégré)? Enfin je suis preneur de toutes vos infos là dessus
ps: J'en ai besoin de faire un modeleur 3D...
merci
-
Bonjour,
arrêtez-moi tout de suite si je dis une connerie mais....le raytracing est une technique de rendu 3D et n'a à priori rien à voir avec le picking...
Si tu utilises OpenGL, tu fais de l'OpenGL et pas du raytracing, donc tu utilises le picking OpenGL qui est assez bien foutu. Mais il va te falloir de la patience car si tu débutes en OpenGL il y a beaucoup de choses à maîtriser avant d'aller plus loin.
Mais pour répondre à ta question le picking OpenGL est une solution envisageable oui.
bon courage!
-
le raytracing (lancer de rayon) est une technique de calcul d'intersection utilisée en rendu 3D, mais ce n'est pas une technique de rendu 3D
(notes que tu peux faire du rendu en raytracing avec opengl)
pour un modeleur, le raytracing n'est pas une bonne idée vu que c'est "lent" et tu n'a pas besoin de la précision extrême du raytracing
avec opengl, il y a plusieurs méthodes de picking dont 2 plus courantes :
- le mode SELECT
- le mode couleur
en cherchant sur le forum tu trouveras des infos sur ces 2 modes
pas certain qu'il y en ai un significativement plus rapide que l'autre
-
Le mode couleur est intéressant dans le sens où tu fais un rendu de la scène et tu ne sélectionneras que les objets qui sont visibles. Tu fais donc de la sélection en surface (seulement les objets visibles seront sélectionnés).
Le mode SELECT te permet de sélectionner les objets qui sont dans le frustum de la caméra, en gros tu vas sélectionner tous les objets qui sont dans la zone de vue de ta caméra. C'est donc une sélection en profondeur.
Le problème de ces techniques est qu'elle demande un rendu de la scène ce qui peut être coûteux. L'intérêt est qu'elles sont faciles à implanter.
Imagine par exemple que ta scène fait plus d'un million de triangles mais qu'elle ne contienne qu'une centaine d'objets, il sera beaucoup plus performant de faire un lancer de rayon en software et de faire des tests d'intersection avec les bouding box de ces objets (ou une hiérarchie de volume englobant...). Ce ne sera donc pas précis au pixel prêt mais parfois c'est suffisant... Le problème est que c'est plus long à implanter et si ta scène peut avoir plusieurs milliers d'objets, il va vite te falloir une structure accélératrice d'intersection style Octree, BVH ou K-D-Tree et ça commence à devenir assez compliqué à faire.
Donc tout dépend de ce que tu veux faire, sélection ponctuelle (sous la souris), sélection dans un rectangle élastique (sélection multiple), sélection en profondeur, en surface, contrainte sur la taille de ta scène, sur le nombre d'objets, etc.
-
Merci pour vos réponses très utiles. Pour tout vous dire j'allais m'orienter vers le raytracing, je vais donc reconsidérer mon choix. Petite précision c'est un soft plutôt orienté CAO que je souhaite faire (si jamais ça change qqch...).