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

Cubisme

sn00bino
sn00bino
Niveau 5
11 mars 2007 à 15:37:56

Bonjour,

Je suis de retour (une fois de plus) avec des emmerdes ( pour changer ).

Je souhaite redimensioner un cube grâce a la souris. L´ utilisateur clique sur un sommet et le déplace. Voici mon champs d´ action :

1 : Récuperer la face la plus affiché a l´ ecran.

En effet la souris etant un animal peu evolué elle ne se déplace qu ´ en 2d, le changement de forme du cube ne doit avoir lieu que sur un plan.

Repere Global

2 : Récupérer une demi-droite partant du pixel touché par la souris et voguant vers le fond de la scéne.

Repere Global

3 : Récupérer l´ intersection demi droite / plan

Repere Global

4 : Transformer l´ intersection dans le repere de l´ objet.

Global -> Local

5 : Ajouter la diference entre l´ intersection et le sommet initialement déplacé.

Repere Local

Evidement sa marche pas. Si vous voyez pas de default dans mon raisonement je vous donnerez le code precis pour chaque étape. ( je pense quand meme que ya un blem par la ).

++
merci d´ avance,

sn00bino
sn00bino
Niveau 5
11 mars 2007 à 21:03:43

bon j´ ai relis et mon probleme n´ est ni tres clair ni tres facile a exprimé donc voila le Exe :

http://www.wikiupload.comom/download_page.php?id=100889

La sphere jaune represente l´ intersection plan / souris, pour resizer clicker sur un sommet et déplacer. Le probleme devient evident.

Voici le detail de ma proc :

1( jvous le mes pas y marche )
le resultat est dans un D3DXPLANE appelé plane.

2 :

D3DXVECTOR3 v;
v.x = ( Pos.x * 2.f / Rsx - 1 ) / matProj._11;
v.y = - ( Pos.y * 2.f / Rsy - 1 ) / matProj._22;
v.z = 1.f;
D3DXVECTOR3 ROri, RDir;
D3DXMATRIXA16 m;
m = matView;
D3DXMatrixInverse( &m, NULL, &m );
RDir.x = v.x*m._11 + v.y*m._21 + v.z*m._31;
RDir.y = v.x*m._12 + v.y*m._22 + v.z*m._32;
RDir.z = v.x*m._13 + v.y*m._23 + v.z*m._33;
ROri.x = m._41;
ROri.y = m._42;
ROri.z = m._43;

3 :
D3DXPlaneIntersectLine( &Intersection, &plane, &ROri, &RDir );

4 :
D3DXMatrixInverse( &m, NULL, &matWorld );
D3DXVec3TransformCoord( &Intersection, &Intersection, &m );

5 :
NewPos = Intersection - OldPos;
//lock
for(int c = 0;c < 24; c++)
{
if(vertices[c].x > 0) vertices[c].x += ax;
else vertices[c].x -= ax;
if(vertices[c].y > 0) vertices[c].y += ay;
else vertices[c].y -= ay;
if(vertices[c].z > 0) vertices[c].z += az;
else vertices[c].z -= az;
}
//unlock

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