游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: pzh508

有谁看过D3D的Pick例子?不怎么懂啊,那位大哥指点一下

[复制链接]

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2005-2-25 23:43:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2008-5-6 21:29:00 | 显示全部楼层

Re:有谁看过D3D的Pick例子?不怎么懂啊,那位大哥指点一下

juanahx: Re:有谁看过D3D的Pick例子?不怎么懂啊,那位大哥指点一下

vPickRayDir的坐标应该是(x,y,z,1)吧?
所以求逆这步为什么不是下面这样:
vPickRayDir.x  = v.x*m._11 +...


因为vPickRayDir是vTemp转换到物体空间后与摄像机原点vPickRayOrig(物体空间)的差,而vPickRayOrig=(m._41,m._42,m._43,1),故求vPickRayDir时各个分量要与vPickRayOrig相减,所以是:
vPickRayDir.x  = v.x*m._11 + v.y*m._21 + v.z*m._31 + m._41 - vPickRayOrig.x;
vPickRayDir.y  = v.x*m._12 + v.y*m._22 + v.z*m._32 + m._42 - vPickRayOrig.y;
vPickRayDir.z  = v.x*m._13 + v.y*m._23 + v.z*m._33 + m._43 - vPickRayOrig.z;
于是:
vPickRayDir.x  = v.x*m._11 + v.y*m._21 + v.z*m._31;
vPickRayDir.y  = v.x*m._12 + v.y*m._22 + v.z*m._32;
vPickRayDir.z  = v.x*m._13 + v.y*m._23 + v.z*m._33;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 14:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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