在DirectX中将屏幕坐标转成空间坐标
123456789101112131415点p =光标。位置;
p =这个。PointToClient(p);
向量3 v1 =新向量3(p.X,p.Y,0f);
v1。取消项目(这个。GraphicDevice.Viewport。图形设备.转换.投影,
这个。GraphicDevice.Transform.View,this。graphic device . transform . world);
向量3 v2 =新向量3(p.X,p.Y,1f);
v2。取消项目(这个。GraphicDevice.Viewport。图形设备.转换.投影,
这个。GraphicDevice.Transform.View,this。graphic device . transform . world);
float fParam = (v1。Y - 0f) / (v1。Y - v2。y);
vector 3 v3 = new vector 3();
v3。X = v1。X - (v1。X - v2。x)* fParam;
v3。y = 0;
v3。Z = v1。Z - (v1。Z - v2。z)* fParam;
先算出z = 0和z = 1两种情况下的空点,即切割的最近距离和最远距离。然后根据Y=f3DY(我这里已经直接把f3DY设置为0了,见第10行代码),我们可以截一次,按比例得到x和z。
V3是计算出的坐标。
位律师回复
0条评论