游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2795|回复: 5

如何在三维坐标下选取一个模型

[复制链接]

4

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-4-3 17:59:00 | 显示全部楼层 |阅读模式
        我知道有种射线法可以选取.但不知道应该是如何在DIRECTX怎么来做。各位大侠救命啊!
       我调入的是3DMAX的.x文件。不知道应该怎么样来选取!

4

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2006-4-4 08:19:00 | 显示全部楼层

Re:如何在三维坐标下选取一个模型

最简单的方法
你首先 可以 先对模型建立 包围球
然后获得屏幕的鼠标点击位置
将这个 mousePt转换为 在 投影面上的坐标
具体转化公式 proj_x=mousePt.x-0.5*viewPort.width;
proj_y=-0.5*mouse_pt.y+0.5*viewPort.height;
proj_z=0.5*viewPort.width*cot(fov_x/2);

这样 在观察坐标系下的 射线相当于 从原点 到(proj_x,proj_y,proj_z)

将物体的球心 变换到观察坐标系下 这样 就只是 射线和球的求交问题了

射线的参数方程 x=proj_x*t y=proj_y*t z=proj_Z*t
球的方程(x-a)*(x-a)+(y-b)*(y-b)+(z-c*)(z-c)=r*r;

现在只要联合求 看是否 t>0就好了

4

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2006-4-4 08:21:00 | 显示全部楼层

Re:如何在三维坐标下选取一个模型

注意 窗口的宽高比要和设置的照相机参数一致
另外 就是 viewPort的左上方要在原点

4

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2006-4-4 16:35:00 | 显示全部楼层

Re:如何在三维坐标下选取一个模型

好像不行啊 做不出来哟

4

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2006-4-5 11:06:00 | 显示全部楼层

Re:如何在三维坐标下选取一个模型

proj_y=-mouse_pt.y+0.5*viewPort.height;

4

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2006-4-5 11:07:00 | 显示全部楼层

Re:如何在三维坐标下选取一个模型

另外你的鼠标坐标 是不是相对于客户区的啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 02:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表