Maya

【Maya:Python】Terrainを一発作成

Mayaでテレインを作りたいと思った時、初期設定の工程が面倒だったため
どなたでも簡単に再現できるように一発作成できるpythonを書きました。
最初から入っているノイズを使って凹凸を作成します。

コード

# -*- coding: utf-8 -*-
import maya.cmds as cmds

# プレーン作成
cmds.polyPlane(h=200, w=200, cuv=2, sy=100, sx=100, ch=1, ax=(0, 1, 0))
sl_mesh = cmds.ls(sl=True)
sl_plane = cmds.rename(sl_mesh, 'terrain_mdl')

# マテリアル作成
cmds.shadingNode('lambert', asShader=1)
sl_mat = cmds.ls(sl=True)
cmds.rename(sl_mat, 'terrain')
cmds.sets(renderable=True, empty=1, noSurfaceShader=True, name='terrainSG')
cmds.connectAttr('terrain.outColor', 'terrainSG.surfaceShader', f=1)

# マテリアルアサイン
cmds.select(sl_plane)
cmds.sets(forceElement='terrainSG', e=1)

# デフォームテクスチャ作成
cmds.textureDeformer(vectorStrength=(1, 1, 1), exclusive="", direction="Handle", strength=10, envelope=1, vectorOffset=(0, 0, 0), vectorSpace="Object", offset=0, pointSpace="UV")
cmds.select('textureDeformerHandle1', r=1)

# テクスチャのかわりにとりあえずノイズをアサイン
cmds.shadingNode('noise', asTexture=1)
cmds.connectAttr('noise1.outColor', 'textureDeformer1.texture', force=1)

実行結果

上手くいけばこのようになります。
ノイズの代わりに白黒テクスチャを割り当てれば違う形の山になります。