# 通過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)** 預覽效果
