Unproject()メソッドで、オブジェクトのローカル空間に座標変換します。
public static Vector3 Unproject(
    Vector3 v,          // 近平面/遠平面のベクトル
    object viewport,    //
    Matrix projection,  //
    Matrix view,        //
    Matrix world        // 対象とするオブジェクトの行列
    );
			Mesh.Intersect()メソッドで、オブジェクト (メッシュ) と交差した情報を取得できます。
public bool Intersect(
    Vector3 rayPos,                  // レイの原点
    Vector3 rayDir,                  // レイの方向
    ref IntersectInformation allHits // 最も近くで交差したオブジェクトの情報
    );
			Mesh.Intersectメソッド | MSDN
			交差したオブジェクトの情報は引数のallHitsに格納され、それは
| プロパティ | |
|---|---|
| Dist | レイに沿った交点までの距離 | 
| FaceIndex | レイと交差した三角形のインデックス | 
| U | レイと交差した三角形の重心座標 | 
| V | レイと交差した三角形の重心座標 | 
のような内容です。
Matrix world = meshMatrix * currentMatrix; Matrix projection = device.Transform.Projection; Matrix view = device.Transform.View; Vector3 near = new Vector3( point.X, point.Y, viewport.MinZ ); Vector3 far = new Vector3( point.X, point.Y, viewport.MaxZ ); // 近平面をオブジェクトのローカル空間に座標変換する Vector3 vNear = Vector3.Unproject( near, viewport, projection, view, world ); // 遠平面をオブジェクトのローカル空間に座標変換する Vector3 vFar = Vector3.Unproject( far, viewport, projection, view, world ); // ローカル空間でのレイの方向ベクトルを生成する Vector3 rayDirection = Vector3.Normalize( vFar - vNear ); IntersectInformation closestHit; if( mesh.Intersect( vNear, rayDirection, out closestHit ) ) { // オブジェクトとレイが交差した }