Unity3d 经验小结
- 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
Unity3d 经验小结的更多相关文章
- DevExpress使用教程:GridView经验小结(官方中文文献经典资料技巧)
		
下面是笔者自己总结的使用 DevExpress Gridview 的一些经验小结,分享给大家: 1.去除 GridView 头上的 "Drag a column header here to ...
 - 基于webmagic的爬虫项目经验小结
		
大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一.为什么选择webmagic? 说实话,开源的爬虫框架已经很多了,有各种语言(比如:python.j ...
 - IE8+兼容经验小结
		
最近一段时间,我都使用Flask+Bootstrap3的框架组合进行开发.本文就是在这种技术组合下,分享IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的 ...
 - WP小游戏产品海外发行经验小结
		
在群里和大家聊天的时候,大家最多抱怨的就是国内WP份额低,辛辛苦苦做的APP变现困难.我和大家一样,兼职做一些开发,不过我的APP主要面向的是海外市场,从5月份上线到现在不到两个月的时间,没有花费一分 ...
 - 关于Socket的经验小结
		
前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...
 - 1300多万条数据30G论坛大数据优化实战经验小结
		
最近由于某大型网站社区论坛运行效率比较低用户反馈论坛有些卡需要对系统进行优化,论坛性能影响了公司的形象还有网站的流量,当然这也会影响到公司的收入,而且后期还需要长期维护网站的社区论坛服务. 1:并发访 ...
 - (转载)IE8+兼容经验小结
		
本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...
 - Nginx 经验小结
		
chmod 777 永远不要 使用 777,有时候可以懒惰的解决权限问题, 但是它同样也表示你没有线索去解决权限问题,你只是在碰运气. 你应该检查整个路径的权限,并思考发生了什么事情. 把 root ...
 - AppCode 中开发 Mac OS X 应用程序或共享库的经验小结
		
AppCode 是 JetBrains 公司出品的用于开发 Mac OS X 及 iOS 应用程序的集成开发环境,只能运行于 Mac OS X 操作系统环境下,作为 XCode 的高级替代品.由于其基 ...
 
随机推荐
- IT男的”幸福”生活"续7
			
哇,兄弟们的热情真牛X的高呀!!! 在这里谢谢大家了.同时祝大家元宵节快乐,幸福美好.呵呵. 续7准备开始了… ….. 是什么样的事困扰她了… 躺在床上我,一直回想着MM,今天的情绪状态. 分析一下: ...
 - C#6.0特性(快来围观)
			
说明一下,很多博友一进来就认为仅仅是语法糖,C#语法的更新,代表着它的进步,语法糖是为了让我们更好的实现语句和功能,增加了易读性和易用性.而且它的每次进步,也会给我们带来新的支持和改进.比如C#(4. ...
 - [BZOJ 2186][Sdoi2008]沙拉公主的困惑(欧拉函数)
			
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2186 分析: 就是要求1~n!中与m!互质的数的个数 首先m!以内的就是φ(m!) 关 ...
 - “耐撕”团队 2016.04.05 站立会议
			
1. 时间: 20:10--20:25 共计15分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...
 - java.io.stream
			
1. package com.io.Stream; import java.io.*; public class NyFileInputStream1 { /** * 读取文件的streamIO * ...
 - iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
 - Java算法-hash算法
			
Hash ,一般翻译做“ 散列” ,也有直接音译为“ 哈希” 的,就是把任意长度的输入(又叫做预映射, pre-image ),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩 ...
 - VB中的属性、方法和事件概念解析
			
Visual Basic 语言中的所有对象都有它们自己的属性.方法和事件,其中包括窗体和控件.可以将属性视为对象的特性,将方法视为对象的操作,而将事件视为对象的响应. 日常生活中的对象(如氦气球)也具 ...
 - 【HDU 2577】How to Type
			
题意 (我做了这题才知道caps lock 锁定大小写后,按一下shift键可以输入相反的大小写.) 这题就是给你只有大小写字母的字符串,求最少多少次按键盘.最后caps lock 必须是关闭的. 分 ...
 - 【HDU 1003】 Max Sum
			
题 题意 需要在o(n)时间内,求最大连续的子序列的和,及其起点和终点. 分析 一种方法是一边读,一边维护最小的前缀和 s[i] ,然后不断更新 ans = max(ans,s[j] - s[i]), ...