# 通过AnimationNode对LowPoly风格的树进行随机化处理
*****
## **零、需求分析**
H子走进教室,见到黑板写着几个大字
“今日自习——AOI”
**H子**:还想问问老师做树的随机处理呢。按照AOI老师的习惯,首先就是需求分析吧。树的模型也已经做好了。
1. 已经有基础对象
2. 高度有变化
3. 树干生长方向有变化
4. 树叶有一定程度的变化
这么看起来不就是很像蘑菇的做法吗?这样的话只要顺着蘑菇的思路做下去,再进行一些改变就好了
## **壹、H子的自习笔记【树木随机化处理的实现】**
**1)** 首先准备好基础模型

**2)** 创建一条跟树木高度一致的曲线,并命名为TreeDir

**3)** 为树木添加一个曲线形变修改器并拾取TreeDir曲线

**4)** 在曲线树顶位置的端点添加一个钩子,用于控制曲线的变化

**5)** 给模型添加顶点组,用于控制置换形变区间。指定顶点组名称为Noise

**6)** 给模型添加置换修改器,并设置Noise纹理
同时添加空对象用于控制Noise纹理随机偏移,空对象命名为TreeNoise


**7)** 节点树的实现,在蘑菇的基础上进行设计,因为树木主要都是向上生长,所以无需设置顶部曲线控制的空对象旋转,只需要控制一定范围内的移动即可。树干的弯曲弧度只需要利用曲线本身的贝塞尔曲线处理即可。

从上到下的节点组分别为
1. TreeNoise控制
2. TreeDir控制
3. 树木缩放控制
**8)** 脚本的实现。通过脚本控制树木的复制生成,这一步跟蘑菇的处理基本完全一致。以下记录操作代码。
~~~
if(Time % DoFrame == 0 and Time > 0):
#if(len(bpy.context.selected_objects) >= 1):
# bpy.ops.object.move_to_layer(layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects[BaseObjectNam].select = True
bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False})
bpy.ops.object.modifier_apply(apply_as='DATA', modifier="置换")
bpy.ops.object.modifier_apply(apply_as='DATA', modifier="曲线")
bpy.ops.object.apply_all_modifiers()
bpy.ops.transform.translate(value=(PosX, PosY, 0), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
~~~
**9)** 代码调用部分节点图

最后,每10帧就会复制并应用一个模型,并随机移动到XY平面0-20范围内任意一点上,以便后续处理
**10)** 最后完整版本的节点图

**11)** 预览效果
