网络游戏脚本编程.ppt 免费在线阅读
网络游戏脚本编程 专业教程 北京汇众益智科技有限公司 什么是拾取,拾取能做什么? * 鼠标拾取 拾取操作指当我们在屏幕上用鼠标点击某个图元,应用程序能返回该图元的一个标志或某些相关信息。 有这些信息就得到该图元的控制权,我们可以删除,可以编辑,可以任意对待该图元 拾取操作的原理 拾取算法的思想很简单:得到鼠标点击处的屏幕坐标,通过投影矩阵和观察矩阵把该坐标转换为通过视点和鼠标点击点的一条射入场景的光线,该光线如果与场景模型的三角形相交(本文只处理三角形图元),则获取该相交三角形的信息。 从数学角度来看,我们只要得到射线的方向矢量和射线的出射点,我们就具备了判断射线与空间一个三角面是否相交的条件 坐标系变换 d3d坐标系转换的流程,如下图: 所以我们要通过一系列的反变换,得到我们关心的值在世界坐标中的表示。 确定鼠标选取点的屏幕坐标 Windows API提供了函数来完成屏幕坐标的获取,使用GetCursorPos获得鼠标指针位置,然后再利用ScreenToClient转换到客户区坐标系(以窗口视区左上角为坐标原点),设该坐标为(POINT screenPt)。 得到该点在投影空间内的表示 透视投影变换,就是view 空间到project 空间的带透视性质的坐标变换 变换之后必须保证view空间中所有处于可视范围内的点统统落在project空间的可视区域内 透视投影内部原理 view空间中的可见范围就是常说的视平截体(view frustum)。如图, view空间中可视范围 从view空间的x正半轴看过去是下图这个样子: 上下边界为y = ± z * tan(fov/2) project空间的可视范围。这个空间应当是处于我们所见到的屏幕上。实际上将屏幕表面视作project空间的xoy平面,再加一条垂直屏幕向里的z轴,这样就构成了我们想要的坐标系。现在我们可以用视口(view port)的大小来描述这个可视范围了。比如说全屏幕640*480的分辨率,原点在屏幕中心,那我们得到的可视区域为一个长方体,它如下图所示: 将project空间的可视范围定义为x∈[-1,1], y∈[-1,1], z∈[0,1]的一个立方体 从project空间的x正半轴看看我们的视区范围: 这个区域的上下边界为y’=±1 ProjMatrix = = 根据比例关系,screenPt与投影空间上的点projPt之间的关系为 假设图形程序窗口的宽为screenWidth,高为screenHeight, projPt.x = (screenPt.x-screenWidth/2)/screenWidth*2; projPt.y = (screenPt.y-screenHeight/2)/screenHeight*2; projPt.z =0;(实际该值可任意取,不影响最终结果。为了处理简单,我们取改值为0,表示该点取在近剪切面上) 得到projPt后,我们需要做的是把该点坐标从投影空间转换到观察空间(view space), 根据透视投影的定义,可假设点(projPt.x,projPt.y,projPt.z) 对应的其次坐标为 (projPt.x*projPt.w,projPt.y*projPt.w,projPt.z*projPt.w,projPt.w) 我们可以通过?GetTransform(D3DTS_PROJECTION,?ProjMatrix)函数获得投影矩阵ProjMatrix,则根据观察空间到投影空间的变换关系则 (projPt.x*projPt.w,projPt.y*projPt.w,projPt.z*projPt.w,projPt.w) ?= (viewPt.x,viewPt.y,viewPt.z, 1)*pProjMatrx; ProjMatrix = = 所以, (projPt.x*projPt.w,projPt.y*projPt.w,projPt.z*projPt.w,projPt.w) = ( viewPt.x*ProjMatrix._m11, viewPt.y*ProjMatrix._m22,viewPt.z*Q-QZn,viewPt.z) ? 所以 projPt.x*projPt.w = viewPt.x*ProjMatrix._m11 projPt.y*projPt.w = viewPt.y*ProjMatrix._m22 projPt.z*projPt.w = viewPt.z*Q-QZn (注意projPt.z = 0) projPt.w = viewPt.z; 解得 viewPt.x = projPt.x*Zn/ ProjMatrix._m11; viewPt.y = pro
相关知识
写游戏脚本需要学哪种编程?
脚本级网络游戏编程
网络游戏编程教程
中国网络游戏产业分析及未来战略(PPT
网络游戏编程教程的目录
手机游戏脚本用什么编程好
《游戏开发介绍》PPT课件.ppt
游戏脚本编程:从零基础到游戏大神的进阶之路
多人在线游戏架构实战:基于C++的分布式游戏编程
游戏脚本编程介绍:学什么、有什么用、如何培训
推荐资讯
- 1老六爱找茬美女的烦恼怎么过- 5060
- 2博德之门3黄金雏龙法杖怎么得 4897
- 3《大侠立志传》剿灭摸金门任务 4354
- 4代号破晓官方正版角色介绍 4055
- 5赛马娘锻炼到底的伙伴支援卡事 3838
- 6闪烁之光11月兑换码大全20 3810
- 7爆梗找茬王厕所特工怎么通关- 3579
- 8原神原海异种刷怪路线-原神原 3573
- 9《我的世界》领地删除指令是什 3519
- 10原神开局星落湖怎么出去 原神 3455