Metasequoia BBS

| New message | Normal | Tree |
Status
Tag
Keyword
[6945] Pythonスクリプトで、標準機能の関数化 / まじかる☆しげぽん
[Request,Ve4.5.8] Response
質問スレで、レスとして要望を上げましたが改めてスレとして要望としてあげておきます。

Pythonスクリプトで法線方向に押し出したエッジ作成スクリプトを作成を進めていたのですが、やはり対応している関数が少なすぎます…。
標準機能で、「複製」でワンボタンで出来ることを元オブジェクトの頂点取得から新規オブジェクトの作成の処理、それに頂点再作成など全て書かないといけないのは、ちょっとした操作を自動化させるために負担が多すぎます。

http://help.autodesk.com/cloudhelp/2016/JPN/Maya-Tech-Docs/Commands/duplicate.html
MayaのMELですと、複製は「duplicate」1行で済むのがメタセコだと何行書かないと行けないんだろう…という状態です。

現在作成を進めていた、法線方向への移動もMayaのMELですと「moveVertexAlongDirection」1行で可能です。
http://me.autodesk.jp/wam/maya/docs/Maya2010/Commands/moveVertexAlongDirection.html

http://sadesignlife.blog99.fc2.com/blog-entry-54.html?sp
こちらのサイトで、作成しようとしている法線方向に押したしたアウトラインをMELで作成するリファレンスがありますが、6行ほどで可能です。
メタセコの現状のスクリプトですと法線方向への移動だけで頂点座標から面法線を求めて、そこからさらに頂点法線を求めるというのを全部書かないといけません…。

作業の合間に作るにはアーティストには、時間がかかりすぎて負担が大きすぎるため機能改善をお願いしたいです。
対応ご検討よろしくお願いします。
2017-03-22 05:20
[6946] Re: Pythonスクリプトで、標準機能の関数化 / まじかる☆しげぽん
リネーム処理一つとっても、メタセコですとドキュメントの取得からさらにそのドキュメントを指定してカレントオブジェクトのインデックスを取得してnameプロパティを指定して下記のように1行に収めると冗長的で、変数を指定するとリネームするだけで3行も必要になります…。

MQSystem.getDocument().object[MQSystem.getDocument().currentObjectIndex] .name= 'test'

doc = MQSystem.getDocument()
obj = doc.object[doc.currentObjectIndex]
obj.name= 'test'

http://me.autodesk.jp/wam/maya/docs/Maya2010/Commands/rename.html
MELですと、現在選択されているものに対して直接コマンドを実行するだけで済むのでrenameと入力して文字列を指定するだけです。

rename test;

指定したオブジェクトをリネームするのも1行で行えます。

rename obj1 test;

そもそも開いているドキュメントに対して処理するのに毎回お呪いのようにMQSystem.getDocument()を指定する必要があるのかという…。

obj.name = 'test'でカレントオブジェクトのリネーム

Show more...
2017-03-22 07:51
[6947] Re: Pythonスクリプトで、標準機能の関数化 / まじかる☆しげぽん
ちなみに、リネームはただの例えなのでリネームをこの仕様にしてほしいというわけではなく、全てに大してです。
2017-03-22 07:55
[6949] Re: Pythonスクリプトで、標準機能の関数化 / tamachan
標準機能の追加要望なのでちょっと違いますが良かったらどうぞ

MQOutlineGen v20170322
https://github.com/devil-tamachan/MQOutlineGen
裏面ポリゴン(アウトライン用)を作るメタセコプラグイン
単ポリ(ペラペラの髪みたいな)、両面ポリは未対応なので注意
2017-03-22 22:56
[6950] Re: Pythonスクリプトで、標準機能の関数化 / まじかる☆しげぽん
>tamachanさん
プラグインご紹介ありがとうございます!
ソース付きなので、参考になりそうです。
アウトラインプラグインについては、内製のリアルタイム厚み付けプラグインをベースに作成できそうなのでなんとかなりそうです…。

メタセコ側でのPythonスクリプト環境の改善は引き続き対応お願いしたいです。

2017-03-22 23:47
[6952] Re: Pythonスクリプトで、標準機能の関数化 / まじかる☆しげぽん
http://imgur.com/a/SUGEr

法線反転エッジを、メタセコ4の標準機能で作成してみた動画です。

1.法線反転エッジを作成したい面を選択してコピーしてペースト

2.選択部処理の「面を押し出し」で「押し出して出来た側面も選択」のチェックを外し、「通常の押し出し」でエッジの太さを「押し出し量」で指定して実行
(面を法線方向に移動する処理の代用)

3.押し出した面が選択されているので切り取ってペーストし、面を反転。

4.残った側面のオブジェクトを削除

5.新規マテリアルを作成して黒色を設定し、押し出して反転した面に設定


Pythonスクリプトで行いたいのはこういう一連の単純作業を、Photoshopのアクションのように自動実行する処理を行いたいのです。

欲を言えばPhotoshopのアクションのように、録画ボタンで記録できる形が理想です。
2017-03-23 06:05