tiens, si ça peut t´éclairer,y´a le bout de code qu´on avait pondu pour un projet :
http://netabarons.chez.tiz.tiscali.fr/downloads/BSP.ace
y´a du refactoring de C avec encapsulation C++, donc y´a beaucoup de méthodes statiques : conceptuellement, c´est ignoble, mais ça marche ![]()
Lgv: comment ca a deadline +1? Ha vi, 1 mois de retard ; )
Oui l´implementation des portals et du calcul de radiosite varie bcp selon les jeux etc.. Pour l´info moi j utilisais pour les portals un mix de q2/q3/code a moi, et pour la radiosite q2/code a moi, le code de qradiant3 etant moche et trop mappe aux besoins specifiques du jeu..
J´arrive p-e un peu tard sur le sujet, mais un tres bon lien qui permet de tout comprendre sur les bsp :
http://www.gamedev.net/reference/programming/features/bsptree/bsp.pdf
et une faq qui peut permettre de repondre a des questions que tu pourrais te poser
http://www.gamedev.net/reference/articles/article657.asp
Un conseil : les bsp c´est bien pour commencer a se familiariser avec l´occlusion ou les pvs, mais faut savoir que c´est efficace que pour les scenes d´interieur et les objets fixes ( pr les objets qui bougent y´a des structures + efficaces).
Merci je vais aller voir ![]()
![]()
" "il n´y qu´à tester si chaque noeud traversé par le rayon est solide pour savoir si " voit" la cible."
sans dec, trop fort le bsp.
moa je v devoir tester pour chaque polygone compris dans les secteurs activés par la proximité du rayon.
ce qui a l´air plus compliqué a déterminer qu´avec les BSP.
mais bon, au moins ca sera du systeme-lightness a 100% et pas une technique connue, ( ok je réinvente la roue machin) ben oui et j´aime bien.
Lightness-System à 100 %
Mais comment fait on pour faire traverser le rayon à travers l´arbre ? Quel est le lien entre l´arbre et le rayon ?
![]()
le rayon => deux positions
l´arbre => des polygones
y´a qu´à regarder la position relative de chaque extermité du segment par rapport au splitter en chaque noeud du BSP
le point est devant le splitter ? => on descend dans la partie front du BSP
le point est derrière le splitter ? => on descend dans la partie back du BSP
regarde dans tous les liens qu´ont été donnés, regarde le code ( tres court généralement) d´un test de visibilité, ça t´éclairera.
Maintenant, si tu veux faire un système " à la toi" je ne vois pas pourquoi tu t´ennuies avec un BSP puisque ton raycasting ne tirera pas partie de cette structure ? Pourquoi organiser les polygones si c´est pour trifouiller je sais pas quoi avec une " proximité de rayon". Si tu veux travailler avec des notions de proximités, donc de zones, prefère plutôt construire un octree...
![]()
viki6kornman : t´es OBLIGÉ de foutre des smileys sur chaque page où tu passes ? ! ça ne fait avancer en rien les discussions... Si c´est juste pour dire " j´ai lu", imagine si tout le monde faisait pareil !
Surtout, un smiley aprobateur alors que je suis persuadé que tu n´as rien compris de ce que j´ai pu expliquer... ( mais ça c´est normal, des gars plus agés galèrent déjà donc bon...)
G à peu prés comprit, je ne comprends pas tout, mas le principal du message, mais j´en ai marre, je me fais tjrs engueler vous commencez à être chiant! Et puis je dis ça juste pour dire que j´ai lu, c sûr, mais d´autres ne lisent pas, moi g c de m´integrer de prendre part aux conversations, mais vous m´aidez pasdu tt là! ![]()
t´énerves pas, j´essaye juste de te faire comprendre que si tout le monde faisait pareil, on ne s´y retrouverait plus, y´aura un post, suivi de 25 ouaip/ah bon/smiley, avant un autre post donnant suite à la discussion.
Perso je passe beaucoup de temps à chercher du boulot et programmer, et quand je vois que je peux aider j´hésite pas à prendre qq minutes pour taper un post, mais quand je fais 10 topics pour voir qu´il n´y aucune suite du dialogue ni nouvelle question mais plutôt que des " j´ai lu", comprends que c´est une perte de temps énervante.
Ceux qui ne lisent pas, je m´en fiche, ils ne sont surement pas interessé, par contre s´ils posent la meme question à coté là je rale ; et si toi tu lis, tant mieux, meme si à ton stade c´est plus pour la culture personnelle que pour l´aspect technique ( si tu expliquer un BSP à qqun d´autre à 13 ans, je dis chapeau...) ; maintenant si tu veux rééllement prendre part aux conversations, comme tu le dis, il va falloir changer de registre je pense.
On discute technique et on débloque des problèmes, si qqun propose une autre solution on écoute, si qqun rencontre un problème on réfléchit. En dehors de ça, tout n´est que perte de temps.
" Si tu veux travailler avec des notions de proximités, donc de zones, prefère plutôt construire un octree..."
c´est justement mon choix, mais trafiqué ( c´est un bitree).
Merci LGV
lag-it : np
lightness1024 : un bitree ? . .. par analgie avec les autres partitions de domaine, ça serait logiquement une structure mappée sur un domaine 1D et donc le parcours reviendrait à une dichotomie.
Ne s´agit-il pas plutôt d´un quad-tree auquel tu rajoutes une notion d´altitude ? Sinon je ne vois pas trop comment tu vas considérer des polygones ? Ou alors c´est simplement un arbre binaire mais alors on se rapproche plus du BSP que de l´octree.. du coup, je comprends plus rien à la technique que tu comptes mettre en oeuvre LOOOL :D
Tatda ! ! Retour du topic de l´arbre BSP
! !
Bon alors j´ai une nouvelle questions :
J´aiessayé les petits applet Java illustrant le concept de l´arbre BSP mais, du fait qu´il soient en 2 dimensions, je m´interroge sur le problèe suivant :
Imaginons une salle cubique de 100*100*100 et un cube posé sur le sol en son centre, de dimensions 1*1*1 ( pas d´unités et le cube est un élément du monde : pas une entité, et donc immobile ) .
Le principe de l´arbre BSP étant de créer cet arbre selon la positions des faces par rapport aux autres, va on choisir à un moment dans l´arbre une face du cube comme face de référence, sachant que son incidence est minime voire nulle ? Et pourquoi ?
j´ai pas bien saisi la question... :/
toutes les faces, aussi petites soient-elles ont leur importance, puisqu´elle peuvent entrainer plus ou moins de subdivisions.
Maintenant se pose plutôt la question du choix du splitter ( ou face de référence comme tu l´appelles). Là, chacun y va de sa méthode pour essayer d´équilibrer l´arbre sans introduire trop de subdivisions.
Mais comme je le disais je ne saisis pas bien sur quoi se posent tes interrogations :-?
Je m´en doutais je reformule
:
Un objet minuscule ( un cloou par exemple ) va il servir à un moment donné dans l´arbre de face de référence ( pour trier les faces avant et arrières ) alors que ses dimensions sont minimes ?
ben théoriquement oui, à partir du moment où c´est un élément statique du décor, autant le foutre dans le BSP. Maintenant on s´amusera rarement à traiter des objets statiques de taille aussi petite, parce qu´ils ne représentent pas de détail " interessant". Typiquement, tous les " petits" détails seront réalisés à coup de textures ou autres effets, les petits objets seront dynamiques et à faible durée de vie ( douilles dans un FPS par exemple). Un exemple d´objet statique interessant pour un BSP, c´est une caisse de taille raisonnable, derrière laquelle le joueur peut se cacher : s´il peut se cacher derriere c´est quelle peut obstruer une bonne partie du champs de vision, du coup ça devient interessant pour le BSP.
Par contre, mettre 15 " clous" dans un BSP, ça risque de faire croitre considérablement le nombre de polys ; faut bien se définir à l´avance les contraintes pour que le level design suive. Ensuite, rien ne t´empeche de gérer une structure de données annexe dans laquelle tu auras d´autres objets, mais il y aura donc des tests de visibilité à faire... Il faut trouver le bon compromis. L´idéal étant d´avoir dès le départ une scène homogène ( pas de disproportion entre détails minuscules et grands espaces) détaillée avec peu de polygones... dur dur...