3d Game Walkman

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

2011年6月15日

最近的工作状态

     摘要: 最近的工作状态 转向移动平台的3d开发  阅读全文

posted @ 2011-06-15 00:20 李侃 阅读(3031) | 评论 (2)编辑 收藏

2010年11月11日

有意义的光棍节,场景同屏500人,稳定在90帧以上达成,特发图庆祝


没时间搞渲染,渲染效果还很搓

不过大批量骨骼带多动作绘制的效率算是上去了,发图庆祝一下

大致的方法是:
编写MAX插件导出
使用多线程去计算骨骼动作(把max关键帧计算矩阵的方法模拟出来,并且套用上了,在其他核开线程去算,现在CPU都是多核的,不去利用岂不是浪费资源?)
骨骼逻辑分组,按逻辑组播放不同的动画集,动作自动融合
GPU进行顶点blend
然后按部件和材质分组进行批量绘制,由于用了dx10的drawinstance,效率还不错,绘制上不是瓶颈

而且已经支持了蒙皮模型的多部件拆分,换装,再完善一下就能做些更复杂的东西了

posted @ 2010-11-11 23:06 李侃 阅读(3372) | 评论 (7)编辑 收藏

2010年10月17日

最近在对骨骼导出插件进行重构,有了一些新的感悟

     摘要: 关于骨骼矩阵的导出冗余数据的精简方法、其实做过蒙皮的人应该会知道,一套完整的骨骼动画的数据量最大的并不是顶点的数据,那个数量基本固定的,不会随动作的增长而变大,真正庞大的是骨骼的关键帧导出数据,本文讨论的是如何按线性差值压缩精简骨骼矩阵,特提出一套思路和算法
  阅读全文

posted @ 2010-10-17 23:51 李侃 阅读(3571) | 评论 (7)编辑 收藏

2010年6月17日

闲暇之余决定把个人引擎进行第二次重构采用Dx10

时光荏苒,Dx9已经是廉颇老矣,如果不是xp最高只能支持到9,估计早已淡出市场

很多人说Dx10是个过渡产品,其实回头看看Dx10出来也有5年了,只是受xp拖累没有普及而已,我到觉得Dx10并非过渡产品,而且在很长一段时间内会存在甚至普及,只是可能没有Dx9那么长命罢了,现在看看Dx9和Dx10的差异还是相当大的,可以说把内部结构做的更严密,更规整,去掉了盘根错结的东西,写dx10的程序比dx9会严谨很多,抛弃固定管线,状态管理也做的更科学,某些方面甚至简化了一些,比如万恶的设备恢复问题,而Dx11和Dx10却十分的接近,现在win7已经普及了,而且近两年来随便一块破显卡都能支持SM4.0啦,但dx11要普及最少还要再等几年,主要是硬件还没跟上,普及需要时间。

所以目前dx11也只能尝鲜,dx10可以说时机成熟了

如今我尝试把过去写过的东西全部翻新一便,好好重构一次,也许会有巨大的收获吧。

posted @ 2010-06-17 11:48 李侃 阅读(1429) | 评论 (0)编辑 收藏

2010年3月21日

好久没有更新了,写写最近这一周的个人日志,关于3d场景水体渲染的

很长时间没有维护自己的博客了,真是不好意思,其实我这个博客最大的目的就是记录一些日记,对自己也是一个激励,这几个月工作很忙,个人引擎也渐渐段段搁置了一些时间,不过依然还在保持更新,最近这段时间加入了小植物的instancing,场景能根据chunk自动打包相同贴图的模型,而且支持子贴图(也就是一张大贴图中的一小部分作为植物的贴图,有点像小时候玩的画片一样),这样基本场景的所有地表植物,一两张贴图就足够了,效率非常高,另外就是好好把水重新构建了一下,水面本身的渲染就用了instancing技术,一次行渲染所有被裁减出来的水面块,水面用的两张NormalMap纹理动画,加入了水面的反射和折射(两个MRT),反射多渲染了一次场景,加入了菲涅尔反射加强的光的反色饱和度,折射做了一次backbuffer的拷贝然后加入了normalmap纹理坐标的扰动,两个表面分别在水面的视椎和水底对称视椎投影到水面上进行渲染,总的来说效率还是过的去的,这个功能有一小部分参照了Nv的例子,好在周末两天就搞定了,并没有想象中那么困难,另外还有水底的光效(实际上只是个雾效)这是凭想象做的,有时间的话还要加上godlight以及水底地面对水面光影的反射效果,那样才更好看,现在这个样子不算特别好看,但也是马马虎虎了,好大堆参数还要单独做个水面板进行场景水体的参数配置,现在暂时没那么多时间了,不过还是老规矩,贴张图看看分别是水面和水底的


