3d Game Walkman

3d图形渲染,网络引擎 — tonykee's Blog
随笔 - 45, 文章 - 0, 评论 - 309, 引用 - 0
数据加载中……

新加入了PSSM全场景阴影

这几天把场景的渲染进行了重构,把拣选出来的模型按类型进行了分组,然后安装组进行渲染,最大程度的减少了pass的数量,另外加入了全场景的PSSM (Parallel-Split Shadow Maps for Large-scale Virtual Environments),场景的视锥view分成了3个部分,每个部分是1024的shadowmap,对阴影进行了 3x3 PCF Filtering 的采样,锯齿感不那么强了,有了一定的优化,目前还没有加入高斯模糊,暂时不想再做更高的开销了,目前已经很好支持pssm和非pssm两种模式的渲染了,开关阴影都很自由,渲染效率基本满意。当然开和关阴影的效率差不多有40%的差异,这只是初略的测试,不过还有很多优化的地方,有些物体不需要影子,(比如花草的影子可以关闭,远距离树木关闭影子等等...优化)我想效率提升的余地还是很大的。

上个图看看效果

posted @ 2009-06-17 23:53 李侃 阅读(3600) | 评论 (11)编辑 收藏

今天找到一个不得不用deque的理由

     摘要:   阅读全文

posted @ 2009-05-24 13:25 李侃 阅读(8262) | 评论 (15)编辑 收藏

游戏资源在线更新的思路

总的来说,和JIT即时编译机制有相通之处,就是一个创建时间的比较

 

首先要明白:客户端的文件如果是最新的,那么创建时间肯定晚于服务器上文件的创建时间,反之客户端的文件就是旧的需要更新了,但是为了提高更新效率,并不是一个个和服务器上的文件做对比

而是建立一个文件列表索引文件,里面记录服务器上的“最新版”所有文件的创建时间,首先更新本地的索引文件,如果更新了,说明服务器上的文件列表有更新,然后和本地做对比,整理一份需要更新或新建的文件列表清单,然后主动连接服务器进行下载,全部完成以后,在索引文件进行记录,更新完一个就记录一个ok,这样方便“断点续传”,所有都更新完成,全部是ok了,就证明本地都是最新的了,不过这里面有个小问题是值得注意的,本地文件的创建时间不能是本地计算机的时间,应该下载完以后,修改成服务器的当前时间,(比如如果本地时间设置到了一年以前)那本地的列表可能永远都是旧的,每次都要更新,这是可怕的。

通过这个文件列表索引,能大大提高更新效率,而且也能做好版本的控制。

另外,更新服务器一般和游戏服务器分离,大致思路就是这样

打包和网络传输方面,自己封装一套序列化和反序列化的IO流协议就可以了,游戏里面这些都必须是最基本的功能了

当然,这套思路还有一些不完善的地方,比如更新正在运行的exe或一些内存保护的DLL,是比较麻烦的事情,需要尽量避免

posted @ 2009-05-08 23:27 李侃 阅读(2355) | 评论 (9)编辑 收藏

OO中对于23种设计模式的整理

     摘要:   阅读全文

posted @ 2009-04-22 01:00 李侃 阅读(7646) | 评论 (4)编辑 收藏

最新的进展,完成一些客户端的打怪的代码

主要是物理攻击,魔法攻击(火球术),怪物的被攻击后锁定攻击者自动追逐的简单AI(当然,还没完全完善),这些动作之间的协调性都经过了调试,利用我的骨骼插件加动作协调的代码基本都比较流畅了,这其中最难的其实还是动作之间的切换逻辑,还有物理碰撞部分,我整个碰撞大量使用到了physx里面的trigger shape,加入了攻击速度的运算,总之还是相当复杂的。下一步准备把这些动作的操作完全集成到lua脚本中去,用状态机来协调这写动作,实现动作控制部分与引擎的分离

posted @ 2009-03-18 13:48 李侃 阅读(2020) | 评论 (3)编辑 收藏

