分类:Unity、C#、VS2015

创建日期:2016-04-11

一、简介

在地形编辑器一节中,已经告诉了你如何使用已经创建好的树来形成大片树林。这一节告诉你在 Unity 5.3.4中如何利用【树木创建器】一步一步地创建一棵树:

当你学会了创建树的基本操作后,你就可以根据自己的需要创建任意形状的树了:


二、导入Unity自带的Environment组件

如果你原来没有导入Unity自带的Environment组件,需要导入它:

办法是:鼠标右击工程视图下的Assets文件夹,选择Environment,在弹出的窗口中,单击【All】按钮,然后单击【Inport】按钮。

此时,在Standard Assets文件夹下就会看到导入的资源:

依次单击Environment/SpeedTree文件夹下的各个子文件夹,观察子文件夹中的文件,以便对其结构有一个大概的了解。

另外,除了树组件(SpeedTree)以外,Environment下还包含地形组件(TerrainAssets)以及水组件(Water)。

导入Environment以后,就可以直接使用这些组件了。

三、创建第一棵树

1、创建场景

先添加一个Demo06文件夹,然后在该文件夹下创建一个名为Demo06Scene的场景:

双击打开该场景。

2、添加一棵新树

要在刚创建的场景中创建一个新的树 (Tree) 资源,需要先鼠标右击层次视图(Hierarchy),选择【3D Object】->【Tree】:

此时在工程视图 (Project View) 中创建了一个文件名为Tree的预制体文件,将该文件拖放到Demo06文件夹中:

拖放后,在Demo06文件夹下就可以看到这个文件,将其换名为Demo06Tree01以方便识别是哪个例子创建的:

换名后,在当前打开的场景中,即可看到实例化的Demo06Tree01树(如果看到的不是这样,将其旋转缩放一下就看到了):

现在这棵新树还很简单,只有一个树干,接下来我们为它添加树枝、树叶。

3、观察树木创建器的大致结构

选中这棵树,先在检视器 (Inspector) ) 中看一下树木创建器的大致结构(红色框):

检视器中提供了塑造和雕刻你所创建的树的所有工具和属性。

在【Tree】选项卡下,可看到呈现节点的树木层级视图 (Tree Hierarchy) :树根 (Tree Root) 节点和一个单一的树枝组 (Branch Group) 节点(称为树干)。

为了方便介绍,以后将树木创建器中右下角的4个小按钮(小红色框内)从左到右分别命名为【按钮1】、【按钮2】、【按钮3】、【按钮4】:

【按钮1(Add Leaf)】:添加树叶。向当前选择的组节点添加一个树叶组节点。

【按钮2(Add Branch)】:添加树枝。向当前选择的组节点添加一个树枝组节点。

【按钮3(Copy Node)】:复制节点。复制当前选择的组。

【按钮4(Delete Node)】:删除节点。删除层次视图 (Hierarchy) 中当前选择的组或场景视图 (Scene View) 中的一个节点或一个样条线点。

除了这4个按钮外,还有:

【树木状态(Tree Stats)】:树木的状态信息(在4个小按钮的上方),此状态告诉你树木具有多少顶点、多少三角形和多少种材质。

【外部重载(External Reload)】:也叫刷新,即再次计算整棵树(该按钮在4个小按钮的左边)。在树叶网格已改变的情况下,可使用此按钮。

4、添加树枝(Adding Branches)

在【Tree】选项卡中,单击【按钮2(Add Branch)】添加一个树枝:

选中刚添加的树枝,利用4个按钮下方的【移动树枝】、【旋转树枝】、【自定义树枝】按钮,以及【按钮4(Delete Node)】,通过鼠标拖放小方块在场景中改变该树枝的形状:

单击主树干,然后单击【按钮2(Add Branch)】,按照上面介绍的相同的办法,再添加另一个树枝:

在树干上创建了树枝后,还可以进一步选择次级树枝组 (Branch Group) 并再次单击【按钮2(Add Branch)】在新创建的树枝上添加更小的树枝。微调这个组的值,可继续创建更多连接至次级树枝的树枝。

