- 用户指南
- Components
- 寻路
- 动画组件
- 资源组件
- 音频组件(AudioComponent)
- 音频侦听器(AudioListener)
- 音频源(AudioSource)
- 音频过滤器(AudioFilter)(仅限专业版)
- 混响区域(ReverbZone)
- 麦克风(Microphone)
- 物理组件(PhysicsComponent)
- 箱体碰撞体(BoxCollider)
- 胶囊碰撞体(CapsuleCollider)
- 角色控制器(CharacterController)
- 角色关节(CharacterJoint)
- 可配置关节(ConfigurableJoint)
- 恒定力(ConstantForce)
- 固定关节(FixedJoint)
- 铰链关节(HingeJoint)
- 网格碰撞体(MeshCollider)
- 物理材质(PhysicsMaterial)
- 刚体(Rigidbody)
- (SphereCollider)
- 弹簧关节(SpringJoint)
- 交互布(InteractiveCloth)
- 蒙皮布(SkinnedCloth)
- 车轮碰撞体(WheelCollider)
- 游戏对象(GameObject)
- 图像效果(ImageEffectScripts)
- 高光溢出和镜头光晕(BloomandLensFlare)
- 模糊(Blur)
- 相机运动模糊(MotionBlur)
- 颜色修正曲线(ColorCorrectionCurve)
- 颜色修正(ColorCorrection)
- 颜色修正查找纹理(ColorCorrectionLookupTexture)
- 对比度增强(ContrastEnhance)
- 对比度拉伸(ContrastStretch)
- 起皱(Crease)
- 视野深度(DepthofField)3.4
- 视野深度(DepthofField)
- 边缘检测(EdgeDetection)
- 鱼眼(Fisheye)
- 全局雾(GlobalFog)
- 发光(Glow)
- 灰度(Grayscale)
- 运动模糊(MotionBlur)
- 噪波和颗粒(NoiseAndGrain)
- 噪波(Noise)
- 屏幕叠加(ScreenOverlay)
- 棕褐色调(SepiaTone)
- 边缘检测效应
- 阳光照射(SunShaft)
- 屏幕空间环境光遮蔽(SSAO)(ScreenSpaceAmbientOcclusion(SSAO))
- 倾斜位移(TiltShift)
- 色调映射(Tonemapping)
- 旋转(Twirl)
- 渐晕(Vignetting)(和色差(ChromaticAberration))
- 状态同步详细信息
- 旋涡
- 设置管理器(SettingsManager)
- 网格组件(MeshComponents)
- 网络组
- 效果
- 渲染组件
- 变换组件(TransformComponent)
- UnityGUI组
- 向导
- 地形引擎指南(TerrainEngineGuide)
- 树木创建器指南
- 动画视图指南
- GUI脚本指南
- 网络参考指南
- 移动设备上的网络连接
- 高级网络概念
- Unity中的网络元素
- RPC详细信息
- NetworkLevelLoading
- 主服务器
- 最小化网络带宽
- 社交API
- 内置着色器指南
- Unity的后台渲染
- 着色器参考
- ShaderLab语法:Shader
- ShaderLab语法:Properties
- ShaderLab语法:子着色器(SubShader)
- ShaderLab语法:Pass
- ShaderLabsyntax:Color,Material,Lighting
- ShaderLab语法:剔除和深度测试(Culling&DepthTesting)
- ShaderLab语法:纹理组合器(TextureCombiners)
- ShaderLab语法:雾(Fog)
- ShaderLab语法:Alpha测试(Alphatesting)
- ShaderLab语法:混合(Blending)
- ShaderLab语法:通道标记(PassTags)
- ShaderLab语法:名称(Name)
- ShaderLab语法:绑定通道(BindChannels)
- ShaderLab语法:使用通道(UsePass)
- ShaderLab语法:GrabPass
- ShaderLab语法:子着色器标记(SubShaderTags)
- ShaderLab语法:回退(Fallback)
- ShaderLab语法:自定义编辑器(CustomEditor)
- ShaderLab语法:其他命令
- ShaderLab语法:Pass
- 高级ShaderLab主题
- ShaderLab内置值
- 其他
- 网络视图
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Mecanim 动画系统
- 动画状态机
- 混合树 (Blend Tree)
- 在 Mecanim 中使用动画曲线 (Animation Curves)(仅限专业版 (Pro))
- 循环动画片段
- Animation State Machine Preview (solo and mute)
- 动画参数
- 旧动画系统
- 使用类人动画
- 动画层
- 资源导入与创建
- 音轨模块
- 减少文件大小
- 光照贴图 UV
- 资源准备和导入
- 如何安装或升级标准资源 (Standard Assets)?
- FBX 导出指南
- 从 Maya 中导入对象
- 从 Cinema 4D 中导入对象
- 从 3D Studio Max 中导入对象
- 从 Cheetah3D 中导入对象
- 从 Modo 中导入对象
- 从 Lightwave 中导入对象
- 从 Blender 中导入对象
- 为优化性能建模角色
- 如何使用法线贴图 (NormalMaps)?
- 如何修正已导入模型的旋转?
- 程序材质
- 如何使用水?
- 分析器(仅限专业版)
- 绘制调用批处理
- 遮挡剔除(仅限专业版)
- Unity 中的高动态范围 (High Dynamic Range) 渲染
- 在 Unity 4 中使用 DirectX 11
- 文本场景文件格式(仅限专业版)
- 使用网络播放器模版
- 平台依赖编译
- 日志文件
- 首选项
- 粒子系统曲线编辑器
- 渐变编辑器
- 怎样制作网格粒子发射器?(旧粒子系统)
- 深入了解光照贴图
- 光照贴图快速入门
- 着色器
- 动画脚本(旧版)
- 自定义
- 布局模式
- 扩展编辑器
- 网络实例化
- 材质和着色器
- 如何使用细节纹理?
- 着色器:顶点和片段程序
- Unity 中的阴影
树
Unity 的地形引擎 (Terrain Engine) 为树 (Trees) 提供 特殊支持。您可以在地形 (Terrain) 上放置上千棵树,然后用实际帧速率在游戏中对其进行渲染。这可以通过以下方式实现:将相机周围的树木渲染成全 3D,然后将远处的树木转变为二维布告板。远处的布告板将根据不同的观察角度自动更新以确定正确的方向。出于性能考虑,该转换系统将详细的树环境制作地非常简单。您可以完全控制网格到布告板 (mesh-to-billboard) 转换参数的调整,这样就可以得到所需的最佳性能。
您可以轻松绘制许多树来创建优美的环境,如上图所示
添加树
在检视器 (Inspector) 中选择 放置树 (Place Trees) 按钮
将树放到地形上之前,您需要将树添加到可用树的库里。要执行此操作,请单击 编辑树 (Edit Trees) 按钮 -> 添加树 (Add Tree)。您将看到添加树 (Add Tree) 对话框。
添加树 (Add Tree) 对话框
项目视图 (Project View) 中选择树,并将其拖到 树 (Tree) 变量。如果想给树添加一些“迎风摇曳(bending in the wind)”的动画效果,您还可以编辑 弯曲系数 (Bend Factor) 。准备好后,单击添加 (Add)。树在检视器 (Inspector) 中将显示为选中。
新添加的树在检视器 (Inspector) 中显示为选中
您可以添加任意数量的树。您可以选择检视器 (Inspector) 中的每棵树,从而将其放置在地形 (Terrain) 上。
当前选中的树将总是高亮显示为蓝色
绘制树
使用放置树 (Place Trees) 工具的同时单击地形 (Terrain) 上的任意地点以放置树。如需去掉树,请按住 Shift 按钮并在地形 (Terrain) 上单击。
绘制树如同使用笔刷工具一样简单
放置树时,您可以使用若干选项。
属性: | 功能: |
---|---|
笔刷大小 (Brush Size) | 放置树的笔刷的半径(以米为单位)。 |
树间距 (Tree Spacing) | 两树之间的树宽的百分比 |
颜色变化 (Color Variation) | 每棵树之间所允许的颜色差异值。 |
树高 (Tree Height) | 每棵树相比于资源的高度调节。 |
高度变化 (Height Variation) | 每棵树所允许的高度差异值。 |
树宽 (Tree Width) | 每棵树相比于资源的宽度调节。 |
宽度变化 (Width Variation) | 每棵树所允许的宽度差异值。 |
树木绘制技巧
不同的笔刷 (Brush) 大小覆盖不同的区域大小
调整树间距 (Tree Spacing) 来更改正在绘制的树的密度
编辑树
要为添加的树更改任何导入参数,请选择细节,然后选择编辑树 (Edit Trees) 按钮 -> 编辑细节 (Edit Detail)。或双击想要编辑的树。然后您将看到编辑树 (Edit Tree) 对话框,并可以更改任何设置。
批量放置
如果您不想绘制树,只是想创建一整片森林,可以使用地形 (Terrain) -> 批量放置树 (Mass Place Trees) 在此处,您将看到批量放置树 (Mass Place Trees) 对话框。你可以设置想放置的树的数量,设置之后,这些树将立即放置。添加到地形 (Terrain) 的所有树将被用于此批量放置。
一次性放置 10,000 棵树 (Trees)
刷新源资源
如果对树的资源源文件做了任何更新,则必须手动重新将其导入到地形 (Terrain) 中。要执行此操作,请使用地形 (Terrain) -> 刷新树和细节原型 (Refresh Tree and Detail Prototypes) 。该操作在更改和保存源资源后完成,并将立即刷新地形 (Terrain) 上的树。
创建树
地形引擎提供 了两种创建树的方法:
第一种是使用 Unity 自带的树创建器,第二种是使用与 Unity 兼容的第三方建模程序。在这种情况下,每棵树都应包括带两种材质 (Materials)的单个网格。一种用于树干,另一种用于树叶。
出于性能原因,每棵树的三角形总数应保持在 2000 以下。三角形越少越好。树网格的支点必须正好位于树的根部,这个点即是树应该放置在地面的位置。这使其能够最简便地导入 Unity 以及其他建模应用程序中。
树必须使用自然/软光遮蔽树叶 (Nature/Soft Occlusion Leaves) 以及自然/软光遮蔽树皮 (Nature/Soft Occlusion Bark shader)着色器。为了使用这些着色器,您还必须将树放置在名为“环境光遮蔽”(Ambient-Occlusion) 的特定文件夹中。将模型放置在该文件夹中并重新导入后,Unity 将计算专门用于树的软环境光遮蔽。“自然/软光遮蔽”(Nature/Soft Occlusion) 着色器需要此信息。如果不遵循命名惯例,树的某些部分会完全变成黑色,看起来会比较奇怪。
Unity 也在“Terrain Demo.unitypackage”中自带了一些高质量的树。您可以在游戏中轻松使用那些树。
使用低多边形树
一个带叶子的树枝只有 6 个三角形,并显示出相当多的弯曲。您可以添加更多的三角形,使其更加弯曲。但要点是:制作树时,使用三角形,而不是四边形。如果使用了四边形,则基本上要在树枝上用两倍的三角形才能达到同样的弯曲效果。
由于拥有大多边形,而几乎所有都因 alpha 通道而不可见,因此树本身浪费了很多填充率。由于目的是要制作浓密的树林,出于性能考虑,应避免此现象。这也是让不引人注意的树看着好看的原因之一。树木很浓密,您无法透过树叶看到树叶后面的情况。
设置树碰撞
如果想让树使用碰撞组件,这非常容易。导入树资源文件后,您只需在场景视图 (Scene View) 中将其实体化,添加胶囊碰撞组件 (Capsule Collider) 并对其进行调整,然后将游戏对象 (GameObject) 放入新的预设 (Prefab) 中。然后,将树添加到地形 (Terrain) 上时,您添加的是这个带有胶囊碰撞组件 (Capsule Collider) 的树预设 (Prefab)。为树添加碰撞时,只能使用胶囊碰撞组件 (Capsule Collider)。
使树相互碰撞。
地形碰撞组件 (Terrain Collider) 检视器 (Inspector)
如果想让树与刚体碰撞,请确保已勾选创建树碰撞组件 (Create Tree Colliders) 复选框,否则物体将穿过创建的树。请注意:Unity 使用的 PhysX 引擎在一个场景中最多只能处理 65536 个碰撞组件。如果使用的树的数量大于该数字(减去场景中已有的其他碰撞组件),那么树碰撞组件不能启用,并会报错。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论