posted @ 2010-03-21 22:34 李侃 阅读(3302) | 评论 (8)编辑 收藏

2009年12月1日

Early ZBuffer [转]

     摘要:   阅读全文

posted @ 2009-12-01 14:20 李侃 阅读(2525) | 评论 (0)编辑 收藏

2009年10月11日

开始重构

对写过的东西来个彻底的整理,留精华,去糟粕,也许几千行的代码最后浓缩成几百行
我需要的是更清晰的结构,更好的可读性,更好的扩展性。

一个好的结构要壮大,必然要经历这个过程,有的部分金雕细琢,有的部分大刀阔斧推到重来,有的部分直接抛弃
这是个痛苦而快乐的过程,已经开始有一段时间了,随之精简有效的东西也慢慢呈现出来了。。。

posted @ 2009-10-11 10:38 李侃 阅读(1465) | 评论 (4)编辑 收藏

2009年9月14日

渲染方面加了一个bloom效果

我的显示部分做的还不够强,这段时间实在是忙,为换工作的事忙和了半个月
总算如愿以偿,去了国内一家大型网游公司,马上需要接受更多新的挑战,现在手头许多工作只能暂时搁置

上个月做了一个bloom的效果,用的postprocess,backbuffer交换链方式的,后处理技术来实现的,这样的特效几乎是现在游戏的的标配了,实现技术有点老套,但即使是一点点改变,前后的效果也是大有改观啊,基本的思路可以去看SDK 里面的原版的例子,里面不止是bloom的特效,还有很多别的效果,这个例子非常值得推敲,用到的技术可以说是dx9里面非常成熟的一项技术了。

目前还没有加入HDRLight的光效,这个效果和bloom类似,但似乎比bloom更好,看什么时候有时间再弄个HDR版本的出来玩玩,下面是用了以后,和用之前的场景渲染效果对比,感觉光线柔和了一些,不会那么生硬,我觉得可以使用这个技术做出些别的特效,比如偏蓝,偏黄,老照片,黑白的特效,有点类似photoshop滤镜了,但是据说有些玩家看多了就很讨厌这样的效果,可能口味不同,因人而异吧

posted @ 2009-09-14 22:17 李侃 阅读(3763) | 评论 (3)编辑 收藏

2009年8月7日

浅谈状态机FSM设计方法

     摘要: 看了一晚上FSM方面的资料,颇有收获,写写感悟:

状态机,在游戏里面是非常重要的,最简单的状态机,莫过于

switch()
case 1:
if(not 反复执行状态1)
进入1状态前要做的准备

进入1状态的过程

if(not 反复执行状态1)
离开状态1的过程

case2:
...  阅读全文

posted @ 2009-08-07 17:30 李侃 阅读(5946) | 评论 (5)编辑 收藏

2009年7月31日

游戏引擎方面,这一个月的进展日志

1。完成了全场景的路径搜索算法,这个算法比较复杂,不同于普通的A*算法,我采用的两次搜索,首先是地形矩阵压缩路径的粗搜索,然后是相邻tile块之间的细节分布式搜索的方式,也就是压缩路径搜索出来的是细节搜索的向导,这样可以实现路径的动态搜索,而且路径查找基本是个常量,超大地形搜索也不是问题。

2。完成了全场景小地图编辑器的功能,小地图能子在场景编辑器中按tile进行正交投影的自动拍摄,拍摄输出的图片能进行局部的拼合与拆分,还有打包,这充分考虑到美工对小地图进行二次编辑美化的需要

3。把全场景搜索功能和小地图进行了整合,鼠标点击场景或小地图均能实现自动寻路径

4。月末开始进行脚本引擎的接入,之前有研究过LUA,但由于种种原因最终确认选择了 C++ boost.python 导出的方式调用脚本,已经实现了stl<实体> 容器和python脚本之间的自由调用和通讯模块,接下来,开始整合一部分FSM有限状态机的模块,第一个切入点就是人物的攻击移动等等所有动作相应模块,准备写个人物动作调用的脚本,融入状态机模式,让这个胶水模块充分发挥它的威力。

posted @ 2009-07-31 17:47 李侃 阅读(2916) | 评论 (3)编辑 收藏