以下是i3D的一篇Unity教程中的笔记.
i3D的这篇教程是 i3D.Next-Gen.Game.Development.with.unity3d.Volume.I对Unity有兴趣的CGer可能有帮助.
i3D的这篇教程中的模型比例有问题,先根据Unity官方帮助文档中的内容说一下:
Unity官方帮助文档中认为,模型的缩放尺寸是非常重要的。特别是涉及到一些物理特效模拟的时候。 Unity认为,在理想状态下,不要更改模型的Transforms Scale值,保持Scale值为(1,1,1)。(这样的话,模型在 maya中制作时需要freeze,使缩放值为(1,1,1))。原因是,额外的缩放数值会增加不必要的计算量。
Unity首先推荐模型在创建时使用真实尺寸。其次是在Unity的Import Settings中更改尺寸。Unity在进行场景优化时会根据物体尺寸来进行优化。
当在Unity中把一个物体parent到另外一个物体时,最好父级物体的坐标值是(0,0,0),否则之后会遇到不少头痛问题。 Unity的粒子系统不受Transforms Scale值的影响。 物体的不均匀缩放值在Parent后会产生不良后果(这个情况和Maya中是一样的)
Unity中,1个单位尺寸代表1米。即在Unity中创建一个Cube的尺寸是1x1x1米大小。 Unity推荐把人的身高定为大约2个Unity单位高度(2米)。 在Max中,只要正确设置单位尺寸(系统单位尺寸设置以及输出时单位尺寸设置)成厘米后,得到的效果是一致的。 在unity中导入fbx文件模型、贴图,不建议直接在项目文件夹中操作。
首先是更改材质,diffuse或者diffuse+specular,看你是否需要高光。 高光贴图需要做进color贴图的alpha通道里,这点比较特别。 Unity可以直接根据color贴图的灰度图充当specular贴图,一般的场景这么做足可应付。 Normal贴图有时不能直接正确识别,Unity可以修正。
灯光方面pro版本的Unity可以有实时阴影,free版本没有。 阴影可以实时阴影和bake到贴图上的阴影混合使用(Lightmap),帮助文档里有例子。
Lighting Edit> Project Setting>Quality Editor Quality : Fantastic Edit> Rendering Setting Ambient Light 会影响全局暗部色调,设置成全黑,接下来将手动打光模拟Ambient Light. 添加预设Skybox天空效果 Asset->Import Package->Skyboxes 添加Unity自带Skybox素材 1.选择Edit->Render Settings from the menu bar. 2.拖动Skybox材质球到Inspector面板中的Skybox Material栏中.
Lightmapping烘焙Unity自带Beast插件(也有其他游戏引擎集成这个插件) 多边形物体需要2套UVset 一套UVset用来显示普通贴图 另一套UVset用来显示Lightmap 在导入Unity的Fbx多边形属性中勾选"Generate Lightmap UVs" Window>Lightmapping Ctrl+A全选所有物体 Static 勾选,表示物体不会移动
小窗口中(Scene窗口中右下角的Lightmap Display窗口),勾选Show Resolution,物体表面可看到黑白 格子,通过Lightmapping窗口>Object>Scale In Lightmap 值来改变需要设置的Lightmap精度 远方的物体用最低的Lightmap精度,画面中能近距离看到的物体用较高的Lightmap精度(很重要的设置)
Lightmapping窗口>Bake [Mode] : Dual Lightma ps 创建2套Lightmap,分别对应摄像机远/近距离 [Quality]: High [Use in forward rend]: [Bounces] : 1 反射次数 (预览1,正式2) [Sky Light Intensity] : (预览0.5,正式0.75 。0表示无天光) [Bounce Boost] : (预览1,正式1.5)提高场景中间接照明光量,如地面上反弹到墙壁上的光 [Bounce Intensity] : (预览1,正式)对间接灯光的强度进行乘积操作(乘以此值后的亮度) [Final Gather Rays] : (预览设置32,正式500,默认1000过高) [Contrast Threshold] : 0.05 默认 (让表面光滑,较高的值会减少细节,类似PS中的高斯模糊) [Interpolation] : 0 默认 正式0.2 (FG产生的颜色如何进行插值运算,0线形运算,1较高级的算法) [Interpolation Points] : 15 默认 正式20 (值越高越光滑,相应的丢失细节) [Ambient Occlusion] : 多边形的交接处、凹处产生阴影。与灯光信息无关。 [Resolution] : 全局分辨率,最影响渲染时间的设置。预览设置10,正式不要超过20 Lightmapping窗口>Maps
Array Size: 全部场景产生的LightMap数量,范围0-254 选择屋顶,勾选Static, Scale In Lightmap : 0 参与Lightmap运算,但是不产生Lightmap贴图。
关于透明贴图, 在Unity中,透明材质球不接受阴影。 使用Transparent/Cutout/Bumped Diffuse材质,透明通道稍差但是接收阴影。 同时对其Cast Shadow去勾,以便不产生阴影。 Alpha cutoff 最大 以较低的预览参数设置,bake全体Lightmap。然后检查有无灯光过亮。 选中灯光,可在Lightmapping窗口中单独设置灯光参数。根据需要跟改Bounce Intensity值,调整光源。 把SunLight的Bounce Intensity: 2 (正式) Ambient Occlusion:1 Max Distance:3 Contrast:0.5 选择天窗,Emmit Light: 50 模拟更真实的天窗强烈照射效果。
优化没必要显示影子的物体就不需要设置影子 实时渲染速度最快的材质: Vertexlit 能合并的多边形尽量合并 能共用材质球的尽量共用
速度各内置材质球计算速度由低到高排列: Unlit. VertexLit. Diffuse. Normal mapped. Specular. Normal Mapped Specular. Parallax Normal mapped. Parallax Normal Mapped Specular Rendering Paths Comparison Deferred Lighting Forward Rendering Vertex Lit
特性 Per-pixel lighting (normal maps, light cookies) Yes Yes - Realtime shadows Yes 1 Directional Light - Dual Lightmaps Yes - - Depth&Normals Buffers Yes Additional render passes - Soft Particles Yes - - Semitransparent objects - Yes Yes Anti-Aliasing - Yes Yes Light Culling Masks Limited Yes Yes Lighting Fidelity All per-pixel Some per-pixel All per-vertex Performance Cost of a per-pixel Light Number of pixels it illuminates Number of pixels * Number of objects it illuminates
平台支持 PC (Windows/Mac) Shader Model 3.0+ Shader Model 2.0+ Anything Mobile (iOS/Android) - OpenGL ES 2.0 OpenGL ES 2.0 & 1.1 Consoles 360, PS3 360, PS3
|