平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……
@xoyojank
果然是xml,之前没打开看,里面记录的是可以些需要灵活配置的模型数据,如绑点attachment.
@herb
受教了,还真没用过ICU,查了下是开源的.
Nope,glPixelZoom是作用于OpenGL图像数据管道的,对glDrawPixels,glBitmap有作用,对渲染成像管道是没有作用的.
re: 3D世界寻路问题的解决方案 linghuye 2009-06-24 20:30
"呵呵,我们就在做全3D的游戏"?

Really,你们的所谓3D,作了镜头与物理世界的碰撞反应了吗?作了人物在不规则mesh上使用键盘操作行走并能不受阻地智能Slide寻路(把模型当地形采样取高度的不算,用鼠标寻路避开物理碰撞的不算)了吗?镜头有没被策划逼得固定了视角?服务器做了3D世界寻路吗(还是仍然是著名的正方格A*)?有像WoW一样复杂的室内场景吗(还是直接拿个模型就当场景)?室内场景有可以行走的多层楼吗?室外有很高的山峰吗(像WoW那样的,因为这涉及到LOD远景裁剪和是否八叉图的选择),做了无接缝世界了吗?

凡有多项妥协者,都是伪3D,正如我之前天真地以为自己真在做3D.如果都是,敢问你用的哪款国外的引擎?
re: 程序的工作态度 linghuye 2009-05-11 09:12
在公司,再向上发展只能去兼做管理,但我厌恶做管理.我只想管好自己,我不想去管理别人.我这种情绪在我刚入行时就很强烈了(看我博客的公告),发现钱多了,这种感觉还是时不时地涌出来.
re: ScaleformDemo linghuye 2009-02-09 14:46
非常抱歉啊,Scaleform小气的很,用的试用版的SDK. 运行时把系统时间改到2008年11月去,程序退出时会自动恢复,不是木马的.

