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

  • 2019年7月15日
  • 2019年7月19日
  • Script
  • 1225View
  • 0件
 
こんにちは!もろりんです!

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

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

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

こちらの記事もあわせてどうぞ!

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

スクリプトを書く前に

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

  • どうしたいか
  • そのために必要な処理
  • どのコマンドを使えばできるのか

今回でいえば以下のようになります。

  • どうしたいか
    鋭角なエッジだけベベルをかけたい
  • そのために必要な処理
    鋭角なエッジを検出し選択

    ベベルをかける
  • どのコマンドを使えばできるのか
    必要な処理をもとにコマンドを調べます。

コマンドを調べる

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

Use Constraintsが使えそうですので、前回の記事のようにコマンドを調べてみます。

Use Constraintsについてはこちらをどうぞ

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

Select > Use Constraints

まずはコマンドを調べるため、テキトーにスライダーをいじってみます。
が、スクリプトのヒストリに何も表示されないかと思います。

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

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

History > Echo All Commands

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

注意しないとヒストリの量がとんでもないことになるので、必要な時以外はなるべくオフにしましょう。

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

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

ベベルをかける

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

Edit Mesh > Bevel

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

スクリプトを書く

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

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

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

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

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;

ベベルをかける

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

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