自分で、簡単なモデラーを作ろうと思っているのですが、頂点の選択部分がうまくいきません。
実際の頂点と WM_LBUTTONUPから取得したマウス座標(lefttopとrightbottomのx、y)から変換したlefttopなどの変数とずれが生じてしまいます。
自分の考えとしてはビュー変換→プロジェクション変換し、スクリーン座標系にに頂点、マウス位置を変換すれば単純に比較が可能だと思ったのですが、
どうしたらうまく選択できるのでしょうか。
bool verManage::IsSelectV(D3DXVECTOR3 lefttop,D3DXVECTOR3 rightbottom,int num){
D3DXVECTOR3 pos(verX[num],verY[num],verZ[num]);
D3DXMATRIXA16 matProj,matView,matWorld;
D3DXMatrixIdentity(&matWorld);
pDevice->GetTransform( D3DTS_PROJECTION,&matProj);
pDevice->GetTransform( D3DTS_VIEW,&matView);
D3DXVec3TransformCoord(&pos,&pos,&matView);
D3DXVec3TransformCoord(&pos,&pos,&matProj);
D3DXVec3Unproject(&lefttop,&lefttop,&Viewport, &matProj,&matView, &matWorld);
D3DXVec3Unproject(&rightbottom,&rightbottom,&Viewport, &matProj,&matView, &matWorld);
D3DXVec3TransformCoord(&lefttop,&lefttop,&matView);
D3DXVec3TransformCoord(&lefttop,&lefttop,&matProj);
D3DXVec3TransformCoord(&rightbottom,&rightbottom,&matView);
D3DXVec3TransformCoord(&rightbottom,&rightbottom,&matProj);
if(pos.x>lefttop.x&&pos.y>lefttop.y&&pos.x<rightbottom.x&&pos.y<rightbottom.y)return 1;
return 0; }