zoukankan      html  css  js  c++  java
  • i3D的一篇Unity教程中的笔记

    原地址:http://blog.sina.com.cn/s/blog_72b936d80100wwej.html

    以下是i3D的一篇Unity教程中的笔记.

    i3D的这篇教程是[i3D.Next-Gen.Game.Development.with.Unity3D.Volume.I]
    对Unity有兴趣的CGer可能有帮助.

    ----------------------------------------------------------------
    Fbx、贴图导入Unity时的注意事项:

    在导出Fbx之前,Maya中已经对物体连接了正确的贴图,并且贴图文件名不能更改。
    把Fbx和贴图放在同一文件夹内,直接把此文件加拖入Unity内。此时Diffuse贴图应能自动识别。

    此时,对贴图修改后,在Unity中更新贴图(删除老贴图,导入新贴图,并保持命名,路经一致),模型能够自动更新。

    假如Unity中删除贴图,关闭Unity,再打开Unity,导入之前删除的贴图,模型不会自动更新贴图。


    ------------------------------------------------------

    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中,只要正确设置单位尺寸(系统单位尺寸设置以及输出时单位尺寸设置)成厘米后,得到的效果是一致的。


    经常有人说模型从maya导入到max中或者模型从max导入到maya之后模型的尺寸会变掉.其实这个就是软件系统内部的单位精度设置不统一的问题,max中默认是英寸(或英尺?), maya中默认是cm(厘米),统一尺寸之后任意来回互导理论上是没问题的.实际操作之后发现obj没问题,fbx有问题. 不解...

    ------------------------------------------------------
    在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栏中.
    -----------------------------------------------------------

    17_Lightmapping_Part01

    Unity自带Beast插件(也有其他游戏引擎集成这个插件)

    多边形物体需要2套UVset
    一套UVset用来显示普通贴图
    另一套UVset用来显示Lightmap
    在倒入Unity的Fbx多边形属性中勾选"Generate Lightmap UVs"
    方法:"Project"面板中选中模型组,"Inspector"面板中找到"FBXImporter"选项,勾选"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 Lightmaps 创建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 模拟更真实的天窗强烈照射效果。

    ------------------------------
    OPtimization Techniques

    Per object shadow casting/receiving  没必要显示影子的物体就不需要设置影子
    Shader complexity:
     - shader type
     - vertex vs. pixel shaders
    实时渲染速度最快的材质: Vertexlit

    Light Linking
    Polygon/Traingle count
    Combine Objects 能合并的多边形尽量合并
    Share Materials 能共用材质球的尽量共用


    速度


    各内置材质球计算速度由低到高排列:

    • 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
    Features      
    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 -
    Platform Support      
    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
  • 相关阅读:
    初尝2D骨骼动画编辑工具SPINE,并into Unity3D
    Unity3D优化总结(一)
    ARPG游戏打击感相关的技术简单总结
    总结一下一般游戏中3D模型各种勾边方法遇到的工程性问题
    多次被坑了后,重温设计模式原则
    unity shader序列帧动画代码,顺便吐槽一下unity shader系统
    暗黑三泛光算法研究
    《全民无双》锁链刀光程序生成算法,即U3D——刀光轨迹插件的改进
    Low-level Thinking in High-level Shading Languages
    python实现智能语音天气预报
  • 原文地址:https://www.cnblogs.com/123ing/p/3703974.html
Copyright © 2011-2022 走看看