我所遭遇过的游戏中间件---SpeedTree
我所遭遇过的游戏中间件---SpeedTree
SpeedTree是一个专门用于渲染植被的中间件,并提供了一套完善的植物编辑工具。在它官方提供的DEMO中,你会看到高度逼真的树木和植物,在风的影响下树影婆娑,十分精美.感觉它的Shader写到了极致,让我有种叹为观止的感觉.SpeedTree有两大特点,其一就是牛B的Shader,可以渲染出美伦美奂的植物,其二是高效的场景植被管理引擎,可以高效地对场景植物进行剔除.
先说其Shader.看过网上几篇关于SpeedTree的文章,将其图形数据分成三类,树干,树枝,树叶.而实际上应该为四类,其树叶有两种,一种是Mesh树叶,另一种是Billboard树叶.每一种图形数据对应其自己的顶点格式和渲染Shader.
再说其植被管理引擎,可以管理几十万棵树,效率非常高.不过游戏都会有自己的场景模型管理模块,SpeedTree的植被管理与引擎自身的场景管理有重复的地方,所以有些引擎会不使用SpeedTree的植被管理.此外,使用植被管理时需要注意:(1)启动剔除引擎时,不能对树进行编辑,即:添加,删除,修改.(2)关闭剔除引擎时后,如果当前场景中的树很多,最好删除一定的树,否则运算量太大可能会造成崩溃.
SpeedTree对LOD的处理也是非常值得称道,其Shader处理会考虑到两级LOD间的过度,其顶点数据中会记录两级LOD的位置,从而实现非常平稳地过度.因此当在SpeedTree的场景中移动时,你会发现其植物十分自然地发生变化,由清晰的图形变成Billboard.
我是09年开始搞SpeedTree的,时间有些久了,很多细节都已经记不清了.当时写过两个SpeedTree的模块,一个是4.0版本的,一个是5.1版本的.然而这两个模块都没有最终用在游戏中.因为最终的使用方案是,我又写一个模型转化工具,将SpeedTree的SRT文件转化成自己定义的文件格式,然后改写其Shader.这样根本就没有必要花钱买SpeedTree的授权,这种事情叫盗版也好,叫破解也好,反正在中国大家也习以为常.SRT模型转化时还有个没解决的问题:没办法使用其提供的接口对文件数据进行缩放.如果缩放了,SpeedTree受风的影响会不正确.不过这也不是什么大问题,在场景编辑时再对模型进行缩放也一样,无非美术编辑时麻烦了一点.
我所遭遇过的游戏中间件---SpeedTree的更多相关文章
- 我所遭遇过的游戏中间件---nvDXTLib
我所遭遇过的游戏中间件---nvDXTLib nvDXTLib是Nvidia提供的一套用于DXT纹理压缩SDK.接口十分简洁,就是提供了几个纹理压缩的函数,其中我使用最多的函数是: DXTLIB_AP ...
- 我所遭遇过的游戏中间件---HumanIK
我所遭遇过的游戏中间件---HumanIK Autodesk HumanIK游戏中间件,为游戏创建更加可信.真实的角色动画.该中间件的全身逆向运动(FBIK)系统支持角色真实地与所在环境及其它角色进行 ...
- 我所遭遇过的游戏中间件--Kynapse
我所遭遇过的游戏中间件--Kynapse Autodesk Kynapse游戏中间件是一款面向游戏开发.非玩家控制角色实时模拟的领先的人工智能解决方案.Kynapse具有先进的路径查找功能,比如三维路 ...
- 我所遭遇过的游戏中间件--Scaleform
我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...
- 我所遭遇过的游戏中间件---Redux
我所遭遇过的游戏中间件---Redux 一.关于Redux Substance Redux 是一款纹理处理软件加中间件,专门用于纹理生成和压缩.具其用户指南介绍,它能够对纹理集进行优化,可以将现有压缩 ...
- 我所遭遇过的游戏中间件--Apex
我所遭遇过的游戏中间件--Apex Apex是PhysX的扩展中间件,它是在PhysX的基础上封装了一层.用于实现布料,粒子,破碎这三种物理效果.我只研究其布料处理.使用Apex做物理最大的好处是:它 ...
- 我所遭遇过的游戏中间件--PhysX
我所遭遇过的游戏中间件--PhysX PhysX现在是Nvidia的物理中间件.其特点是简练且功能强大.当我最初拿到PHYSX的SDK时,就发现这个物理中间件比Havok要小很多,但该有的功能都有,甚 ...
- 我所遭遇过的游戏中间件--Havok
我所遭遇过的游戏中间件--Havok Havok是我接触的第一款游戏中间件,那是在五,六年前,我刚刚毕业,对游戏开发还是个菜鸟.我记得先是对游戏场景中的地形和其他静态物体生成刚体,然后做角色的Ragd ...
- 我所遭遇过的游戏中间件--FlashOcx
使用Flash做游戏界面的另一种方式是通过Abode提供flash.ocx处理Flash界面.将Flash图像通过GDI绘制出来后,再将图像数据拷贝到一个D3D的纹理结构中,最后由引擎的D3D接口进行 ...
随机推荐
- hive将数据导致本地磁盘
hive -e "select * from wyp" >> local/wyp.txt 其中我更喜欢弄好临时表,然后交互式查询时让相关人员自己去按逻辑处理数据,最 ...
- shell如何向python传递参数,shell如何接受python的返回值
1.shell如何向python传递参数 shell脚本 python $sendmailCommandPath $optDate python脚本 lastDateFormat = sys.argv ...
- poj1703 Find them, Catch them(带权并查集)
题目链接 http://poj.org/problem?id=1703 题意 有两个帮派:龙帮和蛇帮,两个帮派共有n个人(编号1~n),输入m组数据,每组数据为D [a][b]或A [a][b],D[ ...
- 洛谷P1527 [国家集训队] 矩阵乘法 [整体二分,二维树状数组]
题目传送门 矩阵乘法 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入格式: 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N* ...
- django中两张表有外键关系的相互查找方法,自定义json编码方法
两张通过外键联系的表,如何在一张表上根据另一张表上的属性查找满足条件的对象集? 平常查找表中数据的条件是python中已有的数据类型,通过名字可以直接查找.如果条件是表中外键列所对应表的某一列,该如何 ...
- BZOJ.3611.[HEOI2014]大工程(虚树 树形DP)
题目链接 要求的和.最大值.最小值好像都可以通过O(n)的树形DP做,总询问点数<=2n. 于是建虚树就可以了.具体DP见DP()函数,维护三个值sum[],mx[],mn[]. sum[]要开 ...
- Codeforces Beta Round #97 (Div. 1) B. Rectangle and Square 暴力
B. Rectangle and Square 题目连接: http://codeforces.com/contest/135/problem/B Description Little Petya v ...
- Codeforces Beta Round #11 A. Increasing Sequence 贪心
A. Increasing Sequence 题目连接: http://www.codeforces.com/contest/11/problem/A Description A sequence a ...
- 我们为什么需要Map-Reduce?
在讨论我们是否真的需要Map-Reduce这一分布式计算技术之前,我们先面对一个问题,这可以为我们讨论这个问题提供一个直观的背景. 问题 我们先从最直接和直观的方式出发,来尝试解决这个问题: 先伪一下 ...
- 解决mysql控制台查询数据乱码的问题,有图有真相
在mysql 控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码. set names gbk; 那么查询出来的数据则为汉字