摘要:
引擎介绍:此引擎完全由本人在vs,D3D和stl基础上开发, 引擎包含图形库,物理库,纹理编辑器,模型编辑器,场景编辑器,文件打包工具6部分。图形库实现的技术包括:a)全局光照,局部光照,环境光照;b)静态与动态阴影;c)法向贴图与高光;d)动态水面,深度效果,以及水面的折射,倒影与高光;e)骨骼动画;f)体积光散射;g)雾化效果;h)地形纹理融合;j)动态云彩;k)视锥剔除;l)大场景分区域多线程动态无缝加载;物理库实现的技术:a)全3D碰撞蒙版生成;b)平滑的碰撞检测算法;c)3D A*寻路;纹理编辑器的功能包括:根据设置的参数与素材生成岩石、树皮、泥土、花草、云彩、枝叶、路面、水面、木头 阅读全文
摘要:
由网格生成的碰撞边界,存在锯齿,当角色受到阻挡处于90度内角凹陷区那么就会被卡住,影响游戏手感,我采用一种判断周围网格的障碍情况自动生成平滑边界的方法 阅读全文
摘要:
当场景的碰撞使用3D以后相关的寻路也应该具有3D寻路功能,由于引擎中的碰撞格分为多层,所以在开启一个节点的时候就需要将每一层进行判断,判断条件主要是2个a碰撞格不能为红色b高度差不能超过一定的范围,为了寻路更有效率,增加了一个高度方向的启发值,当两个节点在平面方向与目标距离相等,但高度方向有区别那么与目标高度相差较小的节点优先遍历,其它的过程与2D的a*寻路算法没什么区别。我的寻路算法中使用了二叉堆管理Open表,代码如下,供大家参考,SOpenMask是节点的结构定义,AddOpenMask函数功能是将一个节点放入Open表中,GetMinOpenMask函数是从Open表中取出具有最小权值的节点,上图是3d a*寻路算法的结果演示。 阅读全文
摘要:
要想使用凹凸贴图,必须计算切线空间(纹理空间)的切线和副法线,否则不能正确的得到光照值,计算切线空间我使用的计算代码如下: 阅读全文
摘要:
碰撞检测是游戏引擎中最基本的功能,我的引擎中采用的方法是将场景分割为若干个小的方形格子,每个格子分为一个或多个的层,每层表示一个容纳空间,从而近似表示空间的障碍情况 阅读全文
摘要:
我的游戏引擎的编辑器中有关编辑地形高度的2种方法 阅读全文
摘要:
一种不求交点确定直线与三角形是否相交的方法 阅读全文
摘要:
对于地形的纹理融合有很多方法,我使用的是一种利用顶点格式中添加纹理比重的方法实现的,有无需多次绘制地形和不需要地形纹理的Alph混合过程的两个优点,具体做法是在每个顶点中用4个浮点数分别表示4个纹理的比重,4个值的和为1.0f然后在像素着色过程根据比重融合相应的纹理,相关shader脚本部分如下 阅读全文