que faire des faces rebelles? [octree] - C++ - Programmation
Marsh Posté le 10-05-2004 à 00:11:43
moi je redessine, mais la solution du flag est interressante
Marsh Posté le 10-05-2004 à 00:29:38
question naïve d'un pas du milieu : il n'est pas possible de définir une boite "dominante" sur une face ?
style on favorise la boite dans laquelle se trouve le vertex le plus proche de l'origine ?
edit : hum les relations d'ordre total dans des espaces vectoriels, y'en a qui ont essayé avant moi ... et ils ont eu des problèmes !
Marsh Posté le 10-05-2004 à 08:38:28
nraynaud => je veux bien favoriser une boite comme tu le dis mais de ce fait il se peut que l'on ne redessine pas une facette donnée dans une des boites de l'octree. Si par exemple une face s'étale sur 2 boites (cas des plus gentils car y'a pire), et bien si on se place de tel sorte à ne voir que la boite qui s'est vu emputée d'une face (chipée par sa voisine), alors il y a cette face que l'on ne dessinera pas et on aura un beau trou noir (enfin couleur fond). Ou bien faudrait à chaque fois réafficher cette boite voisine que l'on ne voit pas (et donc toute les voisine à une boite donnée), mais on est pas sûr non plus qu'une face ne s'étale que sur 2 boites...
Donc je sais pas ce que favorise voulait vraiment dire, et pis les espaces vectoriels ça m'irrite . Mais je peux ne rien avoir compris et avoir déliré juste dessus.
skelter=> est-ce que tu perçois des "trucs pas beau" avec cette méthode ? Je veux dire des scintillements ou autre, vu qu'une face peut être redessinée un paquet de fois dans le pire des cas ?
En tous les cas merci de vos réponses nraynaud et skelter, et pis bonne journée.
Marsh Posté le 10-05-2004 à 11:35:45
ah ok. Bon j'aurais essayé quoi.
Marsh Posté le 10-05-2004 à 14:09:00
nraynaud a écrit : ah ok. Bon j'aurais essayé quoi. |
oué et je t'en remercie, j'avais fais le même raisonnement aussi. C'est clair que ça aurait été interressant.
Marsh Posté le 10-05-2004 à 14:12:22
et prendre le cube le plus proche de l'axe optique de la caméra, c'est possible ?
Marsh Posté le 10-05-2004 à 15:53:42
nraynaud a écrit : et prendre le cube le plus proche de l'axe optique de la caméra, c'est possible ? |
C'est-à-dire prendre le cube le plus proche de l'axe optique ? Tu veux dire que les faces peuvent changer de cube au cours du temps ?
Pour ma part, ma scène est statique (terrain + trucs dessus), donc l'octree se construit à la lecture des ninfos sur le niveaux. Ensuite la caméra est placée dans la scène et et pis frustum culling, l'arbre reste identique au cours du temps.
J'ai pas trop compris, si tu pouvais développer steu plait.
Thx.
Marsh Posté le 10-05-2004 à 15:59:47
laisse tomber, ça nécessiterait de connaitre la caméra avant de charger le modèle, puis de modifier l'octree si la caméra bouge.
Marsh Posté le 10-05-2004 à 19:42:12
stochastik a écrit : |
non, aucun scintillement, aucune trace a l'affichage, mais c'est qd mem frustrant de redessiner plusieur fois un polygone (au plus 8 fois dans un octree, c'est ca?)
Marsh Posté le 10-05-2004 à 19:44:19
skelter a écrit : non, aucun scintillement, aucune trace a l'affichage, mais c'est qd mem frustrant de redessiner plusieur fois un polygone (au plus 8 fois dans un octree, c'est ca?) |
heu un vertex ne peut être que dans un cube, et il y a 3 vertex par face, donc je dirais 3 cubes non ?
Marsh Posté le 10-05-2004 à 20:27:13
et si 1 vertex est confondu avec un poin d'une boite, il se trouve dans 8 boite ?
edit: coin et pas poin
Marsh Posté le 10-05-2004 à 20:36:03
skelter a écrit : et si 1 vertex est confondu avec un poin d'une boite, il se trouve dans 8 boite ? |
c'est pas une partition de l'espace un octree ?
Marsh Posté le 10-05-2004 à 20:38:18
ben si mais quand un vertex se trouve sur un coin tu le prnd qd meme, ce qui fait qu'il sera pris 8 fois (coin=intersection entre 8 box), tu voi ou pas ?
edit : entre 4 box, desolé j suis fatiqué (jdevais etre dans la 4e dimension )
Marsh Posté le 10-05-2004 à 21:54:31
skelter a écrit : ben si mais quand un vertex se trouve sur un coin tu le prnd qd meme, ce qui fait qu'il sera pris 8 fois (coin=intersection entre 8 box), tu voi ou pas ? |
bah non, la définition formelle d'une partion c'est justement d'éviter ça.
classiquement on prend le bord d'un côté de l'intervalle et on l'exclut l'autre côté.
Marsh Posté le 10-05-2004 à 21:54:57
au plus je pense que c'est indéterminé car ça dépend du maillage de l'affaire. Imaginons un terrain (oui je suis reloud avec mes terrains) avec des grandes, mais alors grandes faces (enfin pas trop non plus) et pas mal de petits éléments dessus. Et bien dans ce cas de figure il peut arriver que la face considérée soit sur 9-10 voire plus de boite. Car l'octree base son arrêt récursif sur le nombre de face par box. Donc tant qu'il y a de petits polygone de me%%% sur une grande face, bah la face peu se voir affublée à plus de boite. Mais j'espère que ces cas de figure occurent rarement car sinon c que le modeleur veut vous en faire voir ou que le maillage tire une sale gueule à l'affichage (bien plat quoi).
Sinon je pense que le maximum "commun" doit se situer à 7. Vous imaginez une vue de dessus :
_______________
| | x |
| | |
|--------------|
| x | x |
|______|_______|
avec un cadrant en 4 et une face qui a ces 3 sommets dans 3 cadrant MAIS ayant une edge qui passe par le 1/4 de cadrant qui n'a pas de sommet. De là on peut très bien imaginer que que le sommet du 1/4 bas gauche se situe à l'étage supérieur (n'oublions pas quand fait le cadrant en 4 est un étage de box et qu'il en va de même juste au dessous) et que le sommet du cadrant haut droit se trouve en fait sur le cube du dessous de l'étage 2D présenté.
Alors bien sûr il y a aussi le cas 8 que vous avez cité aussi, et pis plein d'autre aussi si la face arrive à s'étaler un peu.
Tout dépend donc. Alors je pense sérieusement à mettre un flag et pis basta.
Sinon retracer mais comme tu dis skelter c'est frustrant de retracer alors qu'on est censer mettre en place un truc qui limite justement cet affichage.
Merci de vos réponses/interrogations.
Marsh Posté le 10-05-2004 à 21:57:25
pas bô le schéma, honte sur moi.
Marsh Posté le 10-05-2004 à 21:59:41
et pis le 7, c'est un huit comme vous avez dis. (Ah le floodeur l'autre hé).
Marsh Posté le 10-05-2004 à 22:08:28
et pis j'en sais rien, 7-8-n, j'vais me pioter.
Progué bien.
Marsh Posté le 09-05-2004 à 23:55:57
Bonsoir,
Voilà, je voulais sonder ceux qui utilisent les octrees pour savoir que faire des faces se trouvant sur plusieurs boites ?
- Putôt les redessiner à chaque tracé des boites dans lesquels elles se trouvent,
- ou bien encore découper ces faces (triangulaire) en trois triangles (voir 2 dans cas particuliers)
- ou finalement mettre un flag sur les faces et voir si la face considérée à déjà été tracée précédemment lors du passage par une autre boite (un peu lourd peut être, comme moi)?
bonne soirée, ce soir je suis le newbie de l'octree.