スクリプトを書く!Mayaスクリプト初級編その2

Autodesk(オートデスク)

実際にスクリプトを書いて実行するまでの流れをご紹介します!

今回例として書くスクリプトは、鋭角なエッジを検出し、ベベルをかけるというものです。
オブジェクトを選択して実行するだけでいい感じにベベルがかかります。

また当記事では細かい解説などは省略しております。
なんとなくこういうことができるんだなーという程度でご覧いただければと思います。

[st-card myclass=”” id=179 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=””]

スクリプトを書く前に

まず実際にスクリプトを書く前に以下の3つを考えます。

[st-step step_no=”1″]どんなスクリプトを作るのか[/st-step]

鋭角なエッジだけベベルをかけたい

[st-step step_no=”2″]そのために必要な処理[/st-step]

鋭角なエッジを検出し選択

[st-step step_no=”3″]どのコマンドを使えばできるのか[/st-step]

必要な処理をもとにコマンドを調べます。

コマンドを調べる

鋭角なエッジを検出し選択

この処理には[Use Constraints]が使えそうです。

コマンドについて詳しくはこちらをどうぞ。

[st-card myclass=”” id=181 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=””]

[Select > Use Constraints]

まずはコマンドを調べるため、テキトーにスライダーをいじってみます。

が、デフォルト設定ではスクリプトのヒストリに何も表示されないかと思います。

[st-mybox title=”ポイント” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]

操作によってヒストリに表示されるものとされないものがあります。

[/st-mybox]

[History > Echo All Commands]

こういう時はスクリプトのエコーをオンにします。

するとほとんどの操作がヒストリに表示されるようになります。

[st-mybox title=”注意” fontawesome=”fa-exclamation-circle” color=”#ef5350″ bordercolor=”#ef9a9a” bgcolor=”#ffebee” borderwidth=”2″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]

エコーがオンのままだとヒストリの量がとんでもないことになるので、必要な時以外はオフにしましょう。

[/st-mybox]

[All and Next]にチェックを入れてみます。

すると大量のヒストリが表示されますが、1番上の行(最初に実行されたコマンド)に注目するとpolySelectConstraintというコマンドが使用されていることが分かります。

ベベルをかける

[Edit Mesh > Bevel]

これはそのままベベルを使用します。
先程と同じように実際にベベルを使用しコマンドを調べます。

するとpolyBevel3というコマンドが使用されていることが分かります。

スクリプトを書く

それでは、実際にスクリプトを書いていきます。

鋭角なエッジを検出し選択

[polySelectConstraint]を使用する際に、ツールの[Use Constraints]で必要な項目を確認したりコマンドのフラグを調べましょう。

[st-card-ex url=”http://help.autodesk.com/cloudhelp/2018/JPN/Maya-Tech-Docs/CommandsPython/polySelectConstraint.html” target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=””]

必要なフラグが分かったところで実際にエッジ選択できるか試してみます。

cmds.polySelectConstraint(t=0x8000,m=3,a=True,ab=(40,360))
polySelectConstraint -t 0x8000 -m 3 -a 1 -ab 40 360;

画像のように鋭角なエッジが選択できたらOKです。

[st-mybox title=”ポイント” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]

ちなみにab=(40,360)が選択されるエッジの角度を指します。

[/st-mybox]
cmds.polySelectConstraint(m=0)
polySelectConstraint -m 0;

[polySelectConstraint]使用後は必ずこのコマンドでコンストレイントを解除しましょう。

ベベルをかける

次にベベルです。同じように[polyBevel3]のフラグを調べ、実行してみます。

[st-card-ex url=”http://help.autodesk.com/cloudhelp/2018/JPN/Maya-Tech-Docs/CommandsPython/polyBevel3.html” target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=””]
cmds.polyBevel3(f=0.2,oaf=True,sn=True,sg=3,d=1,mvt=0.0001,ws=True,sa=40,ch=1,mv=True,ma=180)
polyBevel3 -f 0.2 -oaf 1 -sn 1 -sg 3 -d 1 -mvt 0.0001 -ws 1 -sa 40 -ch 1 -mv 1 -ma 180;

画像のようにベベルできたらOKです。

一括で実行してみる

ここまでのスクリプトをまとめてみましょう。

[st-mybox title=”スクリプトのまとめ” fontawesome=”fa-list-ol” color=”#757575″ bordercolor=”#f3f3f3″ bgcolor=”” borderwidth=”3″ borderradius=”5″ titleweight=”bold” title_bordercolor=”#757575″ fontsize=”” myclass=”st-mybox-class st-title-under st-list-no” margin=”25px 0 25px 0″]
  • コンストレイントでコンポーネントを選択
  • ベベルをかける
  • コンストレイントの解除
[/st-mybox]

では実際にオブジェクトを選択して実行してみましょう。

cmds.polySelectConstraint(t=0x8000,m=3,a=True,ab=(40,360))
cmds.polyBevel3(f=0.2,oaf=True,sn=True,sg=3,d=1,mvt=0.0001,ws=True,sa=40,ch=1,mv=True,ma=180)
cmds.polySelectConstraint(m=0)
polySelectConstraint -t 0x8000 -m 3 -a 1 -ab 40 360;
polyBevel3 -f 0.2 -oaf 1 -sn 1 -sg 3 -d 1 -mvt 0.0001 -ws 1 -sa 40 -ch 1 -mv 1 -ma 180;
polySelectConstraint -m 0;

画像のように鋭角なエッジだけベベルをかけることができたらスクリプトの完成です!

まとめ

いかがでしたでしょうか。
スクリプトを作る際の工程を簡単にまとめてみました。

僕もスクリプトに詳しいわけではないので紹介できることは少ないですが、少しでもこういった記事がスクリプトをはじめるきっかけになれば嬉しいです!

次回のスクリプトの記事ではGUIを作ってみようかと思いますのでお楽しみに!

Autodesk(オートデスク)

コメントを残す

メールアドレスが公開されることはありません。