现在,这棵简单的树的树枝结构已经完成,如果游戏场景不是发生在冬天,那么还需要在树枝上添加树叶(Leaf)。

5、添加树叶

添加树叶和添加树枝的操作基本上是一样的。基本步骤是:先选中某个树枝节点,然后单击【按钮1(Add Leaf)】按钮即可。

如果想进行非常细致地塑造,也可以再在最小的树枝上添加另一个树叶组。

下图是分别在树干和2个树枝上各添加一个树叶后的场景:

现在,树叶仅仅被渲染成不透明的平面。这是因为在为它们添加材质之前,我们需要先调整树叶的值(大小、位置、旋转等)。调整合适以后,就可以为其添加材质了。

6、添加材质

为了使树看起来更加逼真,还需要在树枝和树叶上应用材质 (Material)。

(1)创建树枝材质

鼠标右击Demo06文件夹,选择【创建 (Create)】 -> 【材质 (Material)】 ,在该文件夹下创建一种新材质,并将其重命名为Demo06Bark01,意思是Demo06文件夹下创建的第1个树皮(Bark)材质。

在着色器 (Shader) 下拉菜单中,选择【自然 (Nature)】 -> 【树木创建器树皮 (Tree Creator Bark)】:

将【基础(Base)】属性和【光泽 (Gloss)】属性都选择【BroadleafBark】纹理:

法线贴图 (Normalmap) 属性使用【BroadleafBark_Normal】纹理:

这样在Demo06文件夹下就得到了创建的树枝材质(Demo06Bark01.mat文件):

选择某个树枝,将创建的树枝材质应用到该树枝:

依次选择其他树枝,直到全部应用材质为止。

(2)创建树叶材质

按照与创建树枝材质同样的步骤,再创建一个文件名为Demo06Leaf01.mat的材质。

在着色器 (Shader) 下拉菜单中,选择【自然 (Nature)】 -> 【树木创建器树叶 (Tree Creator Leaves)】:

指定纹理:

这就得到了树叶材质:

选择某个树叶,将材质应用到该树叶:

对所有树叶都做同样的处理,直到所有树叶应用完毕。

现在再来看看添加材质后的这棵树(每个树枝上都有一个树叶):

选中某个树叶,观察【Frequency】属性的值,可看出此时该值默认为1:

接下来将【Frequency】属性的值调整为42,即得到下面的效果:

对另外两个树枝执行同样的操作,就得到了我们希望的树:

说明:创建树是一个反复试验的过程,总的原则是一般不要创建太多的树叶/树枝,因为太多的话会影响渲染的性能。

7、添加角色控制器

最后再添加一个第1人称角色控制器,以便旋转、拉伸、移动场景:

按【播放】按钮预览运行效果。

