Unity3D自带功能:树物体(Tree)


通过菜单GameObject > 3D Object > Tree可以为当前场景创建一个Tree (树),同时还会把相应的Tree asset资源存放在项目文件夹中。

unity_tree_01.png

Tree是标准的Fractal(分形)结构,按“第一层主干上长出数根枝干,然后枝干上又各自长出数根细枝,……最后细枝上长出多片树叶”这样一层层搭建而来。Maya中的笔刷树也是用的这种构成方法,但Unity3D相对来说更简化了一些。

TreeStructureDiagram.png

树编辑器及节点

Unity3D提供一个简单的树编辑器,让我们可以从主干开始创建一颗完整的树。这个树编辑器很像Xfrog(Maya中集成了一个简化版的Xfrog插件)。

一颗比较完整的树的结构至少要如下图所示,有多个层级,最下方是1个树节点,然后接一层枝节点当树干,然后再接1~2层枝节点当树枝,最后接一层叶节点来生成树叶。

unity_tree_00.png

编辑器中间的结构图示代表了不同层级的节点,Unity3D的Tree只有3个不同类型的节点:树节点(Tree)、枝节点(Branch)、叶节点(Leaf)。每个节点上的数字代表该节点中总共有多少根“树枝”或者多少片“树叶”。

选择一个枝节点,我们可以通过右下角的图标为它创建一个下级枝节点或者叶节点,或者复制/删除任意枝节点或叶节点,叶节点之下不能创建别的节点。

树节点只能有一个,不可删除。


树节点(Tree)

树节点是最底部的节点,用来控制整棵树的参数设置

unity_tree_02.png
  • Distribution
    • Tree Seed:这是一个“种子数”,所谓“种子数”是计算机中控制“假随机数”的一个关键参数,大家只需要知道我们如果做好了一棵树以后想得到另一棵类似但不要完全一样的树,就可以直接复制这棵树,什么调整都不用做,只修改一下新树的“种子数”就好了。做好的树样子不太理想,改改“种子数”也许就能获得一个好看些的结果
    • Area Spread:区域散布距离,值越大,刷出来的树离笔刷路径距离越远
    • Ground Offset:这棵树离地面的高度
  • Geometry
    • LOD Quality:设置LOD(随距离变化而改变模型精细度),因为Tree物体的mesh都是由程序根据参数来自动生成的,所以天生就有LOD属性
    • Ambient Occlusion:环境自遮罩阴影设置
    • AO Density:AO的程度
  • Material
    • Translucency Color:透明区域颜色
    • Trans. View Dep.:透明区域渲染深度
    • Alpha Cutoff:贴图上半透明区域的切除程度,leaf通常都用透明贴图来呈现,但Tree物体会将透明通道做Cutoff处理,也就是不呈现半透明的效果
    • Shadow Strength:阴影强度
    • Shadow Offset:阴影偏移
    • Shadow Caster Res.:阴影分辨率

枝节点(Branch)

枝节点是创建枝干的节点,枝干是一根可以扭曲的长圆锥体,通常会贴上树皮的贴图,用来作为树干或者主要分叉树枝。

unity_tree_03.png
  • Distribution
    • Group Seed:这个“种子数”是控制这一“群”枝条如何随机分布的
    • Frequency:在一根上级枝条上会出现多少根本级枝条,对于主树干来说这个值设置为1,其他的枝干这个值通常大于1
    • Distribution:这些枝条如何分布
    • Growth Scale:通过一根曲线控制这些枝条从长出点到尖端的截面粗细,通常是会设置成越靠近尖端越细
    • Growth Angle:通过一根曲线控制这些枝条从长出点到尖端的弯曲程度,大部分树越靠近尖端会越指向天空
  • Geometry
    • LOD Multiplier:LOD的设置,次级枝条的LOD会读取上级枝条的LOD然后用这个倍乘数来调整
    • Geometry Mode:几何体模式,可以是branch(枝条)模式,那就是一个长圆锥;也可以是一个fronds(蕨类复叶结构),那就是一个扁平的长条双面片;还可以是branch+fronds,那就是两者都有
    • Branch Material:指定枝条的材质球
    • Break Material:指定枝条断口(顶端)的材质球
  • Shape
    • Length:枝条长度,会随机在指定范围内取值
    • Relative Length:是否使用相对长度
    • Radius:枝条的最大直径
    • Cap Smoothing:断口处的光滑度
    • Crinkliness:枝条的扭曲度,0代表笔直的枝条,1代表弯弯扭扭的枝条,可以用曲线来控制从根部到顶端使用不同的Crinkliness
    • Seek Sun:枝条尖端朝向太阳的程度,如果做向日葵的话当然就设成1咯
    • Noise:给枝条根部到顶端的粗细变化添加一个噪波随机紊乱,值越大越紊乱
    • Noise Scale U:噪波贴图的大小U值
    • Noise Scale V:噪波贴图的大小V值
    • Flare:只有主干(紧跟树节点的那个枝节点)才能设置Flare,Flare可以让主干底部变得很粗,且最底部截面根据Noise值而变得形状不规则,用来模拟树根有一部分突出在地面以上的效果
      • Flare Radius:主干根部变粗程度
      • Flare Height:主干根部变粗部分高度
      • Flare Noise:主干根部截面
    • Weld:非主干的枝节点上出现的是下面3个属性,用来模拟长出数值的接口处的过渡效果
      • Weld Length:衔接区域长度
      • Spread Top:向上方扩展程度
      • Spread Bottom:想下方扩展程度
    • Break Chance:枝条断裂的可能性,值越大,越多该层级的枝条出现断裂,断裂的枝条会有断口,而且也不会有次级枝条或叶片产生
    • Break Location:断裂的位置,会随机在指定范围内取值
  • Wind
    • Main Wind:风力大小
    • Main Turbulence:(非主干的枝节点上才会出现)主要紊乱场力度大小
