首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

跪求 D3D 鼠标选中的模型鼠标控制移动的代码解决办法

2012-03-12 
跪求 D3D 鼠标选中的模型鼠标控制移动的代码刚学DirectX,跪求,知道这边全是高手,现在可是鼠标选中模型。可

跪求 D3D 鼠标选中的模型鼠标控制移动的代码
刚学DirectX,跪求,知道这边全是高手,现在可是鼠标选中模型。可是不知道怎么用鼠标控制它一定
之前看过人人家的帖子,但是都是高手的思路。没看明白。米代码
小弟跪求代码一段
这个是鼠标选中模型的C#代码段:

C# code
private Matrix meshPosition;private Mesh meshObj;private void panel1_MouseMove(object sender, MouseEventArgs e)        { //计算摄像机投影窗口上对应的点击位置坐标            Vector3 SVector = new Vector3();            SVector.X = 2 * (float)e.X / this.panel1.ClientSize.Width - 1;            SVector.Y = -2 * (float)e.Y / this.panel1.ClientSize.Height + 1;            SVector.Z = 1.0f / (float)Math.Tan(Math.PI / 8);            //视图矩阵            Matrix viewMatrix = device.Transform.View;            viewMatrix.Invert();//计算视图矩阵的逆矩阵            //射线位置            Vector3 rayPos = Vector3.TransformCoordinate(SVector, viewMatrix);            //射线方向            Vector3 rayDir = Vector3.Subtract(rayPos, CamPostion);            //碰撞检测                        //将模型的世界矩阵进行逆变换            Matrix inverseWorld = Matrix.Invert(meshPosition);            Vector3 localRayPos = Vector3.TransformCoordinate(rayPos, inverseWorld);            Vector3 localRayDir = Vector3.TransformNormal(rayDir, inverseWorld);            bool result = meshObj.Intersect(localRayPos, localRayDir);


选中后。如何用鼠标的坐标转化成模型坐标
就是最后我怎么才能把e.X和E.Y转换后赋给:meshPosition
望高手写一段。谢谢了。


[解决办法]
DX SDK里只有选取的代码.

关于移动模型, 楼主可以参考3DS MAX里的移动模型方法, XYZ三个方向移动.

还有一种就是平面法. 假设楼主是在做游戏的地图编辑器, 地面就是一个平面. 你可以用求交点法移动平面. 楼主可以自己想象一下, 鼠标射线跟地面的焦点, 作为模型的移动位置.

还可以假想一张平行于摄像机的平面, 其他的同上. 这种平面法是视角相关的, 即视角不同移动的位置也不同

热点排行