- UID
- 4387374
- 主题
- 0
- 阅读权限
- 20
- 帖子
- 272
- 精华
- 0
- 积分
- 136
- 金钱
- 2576
- 荣誉
- 0
- 人气
- 2
- 在线时间
- 1393 小时
- 评议
- 0
- 帖子
- 272
- 精华
- 0
- 积分
- 136
- 金钱
- 2576
- 荣誉
- 0
- 人气
- 2
- 评议
- 0
|
哎…深夜加完班好不容易要休息…看到你的高见,本来挺感兴趣,点进你的<即时渲染的运行效率--实时vs静态>链接,不看则以,一看发现完全是不知所谓东西!
你一开场就说shadow map是“画在贴图上的阴影.一般由预烘培软件烘培在游戏中的贴图上”属于“静态阴影”,这个就算是阐述混淆吧,后来再出现一个shadow mapping,这次你把它归类为“非实时动态阴影”——我是第一次看到可以这样整,我已经被你吸引进去了。
不晓得你是什么专业的,如果你也算有三维基础或是经过CG正规学习,那我敢说你绝对是学艺不精——之前有个写寒霜引擎的应该就是你的马甲,我不晓得你是以什么标准来校对那些专业词汇的,感觉通篇下来都是你自己发明的词汇,不但煞有介事,还把一些概念张冠李戴,完全是外行充内行!
先不说细节,看看涉及你的主题,有大部分内容我跟不上节奏,很多技术我没有专门去接触过,所以我没有能力去确认你写得对不对,但与我接轨的专业部分你几乎都是乱写的,所以我推测你其它内容都是根据一些断续的网上资料加上错误的理解来写的,感觉就是东一句西一句地编造,炫耀单词量,其实术业有专攻,你能真正理解其中几项已经很不错了。
本来不想多说什么,但我觉得搞技术是很严谨的事情,你拿些误导性的东西出来浮夸真的很恶心,实在忍不住出来修理几句——
就说你开篇的那个shadow map,其实和shadow mapping是一个东西的两种称呼而已,行业里就叫做阴影贴图,阴影映射这个直译是很少用的。这是一种最基本最常用的阴影类型,原理是用像素图来描绘阴影,由像素尺寸(精度)和边缘采样(模糊)两个值,来决定阴影质量与效果,当质量低时你很容易看出它的本体就是马赛克。它的特点是速度快,局限性是精确度不高,以及不能识别透明对象。以上绝对是最基本的灯光知识了,让大家去看看你怎么写的吧。
你把shadow map理解为烘焙贴图,可见你是从字面上去理解导致的错误,也许你可以说你就是指烘焙贴图,或者是虚幻引擎的那种预处理阴影到贴图的概念,但显然不是。
Soft Shadow 软阴影,是比shadow map更高级更耗时的阴影技术,也是最常见的阴影类型之一,类似于计算多个shadow map来模拟阴影边缘的模糊有远近区别的细节,这是模拟散光(漫射光)的一种有效手段。虽然不是也什么新东西,但用在游戏里是最近几年的事情。
以上是灯光最主要的两种投影类型,常常配合使用。
另外,还有有个顶点阴影技术,这是一个比较原始但仍然有效的制作阴影的手段,但它不属于灯光的投影类型,因为它并不是灯光投出来的阴影,而是利用模型本身的顶点来得到的阴影,原理是模型顶点之间的颜色渐变,说白了就是画在顶点上的颜色。这一直是做场景阴影的重要辅助手段,在建筑交叉的角落经常用到,特点是速度快,简单有效,局限性是依赖网格结构(提高了建模要求),和烘焙贴图一样是贴图的概念,这个两个才是真正的静态阴影。
那些什么自投影、实时投影和以上根本就不是一个概念,而是一种属性和系统,这些概念被你交叉穿插,可见你对阴影技术进行分类的逻辑都是错的。
被你称为“条状阴影”的现象,是透光材质(也叫3S、次表面散射)的一个典型现象,只要不用透光材质就不会有这种问题——这跟shadow map和Soft Shadow的阴影方式有关,也跟这种shader本身的原理有关,通过提高阴影的采样可以得到缓解,并不是什么“阴影距离BUG”,我不知道这跟DX9模式有什么关系。要理解出现这种情况的原因,要先理解阴影贴图和透光材质的工作原理。
“阴影距离BUG”被你张冠李戴的内容是阴影偏移,是阴影技术的一种弥补性参数,主要是为了解决面对光源方向的对象底部阴影露出来的问题,阴影大多数时候都默认启用了一个偏移值,导致影子有些偏移,对象显得浮空。
接着是动力学部分(不得不佩服你的知识面之广)——布料,被你称为“是一种刚体学的变种”,这个绝对是个创意。
而我知道的是:动力学系统(比如著名的havok),必须具备刚体、软体(你说是塑性变形是这个吗)、绳索、布料、流体(包括布娃娃和毛发等)等基本组件,它们是并列的关系,是一个完整配套的系统。考虑到机能和制作成本,一个游戏里面并不会全部采用。
它们都是基于顶点来作为碰撞基础的,而不是“必须要基于顶点动画(vertex animation)的”这种谬论,我都能想象你如何去读那些相关资料的。
接着你所说布料模拟再加曲面细分其实根本不是常规做法,因为不支持曲面细分的引擎占多数,而且也能解决精度问题,那就是动力学替身加高模加蒙皮的做法,头发就是这么做的,游戏里叫物理代理。
而你说的流体,是动力学中最慢最容易出错的组件,目前在游戏里大面积使用是很不现实的事情。首先需要反复测试不说,放到游戏里面实时运算也极其容易出现错误,而且运算精度直接与消耗时间挂钩,所以很多是时候是预处理过的。这绝对是要谨慎使用的技术,一般只有少数、特定场合才会去使用。而比较成熟的做法是粒子系统加变形球来实现简单的流体。
最后是你关于灯光的阐述——
就凭你三句“常见的真光有 全局光,间接光照,光子反弹,容积光等等。”和“一般把光子反弹进行1次的叫做间接光照, 而多次的叫做光子反弹”和“间接光照,光子反弹,球谐散射,次表面散射,环境光遮蔽,全局光,自投射体积阴影等等都是光线追踪的一部分”——这些可以把同行震到太空。
先看看这些专业词汇的解释,我尽量通俗点,你可以把这些发到游戏或CG论坛校对:
全局光:简称GI,指的是一种拟真灯光系统,三维软件认为真实灯光环境由两组光组成,直接光(天空光、阳光、人工灯),还有间接光(对象身上的反弹光),两者共同构建的灯光环境才会比较真实。能同时模拟直接光和间接光的系统,就叫全局光系统。这项技术需要大量的预渲染时间,目前个别游戏引擎尝试在游戏中进行GI的实时运算,效果还不理想。
间接光照:GI系统的一个组成部分。一般把光源本身叫做直接光,直接光照射到其他对象上后,对象反弹的那些光叫做间接光。
光子反弹:间接光在对象与对象之间的反弹过程叫光子反弹。
容积光:也叫体积光,依附在一个光源上的大气特效。这个基本不属于灯光,是个光束特效,对场景照明没有实际效果。
Ray Racing 光线跟踪 :说复杂一点是计算你眼睛所看到的光线反射现象,其实在游戏里说白了就指一个内容:玻璃、金属、水面等对象的镜面反射效果,由于比较耗时,大多数时候这种镜面效果都用作假的方式代替的,叫做假反射。(另外,有一种阴影类型也叫光线跟踪阴影,是一种更精确但跟耗时的阴影。)
次表面散射:有时叫3S或半透明,都是一个意思,简单说就是透光效果,模拟皮肤和蜡烛、玉镯等对象的透光感。透光感常见的是作假的做法,在材质背光区动手脚,特点是速度快,缺点是阴影错误。真透光效果则能和灯光产生互动,但速度极慢。
曲面细分:说白了就是一种一下把模型变得很平滑的方法。虽然耗费性能,但对细化模型而言简单快捷,局限性是平滑效果没有什么控制性,对布线特殊的和结构复杂模型不适用。
……后面对贴图的理解很多都是错误的,比如一开始关于凹凸贴图“只能提供方块、三角、圆等规则形状凹凸”和法线贴图“能实现不规则图像的凹凸”就是非常离谱的说法——因为它们都不可能有这种奇怪的限制,而且要搞清楚这两个都是目前最实用的凹凸贴图类型,你不要轻视它们。这两个的主要区别在于凹凸效果和与灯光的关系。
……等等、等等。我实在不能再写了,本人为了更正你,字数已够重写一篇文章了,也没有时间去校正太多的错别字,恐怕各位看客都有了阅读困难,我也冷静下来了,在一个玩家论坛写这么多,作为一个严谨认真的人我真是太寂寞太无敌了,但我觉得你也是真正的无敌,几乎靠意淫也能写出字数更多的技术性文章。
其实如果你能把这种无敌的热情变成真正的实事求是,少点虚假,相信你还是能为中国的游戏事业作出真正的贡献的。
[ 本帖最后由 孤岛喂鸡 于 2010-8-14 04:10 编辑 ] |
|