Maya

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

2019年7月15日

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

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

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

コピペでできる Mayaスクリプト初級編

今回はMayaでスクリプトを使ってみたいという方向けに、基本的なスクリプトの使い方をご紹介します。 スクリプトエディタを開く Windows > General Editors > Scr ...

スクリプトを書く前に

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

step
1
どんなスクリプトを作るのか

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

step
2
そのために必要な処理

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

step
3
どのコマンドを使えばできるのか

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

コマンドを調べる

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

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

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

Mayaの隠れた便利機能!コンストレイントを使用

Mayaの中でも便利だけど意外と知られていない機能はたくさんあります。この記事ではそんな便利な機能を紹介していこうと思います。 今回はコンストレイントを使用(Use Constraints)です。 ど ...

[Select > Use Constraints]

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

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

ポイント

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

[History > Echo All Commands]

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

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

注意

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

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

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

ベベルをかける

[Edit Mesh > Bevel]

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

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

スクリプトを書く

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

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

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

polySelectConstraint command
polySelectConstraint command

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

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

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

ポイント

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

cmds.polySelectConstraint(m=0)
polySelectConstraint -m 0;

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

ベベルをかける

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

polyBevel3 command
polyBevel3 command

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です。

一括で実行してみる

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

スクリプトのまとめ

  • コンストレイントでコンポーネントを選択
  • ベベルをかける
  • コンストレイントの解除

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

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を作ってみようかと思いますのでお楽しみに!

-Maya
-

Copyright© もろりんの3DCGブログ , 2020 All Rights Reserved.