【Unity】4.5 树木创建器的更多相关文章

  1. 运用Unity结合PolicyInjection实现拦截器

    运用Unity结合PolicyInjection实现拦截器[结合操作日志实例] 上一篇文章我们通过Unity自身Unity.InterceptionExtension.IInterceptionBeh ...

  2. Responsive Web CSS – 在线响应式布局创建器

    如果您已经使用了 CSS 或前端框架,创建响应式布局应该不难. 然而,如果你刚涉足这类布局,Responsive Web CSS 可以帮助你快速上手. 这是一个基于 Web 的工具,使任何人都可以通过 ...

  3. ubuntu 启动项创建器 选择不了CD镜像,IOS镜像的解决方法

    自己系统是ubuntu14.04 , 想使用 ubuntu自带的启动项创建器(usb-creator-gtk)做一个CDLinux的U盘启动项, 打开程序后发现U盘识别了, 在添加镜像的时候,发现怎么 ...

  4. Unity3d之树木创建的参数设定

    Unity3d之树木创建的参数设定 通常Unity3d创建树木经常会创建出很多奇葩的种类=_=,以下是创建出比较正常树木的基本参数 1:> 基本树干形状建立: 选择根建立分枝干设置分支干Di ...

  5. Spring 中如何自动创建代理(spring中的三种自动代理创建器)

    Spring 提供了自动代理机制,可以让容器自动生成代理,从而把开发人员从繁琐的配置中解脱出来 . 具体是使用 BeanPostProcessor 来实现这项功能. 这三种自动代理创建器 为:Bean ...

  6. C# 反射的委托创建器

    原文:C# 反射的委托创建器 .Net 的反射是个很好很强大的东西,不过它的效率却实在是不给力.已经有很多人针对这个问题讨论过了,包括各种各样的 DynamicMethod 和各种各样的效率测试,不过 ...

  7. 【Unity】4.1 创建组件

    分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 组件(Component)在Unity游戏开发工作中非常重要,可以说是实现一切功能所必需的. 1.游戏对象(Game O ...

  8. 关于Unity中地形的创建

    地形创建 Raw图片格式是Unity可以导出的图片格式 Unity很强大,可以直接使用psd文件 地形创建实例 1.创建Unity工程和文件目录1:创建一个地形Terrain: GameObject- ...

  9. 【Unity】10.3 创建类人动画角色

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Mecanim 动画系统 (Mecanim Animation System) 特别适合使用类人骨架动画.由于类人骨架非 ...

随机推荐

  1. django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

    1.为test.DB数据库预先创建下面数据 1    张三    16    2015-01-02    12    李四    17    2015-01-04    13    王五    14  ...

  2. GDALBuildVRT异构波段的支持

    目录 简述 修改源码 1.修改DatasetProperty结构体 2.修改VRTBuilder::AnalyseRaster函数 3.修改VRTBuilder::CreateVRTNonSepara ...

  3. ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

    [root@ldaptest openldap]# ldapadd -x -D "cn=admin,dc=ultrapower,dc=com" -W -f /tmp/base.ld ...

  4. Spark ML 几种 归一化(规范化)方法总结

    规范化,有关之前都是用 python写的,  偶然要用scala 进行写, 看到这位大神写的, 那个网页也不错,那个连接图做的还蛮不错的,那天也将自己的博客弄一下那个插件. 本文来源 原文地址:htt ...

  5. Inno Setup入门(三)——指定压缩方式

    Setup段中的compression指定了采用的压缩方式,较高的压缩率需要较多的时间或者需要更大的内存空间,可用的值如下: zip zip/1到zip/9 bzip bzip/1 到bzip/9 l ...

  6. 输出控制台信息到日志 并 通过cronolog对tomcat进行日志切分

    windows下tomcat默认并不会把控制台输出的信息都记录进日志文件.但是在生产环境中,出现问题时,控制台的日志输出是无法查据的,因此需要将日志记录下来. 解决方法: 输出日志到文件 修改tomc ...

  7. firefox插件卸载

    1.根据插件名进行搜索,搜索到相关dll后删除,重启firefox. 2.about:config--plugin.expose_full_path:true,然后about:plugins去查看插件 ...

  8. 实现外卖选餐时两级 tableView 联动效果

    最近实现了下饿了么中选餐时两级tableView联动效果,先上效果图,大家感受一下: 下面说下具体实现步骤: 首先分解一下,实现这个需求主要是两点,一是点击左边tableView,同时滚动右边tabl ...

  9. iOS 10 的一个重要更新-新的通知推送 API

    iOS 10 最重要的变化可能就是通知 API 的重构了.本文用一个简单闹钟的例子介绍了 User Notification 的 API 变化和新功能. 简介 很久以前,开发者就可以在 iOS 里预约 ...

  10. 如果没有 Android 世界会是什么样子?

    2005年谷歌从安迪·鲁宾(Andy Rubin)手中收购Android系统,起初安迪·鲁宾(Andy Rubin)只是想为数码相机开发出一个更为先进的系统,所以有了 Android.但是智能手机行业 ...