CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

DirectX vue Orthonormale selection

zaor
zaor
Niveau 5
20 juin 2003 à 13:13:15

Hello j´ai un pb . ..
J´ai suivi le tutorial de DirectX ( 8 ou 9 c le même ) pour faire un pick sur un mesh
En clair, de sélectionner une face d´un model en cliquand dessus dans la vue en 3D.
J´ai transformé la fonction et je lai assosié a une fonction de mon CRU, et a présent j´arrive a sélectionner des triangle quelconque dans ma vue en 3D.
Donc je me suis servi du code du tutorial uniquement pour trouver le vecteur de sélection c´est a dire le rayon partant de ma souris vers l´endroit pointé !
Cela marche parfaitement dans une vue 3D normale.
Mais dès que j´utilise une vue Orthonormale ( comme celles utilisée dans les éditeur de niveau pour ne pas avoir de perspective... ) ben là ça ne marche plus... j´ai essayé de trouvé pk . ..

mais je n´ai pas trouvé...enfin en gros je voit, mais je n´ai aucune idée de la manière de contourner ce pb...

Donc ça serais sympa si kkun avais déjà fait ça, ou si vous connaiteriez pas un site qui en parle...

Si vous ne ´laviez pas compris c´est pour l´éditeur de niveau de nikao ( www.nikao.fr.st )
Avant jutilisais une bidouille ki se révellais peut précise...et donc jveu passer en mode PRO comme on pourrais dire...mais là je seche... =(

En résumé je veu que l´on me donne le vecteur qui représente ma sélection dans une vue ortogonale . .. C´est a dire le rayon avec lekel on va tester kel triangle le traverse pour en déduire si j´ai cliquez dessus ou pas...
c bisard . .. g limpression que je ne suis pas clair...lol =( Enfin bon...si vous avez une piste... moi g rien trouvé... et jdoit vite régler ce Pb pour que mes mappeurs commence a taffer dessus... ^^

Lightness1024
Lightness1024
Niveau 10
20 juin 2003 à 17:50:08

je saurais faire ca mais c pas simple a expliquer dans un post de forum comme ca.
si tu veux je créerait une page html la dessus ce week end et je te mettrait le lien ici.

en gros il faut tester tout les triangles du monde ( sauf si tu as un systeme de partitionnenment par exemple Octree mais ca c de l´optimisation) pour le principe c´est ca.
tu cherches l´intersection entre ton rayon et ton triangle en disant ke le triangle definit un plan infini.
j´ai la formule toute trouvée, je te la donnerais, g deja plein de shema pour ca.
ensuite tu verifie si le point d´intersection trouvé est dans le triangle ( avec les scalaires des normales des arretes) je t´explikerais.
et ensuite si tu as plusieurs point, tu cherche le plus proche et ca c le plus simple de tout l´algorithme lol.

bon bref t´inkete pas tu va pas etre bloké.

par contre je ne sais pas comment tu fais pour faire de la 3D parrallele avec DirectGraphics faudra ke tu m´expliques. si tu met 0° dans le field of view de la matrice de projection c normal ke la fonction de pick ne marche pas.

zaor
zaor
Niveau 5
21 juin 2003 à 10:11:42

Non pour la detection des intersection c bon ça ça marche nikel.
C´est justement le fait de calculer le RAY ki marche po. En vue normale ( en perspective ) ça marche. mais kan tu fait un :
D3DXMatrixOrthoOffCenterLH
au lieu d´un :
D3DXMatrixPerspectiveFovLH
( donc ici je fait une vue parralèle koi... )

Ben là ça marche pas . .. jpense réussir a bidouiller pour y arriver car dans mon cas la vue Ortho suit un des 3 axe de la vue 3D ( vue de face , de coté, de dessous . .. ) donc ça devrais être faisable... mais si on prend une vue libre . .. ben là g pas de solution... enfin c pas grave, si tu trouve jsuis prennneur, sinon jpense avoir trouvé comment me débrouiller dans mon cas. =)
mici kan même =) =) =) =)

hs_dino
hs_dino
Niveau 9
21 juin 2003 à 10:28:47

Lol!!! Si tu es en ortho, rien de plus simple! Ton ray a pour vecteur le Z de la camera, pas besoin de faire de calculs.

Dino ( aka Le_Chieur by Zaor)
The Zythum Project
http://www.zythum-project.com

zaor
zaor
Niveau 5
21 juin 2003 à 10:38:39

Mé non jvue pas juste la direction....
Fo que je prenne e RAY en fonction de l´endroit où j´ai cliqué avec la souris.... . ...

kookii
kookii
Niveau 4
21 juin 2003 à 12:19:45

Avec direct3D je sais pas, mais avec opengl tu peux recuperer la matrice inverse de projection, sinon ben faut chercher comment la calculer a la main.
Quand t´as cette matrice tu multiplie avec ton vecteur ( X,Y,zmin) et t´obtiens les coordonnees du point dans ton monde. Apres ben tu fais la difference avec le centre de ta camera.
j´pense qu´ne mode ortho la coordonnee Z c´est le plan proche de ta camera ( zmin), sinon on verrait si c´etait le Z. Enfin pour le z c´est a verifier.

hs_dino
hs_dino
Niveau 9
21 juin 2003 à 20:10:36

" Mé non jvue pas juste la direction....
Fo que je prenne e RAY en fonction de l´endroit où j´ai cliqué avec la souris.... . . .."

Oui, j´ai bien compris et je te le repete, ton rayon a pour origin la position de ta camera et comme direction le Z de ta camera.

Exemple:
Si ta camera est en position ( 100;200;300) et regarde en Z pour la vue XY, tu as :

RayOrigin = 100;200;300
RayDirection = 0;0;1

Dans le cas d´une vue arbitraire tu trouveras ton vecteur RayDirection avec le Z de ta camera.

Dino
The Zythum Project
http://www.zythum-project.com

Altonfrere
Altonfrere
Niveau 10
21 juin 2003 à 20:21:07

Nan, c´est pas une question de caméra : ) on clique pas avec la caméra mais sur un écran avec une souris ( plus précisément sur le plan de projection de la scène).

Là où je te rejoint HS_Dino c´est qu´à partir du " point de clic" il faut lancer un rayon suivant la normale à ce plan ( donc comme tu dis ( 0,0,1)), puisque l´on est en projection ortho. Il suffit de trouver l´intersection du rayon partant de ce point et ayant comme vecteur direction ( 0,0,1) : algo classique de raytracing : )

enfin si j´ai bien compris la question je pense que ca doit être qqchose comme ca.

hs_dino
hs_dino
Niveau 9
21 juin 2003 à 20:37:12

Oups!!!!

J´ai oublié les offsets de screens!!!

Il faut rajouter au RayOrigin les offsets 2D correspondant au clic de la souris. Les offsets sont relatifs au centre de l´ecran.

Dino
The Zythum Project
http://www.zythum-project.com

Altonfrere
Altonfrere
Niveau 10
21 juin 2003 à 20:38:03

: ) hehe

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment