liquidjumper MAYA,Python [Python] if文の使い方 MAYAアーティストのスクリプト入門

[Python] if文の使い方 MAYAアーティストのスクリプト入門

maya_python_topimage

Pythonのスクリプトで「この条件のときはOK」でも「この条件のときはダメ」と分岐させる方法を紹介します。

CG制作ツールのMAYAを使って説明しますが、あくまでもPythonの紹介なので、
MAYAを持ってなくても理解できるように紹介したいと思います。

以前にMAYAアーティストが初めて触るPythonスクリプトの記事を書いたので、
MAYAでスクリプトを書き始める事前準備として、以下の記事も読んでもらえると良いと思います。


if文

この記事のはじめに書いた

この条件のときはOK」でも「この条件のときはダメ

という命令を書きたい時には if文 を使います。

例えば下の文章

もし 球体 が 4個 より 多かった ら ”球体は4個より多い” と表示する

これをプログラム的に表記すると

 
if 球体の数 > 4 :
 
    print(“球体は4個より多い”)
 

文を分解してみました

if
もし (もしもこの条件が当てはまるなら下段の命令文を続けて良い)
球体の数 > 4 :
条件式 球体の数は4より多い?
print(“”)
()の中に入っている内容 ”球体は4個より多い” を、出力表示する。

なんとなく理解できるでしょうか。

では、MAYAのスクリプトエディタに上の文章の条件を満たすスクリプトを書いてみます。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if sphere_num > 4 :
    print("Number of spheres is more than 5")
import maya.cmds as cmds

MAYAでPythonスクリプトを書き始める文言です。
mayaコマンドをインポートします。

sphere_list = cmds.ls(sl=True)

選択してアクティブ状態にした球体の情報をsphere_listに入れます。
(※球体が生成されてる前提です)

sphere_num = len(sphere_list)

len()を使って、sphere_listに入っている球体の数をsphere_numに格納します。

とにかくsphere_numに選択した球体の個数が入っていると理解します。

if sphere_num > 4 :

ここで if文 条件式 です。
もし sphere_numの数が4より多ければ下段の命令文を続ける。

print("Number of spheres is more than 5")

上段のif文の条件が揃っていれば、”Number of spheres is more than 5″ と出力する。

MAYAで実行してみます。

事前に polySphereポリスフィア を複数個生成しておきます。

スフィア生成

生成した polySphere をいくつか選択します。

スフィア8選択

スクリプトエディタに書いたスクリプトを選択して。
[Ctrl] + [Enter] で実行します。

Number of spheres is more than 5

スクリプトエディタの上段に

“Number of spheres is more than 5″と出力されたでしょうか?

出力された人は、ポリスフィアを5個以上選択した人です。それ以外、4個までしか選択してない人は何も出力されません。

選択する個数を変えて何度か試してみてください。

選択する個数が5個以上と4個までで反応が違ったら成功です。


if else

 

選択する個数が5個以上だと

“Number of spheres is more than 5”

と出力され

それ以外の個数だと何も出力されませんでした。

それ以外」、違う言い方だと「5個以上では無い」場合に

何かを出力したい場合は

else

を使います。

else に条件式は付きません。
ifの条件に見合わない「それ以外」の場合に、elseの下段にある実行命令文にいきます。

先程のスクリプトに付け足しました。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if sphere_num > 4 :
    print("Number of spheres is more than 5")
else:
    print("Number of spheres is 4 or less")
else:

sphere_num > 4 : の条件を満たさないので

print("Number of spheres is 4 or less")

“Number of spheres is 4 or less”と出力する。

また生成した polySphere をいくつか選択しましょう。

書いたスクリプトを選択して。
[Ctrl] + [Enter] で実行します。

今度は何かしら出力されたと思います。

選択する個数が5個以上だと

Number of spheres is more than 5

それ以外の個数だと

スフィア3選択

 

Number of spheres is 4 or less

選択し直して何度か試してみてください。出力される文言が変われば成功です。

if elif else

    ここまで

if 条件式1:
    条件式1が満たす場合の実行命令文  

else :
    ifの条件式1が満たさない場合の実行命令文  

を説明してきました。

この場合だと条件式は一つしかありません。

条件1の場合は駄目かもしれないけど条件2だったらどうなの?

そのように条件が複数ある場合は

elif

を使います。

例えば

5個以上であれば”more then 5″と出力、
3個以上であれば”more then 3″と出力、
それ以外は”2 or less”

スクリプトを変更しました。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if sphere_num > 4 :
    print("more than 5")
elif  sphere_num > 2 :
    print("more than 3")
else:
    print("2 or less")

if と else の間に elifと条件式 が入っています。

ifの条件に満たさない場合はelifの条件、

elifの条件が満たせばprint(“more than 3”)が実行される、

どちらの条件も満たさない場合はelseの実行命令文 print(“2 or less”)が実行される。

このスクリプトもMAYAで実行してみます。

polySphere をいくつか選択して。
スクリプトを選択して。
[Ctrl] + [Enter] で実行します。

何が出力されたでしょうか?

5個以上の場合は

スフィア9選択
more than 5

3個以上であれば

スフィア4選択
more then 3

それ以外は

スフィア2選択
2 or less

と出力されたでしょうか?

また elif には個数の制限がありません。  

if 条件式:
    実行命令文
elif 条件式:
    実行命令文
elif 条件式:
    実行命令文
elif 条件式:
    実行命令文
.
.
.
.
else:
    実行命令文  

このように条件が複数ある場合、いくつでも条件を重ねられます。

演算式 [>] [<] [>=] [<=] [==] [!=]

if sphere_num > 4 :

if の後に条件が書かれてます。
この場合は 不等号[ > ] を使って 「4より大きい」 を表しています。

この不等号は他にもあります。

A > B AはB より大きい
A < B AはB より小さい
A >= B AはB 以上
A <= B AはB 以上
A == B AはB 以下
A != B AとB は違う

スクリプトを書いてみました。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if sphere_num > 4 :
    print("more than 5")
elif  sphere_num > 2 :
    print("more than 3")
else:
    print("2 or less")

11より大きければ

スフィア13選択
more than 11

8より大きければ

スフィア8選択
more than 8

5だったら

スフィア5選択
sphere_num is 5

それ以外の数だったら

Any other number

と出力します。

MAYAで実行してみます。

polySphere をいくつか選択して。
スクリプトを選択して。
[Ctrl] + [Enter] で実行します。

どのように出力されたでしょうか?

選択する個数を変えて試してみてください。

意図する文言が出力されたら成功です。


if and or で複数条件

else で 複数の条件を重ねる書き方を紹介しました。

今度は、条件を and や or  を並べる書き方を紹介します。

例えば、「この条件Aとこの条件Bの2つが同時に満たされる場合」とか

「この条件Aもしくはこの条件Bどちらかが満たされる場合」とか

スクリプトを or を使って変更しました。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if sphere_num >= 5 or sphere_num <= 2 :
    print("more than 5 or 2 or less")
else:
    print("Any other number")
if sphere_num >= 5 or sphere_num <= 2 :

「5以上」もしくは「2以下」であれば

print("more than 5 or 2 or less")

“more than 5 or 2 or less”と出力します。

MAYAで実行してみてください。

polySphere をいくつか選択して。

スクリプトを選択して。
[Ctrl] + [Enter] で実行します。
どうでしょうか?

5個以上もしくは2個以下

スフィア2選択B
more than 5 or 2 or less

それ以外の個数、つまり3個と4個だと

スフィア3選択B
Any other number

と出力されるはずです。


if not で否定

not は「この条件が満されない場合」の意味で使います。

今までは if で 「条件が満たされた場合」 に命令文が実行されてきました。

notを付けると「条件が満たされない場合」の時に命令文が実行されます。

重要
ただ if自体は「条件が満たされた場合」で変わりません。
あくまでも not は条件式に対して付いているだけです。

if 「not + 条件」:

つまり
「条件が満たされない事が条件」
気をつけましょう。

スクリプトを変更しました。

import maya.cmds as cmds

sphere_list = cmds.ls(sl=True)
sphere_num = len(sphere_list)

if not sphere_num >= 5 :
    print("not more than 5")
else:
    print("Any other number")
if not sphere_num >= 5 :

選択した球体の数が5個以上で無い場合にprint(“not more than 5”)

“not more than 5″と出力します。

MAYAで実行してみてください。

5個以上だと

Any other number

と出力され

4個以下だと

not more than 5

と出力されます。


[Python] for 文 繰り返し処理の使い方MAYAアーティストのスクリプト入門

最後に

 if 条件式 and 条件式:
    実行命令文  

elif 条件式2:
    実行命令文2  

else:
    実行命令文3      

if文には他にも様々な書き方がありますが、とりあえず以上のことを覚えておけば
アーティストが必要な大体のスクリプトは書けると思います。

if文はスクリプトを書く上で何かと必要になります。

しっかり覚えることをオススメします。

スクリプトを書きたいアーティスト・デザイナーが、詳しくは理解してないけど、こうやって書いたらあんな感じに動いた。
みたいな内容を目標にした記事です。

アーティスト・デザイナーがスクリプトプログラミングを学ぶキッカケになればと思い紹介しました。以上です









𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事