Revue de sujet
Darktib Posté le 25 Jan 2009 à 11:56
Avatar de Darktib
Messages : 4017
L'axe Y va vers le haut, et le Z est horizontal.

En tout cas j'ai compris pourquoi il rendait trop de boites de temps en temps en affichant le frustrum (raison citée sur le post précédent)
SEB Posté le 25 Jan 2009 à 10:27
Avatar de SEB
Messages : 554
Une suggestion bete.. mais on sait jamais... il n'y aurait pas une petite inversion entre l'axe Y et Z ???
Darktib Posté le 25 Jan 2009 à 09:31
Avatar de Darktib
Messages : 4017
Bon, il y a du nouveau. J'ai résolu les problemes en faisant des boites immenses (du moins en hauteur), le comble c'est que ca marche et que je comprend pas pourquoi :lol: :proud:

Sinon j'ai remarqué que des boites qui en tout et pour tout devait représenter 2 pixels a l'écran étaient rendues... donc va falloir que je mette du contribution culling en plus du frustrum culling (sachant qu'une boite de moins de rendu = presque 30 fps en plus...)

En tout cas merci pour l'aide :smile:
Darktib Posté le 24 Jan 2009 à 21:50
Avatar de Darktib
Messages : 4017
En théorie aucun point...

Je vais tester avec des intersection de lignes en plus, et aussi voir si les frustrums ne déconnent pas un peu...
SEB Posté le 24 Jan 2009 à 21:14
Avatar de SEB
Messages : 554
Ah XD si désolé XD et ca ne fonctionne pas pour les boite donc aucun point n'est dans le frustum donc ?

Darktib Posté le 24 Jan 2009 à 20:54
Avatar de Darktib
Messages : 4017
Il ne suffit pas de changer le pseudo code pour avoir
Code :
function isVisible( Frustum, Box ) {
pour les 6 faces F du frustum
  si( Box.pnt1 devant F )
    si( Box.pnt2 devant F )
      si( Box.pnt3 devant F )
        si( Box.pnt4 devant F )
          si( Box.pnt5 devant F )
            si( Box.pnt6 devant F )
              retourner faux;
finpour

retourner vrai;
}


??
SEB Posté le 24 Jan 2009 à 20:44
Avatar de SEB
Messages : 554
Si les plans sont orientés vers l'extérieur, mon pseudo code ne marchera pas, il faut que les plans soient orientés vers l'intérieur en fait l'idée du pseudo code c'est :

Un cube est invisible Si et seulement Si ses 8 sommets sont derrière un seul des plan
sinon il est visible

donc en inversant la normale peut-etre que cela marcherais dans ton cas
Darktib Posté le 24 Jan 2009 à 20:30
Avatar de Darktib
Messages : 4017
Les cas qui ne passent pas sont quand un bout de la boite est dans le frustrum mais qu'aucun point n'y est...

Les plans sont orientés vers l'extérieur.

En fait pour mieux voir faudrait que je crée vertex par vertex (et index par index...) l'objet représentant le frustrum- ce qui risque d'etre pas tres rapide....
SEB Posté le 24 Jan 2009 à 19:47
Avatar de SEB
Messages : 554
Tu pourais peut-etre vérifier si les plans du frustum sont orientés vers l'itérieur? en affichant la normale par exemple?
Darktib Posté le 24 Jan 2009 à 17:43
Avatar de Darktib
Messages : 4017
marche toujours pas.

J'ai essayé ta méthode, mais de temps en temps des boites du bord de l'écran ne sont pas rendues...
En affichant le frustrum il ne devrait pas y avoir de problemes, mais c'est dur a voir vu que ledit frustrum n'est affiché qu'avec des lignes...

M'enfin, je continue de chercher...

edit : je pense que de toute facon la meilleure solution consiste a utiliser les représentations paramétriques, que malheureusement je ne connait pas...
SEB Posté le 19 Jan 2009 à 17:49
Avatar de SEB
Messages : 554
oui exactement, en gros un pseudo code donnerais


Code :
function isVisible( Frustum, Box ) {
pour les 6 faces F du frustum
  si( Box.pnt1 derriere F )
    si( Box.pnt2 derriere F )
      si( Box.pnt3 derriere F )
        si( Box.pnt4 derriere F )
          si( Box.pnt5 derriere F )
            si( Box.pnt6 derriere F )
              retourner faux;
finpour

retourner vrai;
}


Sachant que je considère que les plans regardent vers le centre du frustum

Darktib Posté le 19 Jan 2009 à 16:04
Avatar de Darktib
Messages : 4017
Classifier une aab par rapport a chaque plan ?

Le probleme c'est que pour l'instant ca ne marche pas...

Enfin, je vais essayer d'ajouter une caméra a mon appli pour pouvoir visionner le frustrum de la premiere caméra, histoire de voir si ce frustrum n'est pas erroné.
SEB Posté le 19 Jan 2009 à 13:26
Avatar de SEB
Messages : 554

Citation :

J'utilise cette intersection entre une aab et un frustrum, et avec la méthode que j'utilise actuellement les résultats sont érronées...



En fait l'algorythme d'intersection AAB, Frustum tu peu le faire via la position des points par rapport aux plans du frustum. Tu peut toujours savoir si un point est devant ou derrière un plan, donc en gros si un objet a tous ses points derrière un des plans du frustum il n'est pas visible, sinon oui

corwin Posté le 18 Jan 2009 à 19:07
Avatar de corwin
Messages : 459
je cherche aussi de mon coter :wink:
Darktib Posté le 18 Jan 2009 à 18:41
Avatar de Darktib
Messages : 4017
Une équation paramétrique peut tres bien aller.

Je vais essayer avec tout ce petit tas d'équations...
J'utilise cette intersection entre une aab et un frustrum, et avec la méthode que j'utilise actuellement les résultats sont érronées...
SEB Posté le 18 Jan 2009 à 17:12
Avatar de SEB
Messages : 554
Je ne pense pas qu'il y ait une equation unique a une ligne du meme genre. mais pluto un truc paramétrique.
En gros peut-etre qu'avec l'equation de chaque plan composant tes différents volumes.

6 equation de plan pour l'AAB et Autant de plan qu'il en faut pour les faces de la piramide
Darktib Posté le 18 Jan 2009 à 16:05
Avatar de Darktib
Messages : 4017
Hello,

J'aimerais savoir comment faire pour connaitre l'intersection d'une boite alignée sur des axes et d'une pyramide (qui peut etre orientée absolument n'importe comment).

Donc ma question peut se résumer en :
_Existe t il une équation permettant de créer une pyramide en 3D (du meme type que (x-a) + (y-b) = r² crée un cercle en 2d), et si oui, quelle est elle ?
_Meme question pour un cube.

Merci d'avance
Nouveau message

Large sourire Sourire Veut Langue Absurde Choqué Clin d'oeil Innocent Cool Fier rougissant confus Neutre Etonné Content Triste Douloureux Pathétique Etrange Agacé Colère Tordu Flèche Question Exclamation Rigole Gêné Amoureux Oui No Fou Pleure Pleure de joie Mignon Coup de coeur Hystérique Blasé Ninja Pouffe Stun Suspicieux Incompréhensible
Gras
Italique
Souligné
Barré
Gauche
Centré
Droite
Justifié
Flottant à gauche
Flottant à droite
Lien
Citation
Puce
Spoiler
Wiki
Image
Flash
Youtube


Prévisualisation
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0361 secondes