Flare相关参数获得的根部效果
Weld相关参数获得的过渡效果
Break属性获得的断口效果

我们可以手动对branch进行调整:

  • Move Branch:branch的中轴控制曲线及其节点会显示在Scene View里,选择一个节点然后移动可以改变整个枝条的形状
  • Rotate Branch:branch的中轴控制曲线及其节点会显示在Scene View里,选择一个节点然后旋转,可以旋转自这个节点开始以后的枝条部分
  • Free Hand:可以手动在Scene View中画出枝条形状

注意:手动调整之后,很多参数就不可用了,编辑器中的节点图示上也会多出一个笔形符号做为提示。


叶节点

叶节点是创建叶片的节点,叶片是一个Quad面片,通常会贴上树叶贴图,但一般不会用奢侈到用单个面片做1片树叶,常见的用法是单个面片上贴上一枝带若干叶片的细小树枝的贴图,来模拟枝繁叶茂的样子。

unity_tree_04.png
  • Distribution
    • Group Seed:这个“种子数”是控制这一“群”叶片如何随机分布的
    • Frequency:在一根上级枝条上会出现多少叶片
    • Distribution:这些叶片如何分布
    • Growth Scale:通过一根曲线控制这叶片的大小
    • Growth Angle:通过一根曲线控制这些叶片的弯曲
  • Geometry
    • Geometry Mode:几何体模式
      • Plane:单个Quad面片
      • Cross:十字交错的2个Quad面片
      • TriCross:十字交错的3个Quad面片
      • Billboard:单个Quad面片,但永远面朝摄像机
      • Mesh:指定一个多边形mesh作为叶片形状
    • Material:指定叶片的材质球
  • Shape
    • Size:叶片大小
    • Perpendicular Align:叶片垂直方向对齐程度
    • Horizontal Align:叶片水平方向对齐程度
  • Wind
    • Main Wind:风力大小
    • Main Turbulence:主要紊乱场力度大小
    • Edge Turbulence:边缘紊乱场力度大小

我们可以手动对leaf进行调整,leaf没有中轴线,所以只能移动或者旋转:

  • Move Leaf:沿着上级brunch移动leaf
  • Rotate Leaf:绕leaf和上级branch的接触点旋转leaf

注意:手动调整之后,很多参数就不可用了,编辑器中的节点图示上也会多出一个笔形符号做为提示。

关于风场和动力学解算:

要产生树被风吹动的效果,需要创建一个Wind Zone(风区),我们可以点击Create Wind Zone按钮创建,或者从菜单栏创建。

树物体的“主干”、“枝条”、“叶片”三种不同的结构部分面对风场的动力学表现是不同的:

  • “主干”很粗,所以只受到风场风强的影响,会被风吹弯;
  • “枝条”比较细,除了跟着主干运动并被风强吹歪以外,还会受到一个紊乱场的影响,具有一定的震颤抖动效果;
  • “叶片”最轻,尤其在边缘部分的叶片,震颤抖动效果愈发明显,所以多了一个Edge Turbulence的参数。

大家可以下载一些Asset Store里提供的免费的Tree资源,看看别人是怎么设置的:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,968评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,682评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,254评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,074评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,964评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,055评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,484评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,170评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,433评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,512评论 2 308
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,296评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,184评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,545评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,150评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,437评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,630评论 2 335

推荐阅读更多精彩内容