不过最后还是发现,缺少gfxlinecse.txt文件也运行不了. :(
只能在装了Scaleform SDK的机器上跑.
re: WoW Physics in Havok[未登录] linghuye 2008-09-04 21:54
我以为山洞应该做成一个室内场景.
re: WoW Physics in Havok[未登录] linghuye 2008-09-03 19:18
实际上我没去解决这个问题. 因为WoW的世界范围是[-17066.56, 17066.56],所以一开始我就设置这个broadphase size,避开了这个问题.

如果是绝对意义上的无限大的地图,我会考虑用多个物理hkpWorld解决,这样连整个物理世界也是动态生成的,这时人物在物理世界边界时需要将人物从一个世界搬迁到另一个中.
re: WoW Physics in Havok linghuye 2008-08-13 10:41
代码中addCharacter函数中,最后应该把rigidBody加入到physicsworld,加phantom是没用的.
re: WoW Physics in Havok linghuye 2008-08-09 19:56
嘿嘿,实际效果上,用于物理的高度图只用2个面也足够精确了.Wow的4个面是用来作渲染LOD的,物理上不需要那么精确.
re: WoW Physics in Havok linghuye 2008-08-08 09:15
Havok不会对地面高度图遍历所有的面,因为从接口上看,是用的hkpSampledHeightFieldShape,这个接口的虚方法getHeightAt索取高度信息.由于Sampled这种采样性质是不需要遍历所有面的.
这些文档中也有说明,这种实现另一个好处是省内存.
In Havok Physics, heightfields are a highly CPU and memory optimized way to do collision detection between displacement map landscapes and normal shapes.

我测试实例中传了3x3个MapArea,9*16*16=2304个MapTile.对于MMORPG这种物理环境,主要是耗内存,对Havok这种商业级的物理引擎的效率影响不是太大.
re: 优化!优化!优化! linghuye 2008-03-21 09:55
1.算出Matrix,再分解为T/R/S,分解的消耗是不是大了点?
2.层级处理后得到的是所有父节点和自身的矩阵乘积, 即M =V * M1 * M2 * M3,每个M为 Scale * Rotate * Position, 最后再分解M得出的S,R,P是没有含义的,不能认为就是最终骨骼的S,R,P,这个我实践过的.
3.正是因为矩阵差异太大,可能导致blend错误,所以要在每个层级上做blend,因为一旦矩阵累积了每个层级,差异很大.
4.IK我也只是略知皮毛,记得IK要逆向调整每个层级的骨骼以达到正确的姿势.
5.WoW中最频繁的blend,发生在行进间转身的那个动作,特别是左右跑互换时上半身的过渡, 平滑得让人看不出它做了过渡,但实际上资源中是没有转身这个独立动画的. 这个是我一直想达到的效果.
re: 优化!优化!优化! linghuye 2008-03-18 22:34
1.预处理层级骨骼计算确实会省很多,但是
a.预处理层级计算后,得到的是一整个Matrix,丢失了平移/旋转/缩放信息,运动帧间只能完成简单的矩阵线性插值,不能做平滑的quat rotation slerp,和Squad淡入淡出过渡, 而且实现动作间过渡时会很容易出错.
b.不做层级处理,不能完成Inverse Kinematics处理,还有其他一些骨骼技术.
所以对于一个正式的完善的骨骼系统,层次关系难以预处理.

2.这种说法来源于
http://ati.amd.com/developer/gdc/2006/GDC06-Advanced_D3D_Tutorial_Day-Huddy-Optimization.pdf

http://download.nvidia.com/developer/presentations/GDC_2004/Dx9Optimization.pdf

dx sdk中所说的开销仅是DirectX Runtime的开销,要实际考量一个API,还要考虑它的driver overhead和hardware overhead.
呵呵,那就不要点两次嘛.
放在这里主要是为了方便我自己下载测试的.有兴趣的也可以测试下,进入后直接敲F5, 然后F3 -> 菜单View -> Graphic Options -> 切换到DirectX模式.
看看在你机器上是OpenGL快,还是DirectX快. OpenGL的shader,机器如果支持GLSL 1.2的应该会更快一丁点.
re: 优化!优化!优化! linghuye 2008-03-09 22:49
1.你说的好像是标准实现, 不明白作了哪些预处理.
2.根据我的测试实践,SetVertexShaderConst在骨骼运动计算整个流程中可以占到30-50%,设置GPU寄存器是很慢的, DX API消耗Top5, 这也是ATI的官方文档提出的. Geometry Instance技术,为了避开设置寄存器,而使用设置顶点数据流的方法,把这些矩阵状态作为顶点流数据传入shader.
re: 我的儿子 linghuye 2008-03-09 22:25
呵呵,当然要他对计算机编程有兴趣了. 我也说了,"好好学习,努力学习总是不错的...",不要断章取义嘛. 不过确实,作父母,这内心是比较的矛盾,没有那么理直气壮,总要找些冠冕的理由,咳,谁让咱肩负着伟大的5000年华夏文化传承.

很久未见,有妻有儿,都好. 你呢,啥时娶妻生子,体会一下这种心情(定居国外,娶洋妞可不算唵).
re: 纹理投射Demo linghuye 2008-01-11 13:27
测试过,文件是好的,大概需要用最新的WinRar解压.
re: 多线程,害死人. linghuye 2007-07-06 18:16
D3DCREATE_MULTITHREADED是不好的,然历史累积原因,要改亦不可能了.
毕竟瓶颈是在IO,而不是在3D资源的创建上。
re: 优雅的代码 linghuye 2007-06-28 22:33
我一样厌恶微软,但100倍这种说法有失客观.
我相信M$的程序为了产品的易用性,稳定性为牺牲优雅的代码,不断加入难看的补丁,我们开发游戏的也一样。
我对开源操作系统和M$系统的看法是:不具可比性.
开源系统的应用者大部分是专业人士,他们知道什么可以做什么不能作,M$的应用者是傻瓜用户,傻瓜用户无论作出多低级的事,系统也要健壮的生存.
开源系统之所以表现的健壮我以为是因为,使用者的层次不同,使用的人数不同.
嗯,我的方法就是模仿<3D Game Engine Design>的做法,不过WildMagic按左手坐标系实现,而我习惯右手坐标系.
而且按之前的设计,传入的数据完全按右手坐标的习惯,所以测试没有问题.
re: 过年奖励给自己买书 linghuye 2007-03-13 23:22
2006年刚出的,没发现电子版.
re: MyWarCraftStudio 0.10.6337 linghuye 2007-03-13 23:15
re: WoW's ROAM Terrain linghuye 2007-01-29 19:40
估计改动会很大.
魔兽的地形文件有地形顶点,直接就可以用来做碰撞检测.地形上的建筑不属于地形.
只论地面上的影子的话是一层lightmap,这个在我实现过程中被证明是这样的.

从资源上看,lightmap依附在一个地形块(含8*8更小块)的结构上,每单位块地面有一张以单bit进行压缩的lightmap,所以比较小. 而且没有影子的地面块就没有这个数据.

人物走到阴影中,身上出现的光影效果,甚至是带镂空的光影效果,我想是拿lightmap作 project texture 来用,因为毕竟是静态的光照,不大可能是其他高级的阴影技术, 但我没有实现,不敢保证, 接下来准备实现这种效果,很cool.
yes,地形层上的静态lightmap(or shadow map)
M2 format changes frequently after tbc patch 2.0, I plan to update a new version after the formal publish of WoW tbc. But for now there is no way to view the new m2s after patch 2.0,s sorry for that.
But as I know, WowModelViewer will update a new version soon to support those new m2s.
re: 游戏编程书籍 linghuye 2006-12-17 01:30
Geometric.Tools.for.Computer.Graphics,中译本<计算机图形学几何工具算法详解>,翻译质量不错.
re: 游戏编程书籍 linghuye 2006-12-14 09:15
呵呵,我开始学3D时花了将近700RMB在网上代购买回一本<Realtime Rendering>,不过好书给人的提高是无价的,现在把本钱都赚回来了.:)
都载下来了,这周就去打印了看,Game Physics是本经典好书.
还搜到以前没见过的:
Non-Photorealistic Computer Graphics,
3D.Game.Engine.Programming(不同与Design和Architecture)
Advanced.Animation.and.Rendering.Techniques
AI.Game.Engine.Programming
Computer.Animation.-.Algorithms.and.Techniques
Geometric.Tools.for.Computer.Graphics
re: MaNGOS工程概介 linghuye 2006-12-11 18:21
在公司用确实很快,可惜家里只有两台老弱残机.:(
re: Burning Crusade Closed Beta linghuye 2006-12-11 10:46
so I am waiting for the final stable tbc version.
re: 身处何乡 linghuye 2006-12-10 21:43
Cool!
re: 身处何乡 linghuye 2006-12-06 21:22
sector数据结构里有个标识该sector为outer sector,关联到该sector的portal为地形与建筑相连的portal.

SOLID: http://www.dtecta.com/
re: 身处何乡 linghuye 2006-12-06 09:14
1.碰撞检测算法,我一开始也按网络上的一些简单的算法自己来写,后来发现那些所谓偷巧的方法实在太垃圾,不完善,不实用,不solid,不专业.所以我的意思是不要自己写,用现成的库,比如Solid,或者用PhyX物理引擎.

2.Entry_XXX意指Portal的那些相关信息,何必执着于一个名字.

3.Wow不用Bsp来做渲染,不需要node bounding box来做层次视锥裁减.书上的理论和实际有很大的差别.大部分网上的bsp文章都过时了.
re: Portal Engine 学习与设计 linghuye 2006-11-23 09:10
依平面方程 D 为 fDist.
re: MaNGOS工程概介 linghuye 2006-11-07 09:06
re: 身处何乡 linghuye 2006-10-22 08:45
看来是用的方式一,这个Entry_XXX关键信息很重要,真是感谢指教.
re: Burning Crusade Closed Beta linghuye 2006-10-17 21:04
Diamond Viper 550 uses RIVA TNT!

Could you please create a sub-directory named "Logs" in the main program directory, and run the program, and then send me the GLRealtimeRender_XXX.log file?
It contain useful infos for old graphic cards.
re: Burning Crusade Closed Beta linghuye 2006-10-17 09:03
Which mpq file did you open? Which wow client did you use, current/TBC alpha/TBC beta? What is your locale, enUS, koKR, enGB? What is your graphic card?

The new version will try to load the new TBC's dbc files in enUS\locale_enUS.mpq first, and load texture from common.mpq/expansion.MPQ.mpq first, it run well in my mathine.
re: Burning Crusade Closed Beta linghuye 2006-10-16 09:39
it should work for all
re: Wow Burning Crusade linghuye 2006-10-12 22:12
downloading and testing, very slowly...
你的速度真快啊
re: ffmpeg的编译 linghuye 2006-04-17 10:58
喜欢这种专注技术的论坛,以后会多逛逛.
怎么个不能用,我没发现问题,说具体点好不?
re: PolygonSoup碰撞检测学习笔记 linghuye 2006-03-30 15:38
在Emule上搜索可以找到,扫描版.
Download here:

http://www.cnitblog.com/Files/linghuye/DBCTools.rar

NOTE: the author is noisehole.