- 2
- 0
- 约5.04千字
- 约 25页
- 2017-06-20 发布于四川
- 举报
抛砖引玉 抛砖引玉 抛砖引玉 抛砖引玉 专题7 选择场景中的角色 学习目标: 1. 学习怎样实现拾取算法,弄懂它如何工作,主要掌握如下四个方面: 1) 能够获得屏幕中的点S,找到它所对应的投影窗口上的点P. 2)掌握如何计算拾取射线. 3)熟练掌握将射线与模型变换到同一坐标系中 4)掌握如何判断物体与射线相交 2.能够在程序中灵活运用拾取(重点) 窗口的转换 拾取射线的计算 射线与物体坐标系的统一 射线与物体相交的计算 实例 窗口的转换 1.确定鼠标选取点的屏幕坐标 (使用Windows API中的GetCursorPos函数) 2.将屏幕上的点转换到透影窗口上 通过视口变换矩阵 可以将将投影窗口 上的点P(px,py,pz) 通过窗口变换产生 屏幕上的点S,同样 已知点S,通过逆变 换也就可以得到点P 拾取射线的计算 在观察坐标系中,拾取射线是一条从观察坐标原点出发的射线,所以我们只需要再确定一个该射线经过的点,就可以得到它在观察坐标系中的表示。假设我们要求的射线上的另外一点为该射线与透视投影平截头体近剪切面的交点,针对最普遍的透视投影而言,透视投影平截头体经投影变换后,变成半个立方体如图: 拾取射线的计算 投影坐标系以近剪切面中心为坐标原点,该立方体从z轴负向看过去与图形程序视区相对应,最终近剪切面(前剪切面)上一点与屏幕坐标之间的对应关系如下图所示: 拾取射线的计算 py = (sy-sHeight/2)/sHeight*2; (公式2) pz =0;(实际该值可任意取,不影响最终结果。为了处理简单,我们取改值为0,表示该点取在近剪切面上)得到projPt后,我们需要做的是把该点坐标从投影空间转换到观察空间(ViewSpace),根据透视投影的定义,可假设点(px,py,pz)对应的齐次坐标为 (px*pw,py*pw,pz*pw,pw)我们可以通过 GetTransform( D3DTS_PROJECTION, proj)函数获得投影矩阵proj; 拾取射线的代码实现 struct Ray { D3DXVECTOR3 _origin; D3DXVECTOR3 _direction; }; Ray CalcPickingRay(int x, int y) { float px = 0.0f; float py = 0.0f; D3DVIEWPORT9 vp; g_pD3DDevice-GetViewport(vp); D3DXMATRIX proj; g_pD3DDevice-GetTransform(D3DTS_PROJECTION, proj); px = ((( 2.0f*sx) / vp.Width) - 1.0f) / proj(0, 0); py = (((-2.0f*sy) / vp.Height) + 1.0f) / proj(1, 1); Ray ray; ray._origin = D3DXVECTOR3(0.0f, 0.0f, 0.0f); ray._direction = D3DXVECTOR3(px, py, 1.0f); return ray; } 统一射线与物体坐标系 我们前面所计算出来的拾取射线是在视图空间中描述的.为了完成相交计算我们还需要将物体与射线放到同一坐标系中. 统一射线与物体坐标系 void TransformRay(Ray* ray, D3DXMATRIX* T) { // transform the rays origin, w = 1. D3DXVec3TransformCoord( ray-_origin, ray-_origin, T); // transform the rays direction, w = 0. D3DXVec3TransformNormal( ray-_direction, ray-_direction, T); // normalize the direction D3DXVec3Normalize(ray-_direction, ray-_direction); } 射线与物体的相交计算 方法1:利用D3D提供的扩展函数D3DXIntersect 射线与物体的相交计算 lpMesh指向一个ID3DXBaseMesh的对象,最简单的方式是从.x文件获得,描述了要进行相交检测的三角面元集合的信息,具体规范参阅direct9 SDK pRayPos 指向射线发出点 pRayDir 指向前面我们辛辛苦苦求出的射线方向的向量 pHit 当检测到相交图元时,指向一个true,不与
您可能关注的文档
- 三角形的特性(xiugai)1234.ppt
- 三语《礼物》(第一课时).ppt
- 三金检验机介绍资料.ppt
- 上海后滩公园案例分析.ppt
- 上海宝山通河社区发展规划2001.ppt
- 上海巴黎春天外广场简介2013.4.15.ppt
- 上海市小学数学编写组.ppt
- 上海汤始管桩工艺及设备参数表.ppt
- 上海海事毕业论文指导.ppt
- 上海海大图书馆CAMIO(艺术博物馆在线)数据库使用指南.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 高等学校中医临床教学基地教学工作水平评估指标体系与标准.pdf
- 2022届高考物理一轮复习图像经典100题.pdf VIP
- 新能源汽车电气技术 配套课件.pptx
- 2025年高考语文备考之300个文言实词汇编(含课内句子).pdf VIP
- DB11∕T2293-2024住宅工程质量品质提升技术标准.pdf VIP
- Marantz马兰士家庭影院 AV 擴音機 SR8012 SR8012 Quick Start Guide English说明书用户手册.pdf
- 人教八上:专题六 无刻度直尺作图(含解析).docx VIP
- 2023年江西省中考语文试卷及答案解析.pdf VIP
- 2025年山东劳动职业技术学院高职单招笔试语文试题库含答案解析(5套共100道单选合辑).docx VIP
- 2025-2026学年七年级英语春季开学第一课 课件:马踏新春,趣学英语(全国通用版).pptx
原创力文档

文档评论(0)