こんにちは
今回はYoutubeからコメントを頂いた内容を掲載していきたいと思います。
タイトルにもある通り、MaxscriptでFKIKスナップを作ってみる!です。
まずはこちらがスクリプトの記述になります。
--アトリビュートを作成
IK_FK_Switcher_Custom_attribute = attributes costom_Attributes
(
--ボタンを配置するロールアウトを作成
rollout IKSwitchRollout "IK/FK Switch" --""の中にロールアウトの名前
(
button ui_IK2FK "IK --> FK" width:160 heigth:30 --ボタンを作る、""の中にボタンの名前
button ui_FK2IK "FK --> IK" width:160 heigth:30
on ui_FK2IK pressed do --作ったボタンを押した時の命令
(
try ($'Ctrl_L_FK_Up_Arm'.transform = $'Bone_IK_L_Up_Arm'.transform) catch () --位置合わせ
try ($'Bone_L_FK_Arm_Joint'.transform = $'Bone_L_IK_Arm_Joint'.transform) catch ()
try ($'Bone_L_FK_Low_Arm'.transform = $'Bone_L_IK_Low_Leg'.transform) catch ()
try ($'Ctrl_L_FK_Hand'.transform = $'Bone_L_IK_End'.transform) catch ()
)
on ui_IK2FK pressed do --作ったボタンを押した時の命令
(
try ($'Ctrl_L_IK_Hand'.transform = $'Ctrl_L_FK_Hand'.transform) catch ()
)
)
)
--1行目で作ったアトリビュートをカスタムアトリビュートに追加
CustAttributes.add $.modifiers[1] IK_FK_Switcher_Custom_attribute
おおまかには、ボタンを作りそれを押したら指定した名前のボーンの位置を合わせるという命令を実行。
そしてそれらをカスタムアトリビュートに追加します。
「--」はコメントアウトなので丸丸コピペでも動くと思います。
( ) で区切られているのは命令の始まりから終わり部分を指すMaxscriptならでは(?)の表記です。
下線部は後々使いまわすことになる文です。同じ文がいくつか使われていることが分かると思います。
on name pressed doなどはわかりやすいですね。押したら実行ということです。
そしてその命令は直下の()で区切られた部分になるわけですね。
try() catch() はtry()の部分を実行し、実行できない場合にcatch ()の部分を返すということなのですが、上記のスクリプトのようにcatch ()に何も書かなくても大丈夫です。
仮に、
try
$.gbufferchannel = spn1.value
catch
MessageBox "オブジェクトが選択されていません"のようにすると、上記コードではオブジェクトが選択されていない場合にエラーメッセージを返すということになります。
アトリビュートを作ってロールアウトを作ってボタンを作って命令を記述したら、
最後はそれをカスタムアトリビュートに追加するなりウィンドウを作って配置するなりしなければいけませんよね。
上記コードでは選択されたオブジェクトのカスタムアトリビュートに追加させています。
$.modifiers で選択したオブジェクトのモデファイヤ ということになります。
今の僕が説明できるのは大体このくらいだと思います。
スクリプトを一度も書いたことがない人からしたらこれだけでの説明では理解できない部分が多々あるかと思いますが、とりあえずは丸写しでも実行して試してみたりするのが第一歩なのではないでしょうか?
正直僕もまだまだスクリプトは勉強中なのであまり偉いこと言えません。。。
Maxscriptであればブログでコードを紹介しているところもたくさんありますし、
「ScriptSpot」というところでMaxのスクリプトをダウンロードして使ってみることもできます。
CGをやっていると、繰り返しの無駄な作業や少し面倒な作業が発生することが多々あります。
そんな時、スクリプトの知識が少しでもあれば打開策を見いだせるかもしれません。
スクリプトに少しでも興味がある方は、まずは何か一つだけでも試しにスクリプトを使ってみたら案外ハマるかもしれません笑
それではまた次回ノシ
0 件のコメント:
コメントを投稿
ネタ募集中