crown20

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年10月23日

摘要: 引擎介绍:此引擎完全由本人在vs,D3D和stl基础上开发, 引擎包含图形库,物理库,纹理编辑器,模型编辑器,场景编辑器,文件打包工具6部分。图形库实现的技术包括:a)全局光照,局部光照,环境光照;b)静态与动态阴影;c)法向贴图与高光;d)动态水面,深度效果,以及水面的折射,倒影与高光;e)骨骼动画;f)体积光散射;g)雾化效果;h)地形纹理融合;j)动态云彩;k)视锥剔除;l)大场景分区域多线程动态无缝加载;物理库实现的技术:a)全3D碰撞蒙版生成;b)平滑的碰撞检测算法;c)3D A*寻路;纹理编辑器的功能包括:根据设置的参数与素材生成岩石、树皮、泥土、花草、云彩、枝叶、路面、水面、木头 阅读全文
posted @ 2013-10-23 20:12 crown20 阅读(2192) 评论(16) 推荐(10) 编辑

2011年10月21日

摘要: 由网格生成的碰撞边界,存在锯齿,当角色受到阻挡处于90度内角凹陷区那么就会被卡住,影响游戏手感,我采用一种判断周围网格的障碍情况自动生成平滑边界的方法 阅读全文
posted @ 2011-10-21 15:05 crown20 阅读(1381) 评论(1) 推荐(0) 编辑

2011年10月20日

摘要: 当场景的碰撞使用3D以后相关的寻路也应该具有3D寻路功能,由于引擎中的碰撞格分为多层,所以在开启一个节点的时候就需要将每一层进行判断,判断条件主要是2个a碰撞格不能为红色b高度差不能超过一定的范围,为了寻路更有效率,增加了一个高度方向的启发值,当两个节点在平面方向与目标距离相等,但高度方向有区别那么与目标高度相差较小的节点优先遍历,其它的过程与2D的a*寻路算法没什么区别。我的寻路算法中使用了二叉堆管理Open表,代码如下,供大家参考,SOpenMask是节点的结构定义,AddOpenMask函数功能是将一个节点放入Open表中,GetMinOpenMask函数是从Open表中取出具有最小权值的节点,上图是3d a*寻路算法的结果演示。 阅读全文
posted @ 2011-10-20 19:28 crown20 阅读(4132) 评论(0) 推荐(2) 编辑

2011年10月19日

摘要: 要想使用凹凸贴图,必须计算切线空间(纹理空间)的切线和副法线,否则不能正确的得到光照值,计算切线空间我使用的计算代码如下: 阅读全文
posted @ 2011-10-19 22:31 crown20 阅读(387) 评论(1) 推荐(0) 编辑

2011年10月14日

摘要: 碰撞检测是游戏引擎中最基本的功能,我的引擎中采用的方法是将场景分割为若干个小的方形格子,每个格子分为一个或多个的层,每层表示一个容纳空间,从而近似表示空间的障碍情况 阅读全文
posted @ 2011-10-14 21:20 crown20 阅读(319) 评论(0) 推荐(0) 编辑

2011年10月2日

摘要: 鼠标屏幕点选的实现方法 阅读全文
posted @ 2011-10-02 22:15 crown20 阅读(313) 评论(0) 推荐(0) 编辑

摘要: 我的游戏引擎的编辑器中有关编辑地形高度的2种方法 阅读全文
posted @ 2011-10-02 22:11 crown20 阅读(309) 评论(0) 推荐(0) 编辑

2011年9月24日

摘要: 一种不求交点确定直线与三角形是否相交的方法 阅读全文
posted @ 2011-09-24 22:30 crown20 阅读(663) 评论(0) 推荐(0) 编辑

2011年9月23日

摘要: 对于地形的纹理融合有很多方法,我使用的是一种利用顶点格式中添加纹理比重的方法实现的,有无需多次绘制地形和不需要地形纹理的Alph混合过程的两个优点,具体做法是在每个顶点中用4个浮点数分别表示4个纹理的比重,4个值的和为1.0f然后在像素着色过程根据比重融合相应的纹理,相关shader脚本部分如下 阅读全文
posted @ 2011-09-23 23:13 crown20 阅读(832) 评论(0) 推荐(0) 编辑