2018年5月6日日曜日

OpenMaya:頂点処理の速度比較

以前海外の記述で見つけた記述を参考に、選択頂点で、設定値より近接している頂点の検索処理を、OpenMayaとmayaPythonで比較してみました。

処理内容はどちらも
①選択頂点の座標を取得
②openMayaのMVectorクラスを使って閾値以上近接している頂点を検索
③エラーがあればリストに格納して返す

以下ソース
mayaPython
openMaya

で、結果。
mayaPythonの結果: elapsed_time:1.26999998093[sec]
openMayaの結果: elapsed_time:0.103000164032[sec]

うーん! これだけで10倍以上の処理速度の差が。
 ソースはもっと洗練できると思う。 もっと早くなるんじゃないだろか。
参考;
http://jensvhansen.com/fastest-way-to-query-vertex-position-in-maya/
https://boomrigs.com/blog/2016/1/12/how-to-get-mesh-vertex-position-through-maya-api

2018年4月30日月曜日

OpenMaya:現在のビューポートからフェースを選択する

大分前にopenMayaを使って、現在のビューポートからフェースを選択するコードを書いたのですが、 どこかに行ってしまい、参考にした海外の書き込みも見当たらず、どーしたもんかと思っていたところ、 ようやく見つけました。 こんどこそ忘れないように。 ※後になって参考にした書き込みを発見…はやくいってよぉ…。
参考:http://forums.cgsociety.org/archive/index.php?t-1045968.html

なお、元ソースを探してさまよっていた際、porySelectConstraintを使った方法を紹介している記述を見つけたので、試してみました。
参考:https://forum.highend3d.com/t/select-polygons-facing-camera/2782/3
しかし、使ってみると、こちらはポリゴンメッシュ内部にカメラがめり込むと、そのポリゴンメッシュが選択不能になってしまったので、openMaya経由のほうが無難に使えました。

2018年3月27日火曜日

現在のアクティブなシェルフを取得する

作ったToolのボタンをシェルフに登録したい。
ShelfLayoutをそもそも使っていれば何の問題もないけど、
さまざまな理由から、遠回りをしたいとき。

例えば右クリック⇒現在のMayaシェルフに登録などさせる場合、
現在アクティブなシェルフレイアウトの名前を取得したい。

そんな時はこちら。

2017年11月21日火曜日

レンダリング画像上の、あるノードのxy座標を取得する方法

レンダリング画像上の、あるノードのxy座標を取得する方法。
OpenMayaを介して、ワールド空間空間内の座標位置をカメラから計算し、画像上のxy座標を算出します。
レンダリング情報はレンダリング設定のcommon設定のresolutionから取得して計算します。

ソースまるコピ:
http://forums.cgsociety.org/archive/index.php?t-1109300.html
非常に分かりやすい記事でした。
なお、実際は知らせてみると、Photoshop画像上でx座標は正しい位置を取得しましたが、y座標の上下が逆転しました。
うーん、なんだろ。
以上、備忘録メモ

2016年11月16日水曜日

2016年11月14日月曜日

blenderスクリプトメモ:ビューポートのカメラ設定を変える

Blenderスクリプトは、カメラ設定をいじるのにも、どこに情報が格納されているのか、探すのに一苦労でした。。

ひとまず、現在のウインドウの、View_3Dパネルを取得できれば、いろいろいじることができそう。

以下ソース

しかし、ビューにすべてのオブジェクトが入るようにするやり方がわからなかった。
(ショートカットだと、shift+C)
引き続き調査してみます。

blender スクリプトメモ:fileDialogでファイルパスを取得する

Mayaのmelやpythonだと、fileDialogを出すのには全く苦労しませんが、
Blenderはかなり面倒くさかったです。
あちこち調べて、ようやくソースを見つけたので、こちらにメモします。

以下ソース

参考:



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

本当は、fileDialogから、単にパスを返すだけのソースにしたかったのですが、解決方法がわからず、fileDialogを呼び出した処理の中に、本処理を書き込む流れになっています。

うーむ。。気持ち悪い。。

というか、たかだかfileDialogだすだけで相当時間を食ってしまった…南無三。