转载—网络游戏程序中解决加载卡顿的有效方法

     摘要:   阅读全文

posted @ 2009-02-28 13:47 李侃 阅读(1437) | 评论 (2)编辑 收藏

这半个月把所有的Max导出插件全部集成了,新增加了骨骼导出插件

这半个月的收获太大了,终于可以宣布抛弃其他任何的mesh格式了,因为我完全拥有了自己的mesh格式

主要分为三类
1.普通的mesh
2.室内Portal 场景
3.骨骼动画
这三个类别做了个简单的整合,过两天打算做成max工具面板的形式来导出,我想操作起来会更方便吧

开发体会:
---------------------------------------
这段时间全力在攻克骨骼动画的导出,可真是不容易啊,找了很多资料,可以所是摸着石头过河的
把x格式研究了一遍又一遍,max sdk 快翻烂了,max sdk里面的东西简直就可以“没有天理”来形容
国外的资料也查的快疯掉,好歹摸索出来了

目前的数据导出基本按照x格式的思路来组织,导出数据来计算的,抛弃了3dmax建议的骨骼空间本地顶点的插值计算方式
而采用了对原始蒙皮姿势的mesh顶点直接按骨骼权重的方式进行计算,就蒙皮姿势的数据就让我好找啊
原来还觉得x的格式太繁琐复杂,现在回头看看人家的数据组织的却是非常的合理,导出的不仅仅只是动画
还可以用程序来控制里面的骨骼的变动,和物理引擎的结合就方便了,比如做一个从悬崖上掉下来的人,这可不是动画能解决的啦
目前的结构应该可以完好的和物理引擎进行整合,这将做为以后的研究了

总体上来说我的骨骼插件主要用的是Physique modifer 来支持动画输出的
目前支持能 max原始的bone骨骼,以及bip骨骼
原始的bone骨骼的IK还没能导出,存在一点点误差,不过bip骨骼运用的更多一些,已经完美支持了
所以IK计算的导出暂时也就放放了 (主要是IK的有些太复杂,还没来得及搞懂 -_-! )
Floating 骨骼也暂时放放,要完善的内容其实也还是很多的

有了Physique 修改器的经验,我想做个blend之类的morph动画导出插件应该也没问题了,比如面部表情什么的,以后有需要的时候再继续吧

现在有了完整的一套自己的模型格式,以后要扩展,比如在mesh里加入粒子动画,甚至是逻辑数据都不成问题了,根据需要去扩展起来也相当容易了

明天打算把渲染的部分给搞出来,准备做个固定管线和   GPU  计算的 vertBlend shader   的两个版本出来,这个很easy,预计明天上午就搞出来

还是老规矩,上图





posted @ 2009-01-14 23:51 李侃 阅读(3929) | 评论 (3)编辑 收藏

新的进展,完成了室内场景的导出以及和室外场景的整合

新的进展,完成了室内场景的导出,以及和室外场景的整合,动态加载和剪裁,以及物理部分都搞好了

下一步,做室内物品的编辑和室内的寻路径算法

posted @ 2008-11-27 14:35 李侃 阅读(1673) | 评论 (4)编辑 收藏

今天对之前地形的贴图部分进行了完善,每个Tile可选6张纹理,可视化编辑方便极了

过去这贴图这块做的很草率,整个大地形只有6张纹理,太单调,这两天改成每个tile可选6张纹理,可视化编辑很方便,tile和tile衔接的不同通道纹理过渡都做的很自然了,主要是编辑器的编辑方式比较顺手,这样地貌就非常丰富了


上图

 

下一步,把室内和室外场景的编辑链接起来,而且全部应用物理引擎

posted @ 2008-10-25 10:25 李侃 阅读(3496) | 评论 (6)编辑 收藏

模版函数指针,C++委托的实现-原创

     摘要:   阅读全文

posted @ 2008-09-29 13:23 李侃 阅读(6728) | 评论 (14)编辑 收藏

仅列出标题
共5页: 1 2 3 4 5