DirectX und Dragging



  • Moinsen!

    Ich probiere seit Stunden ein Dragging in DirectX und C++ zum Laufen zu bekommen, jedoch ohne Erfolg.
    Ich möchte, daß ein 3D-Objekt dem Mauszeiger folgt, aber irgendwie funktioniert es nicht!

    Zum Umrechnen benutze ich diesen Code:

    D3DXVECTOR3 ScreenToVector ( int xPos, int yPos )
    {
         D3DXVECTOR3 vPickRayDir, vPickRayOrig, v;
         D3DXMATRIX matProj;
    
         m_pCGrfx->Get3DDevice ( )->GetTransform ( D3DTS_PROJECTION, &matProj );
    
         v.x = ((( 2.0f * xPos ) / m_nWidth ) - 1 ) / matProj._11;
         v.y = -((( 2.0f * yPos ) / m_nHeight ) - 1 ) / matProj._22;
         v.z = 1.0f;
    
         D3DXMATRIX matView;
         m_pCGrfx->Get3DDevice ( )->GetTransform ( D3DTS_VIEW, &matView );
         D3DXMATRIX matWorld;
         m_pCGrfx->Get3DDevice ( )->GetTransform ( D3DTS_WORLD, &matWorld );
         D3DXMATRIX matWorldView = matWorld * matView;
         D3DXMATRIX m;
         D3DXMatrixInverse ( &m, NULL, &matWorldView );
    
         // Transform the screen space pick ray into 3D space
         vPickRayDir.x  = v.x * m._11 + v.y * m._21 + v.z * m._31;
         vPickRayDir.y  = v.x * m._12 + v.y * m._22 + v.z * m._32;
         vPickRayDir.z  = v.x * m._13 + v.y * m._23 + v.z * m._33;
         D3DXVec3Normalize ( &vPickRayDir, &vPickRayDir );
    
         return ( vPickRayDir );
    }
    

    Die Position haut aber überhaupt nicht hin und sobald ich die Kamera rotieren lasse, klappt gar nicht mehr.
    Gibts für sowas irgendwo ein Bsp? Ich habe schon rumgesucht, wurde aber bisher nicht fündig.

    Grüße und Danke für eventuelle Vorschläge



  • Schau mal hier
    http://www.toymaker.info/Games/html/picking.html
    Ansonsten weiß ich natürlich nicht, welche Version Du nutzt, aber beim 9er SDK war noch ein pick-Sample dabei.. dann kannstes direkt da rauskopieren 😋


Anmelden zum Antworten