2017年5月26日金曜日

Animation Nodes - Ring Generator

Animation Nodes 2.0 betaでリング形状のグリッドを生成してみる。ほぼスクリプトノードで実装。ちまちま結線するより大部分をスクリプトにするほうが早いような、本末転倒な気もしますが、、、


ANc2b_GenerateRingShape.blend(Blender2.78c + AnimationNodes2.0beta)

開発途上なバージョンなので仕方ないことですが、アップデートされるたびに廃止されるノードや規定値が変わって結線が外れるものもありますね。

「Change Matrix Pivot」ノードが無くなってるのはイタい。

2017年4月25日火曜日

Cython版Animation Nodes - FlipFace

Autodeskのメンテナンスプランは今後段階的に値上げ、Modo11も発表されましたが、こちらのプランも機能の割になんだか納得出来ない価格に思えます。

さて、Cython版Animation Node1.7.5用に以前のものを組みなおしました。


ポリゴン単位の操作が随分変わりましたね。

ANc_TransformPolygons.blend

重いのでEmptyの位置か描画サイズの更新で評価されるようにしてあります。

2017年4月22日土曜日

Cython版 Animation Nodes

久しぶりの更新です。

Animation Nodesが1.6のままなかなかアップデートされない。と思ったらCython版ブランチが作成され開発がすすんでいました。



blenderartists.orgのスレッドに詳しくありますが、各OS用に以下からダウンロードできます。
Version1.7.5です。実行速度を上げるためにCythonでの実装に切り替えられたため、今まで一つで済んでいたアドオンパッケージが各OS用に分けられています。また最適化は後回しにされているようで、いまのところPython版Version1.6と変わらないようにも感じます。

Python版との互換性はないようです。Cython版でもサポートされているノードはノードエディタに配置されますが、結線は全て切断された状態で復元されます。なので全部組み直しです、、、

2016年12月29日木曜日

Python奉行

初めてPyCharmを使ってみました、PEP8でのコーディング規約チェックが有効になってますが、すごいおせっかいなんですね。メンバ名は全て小文字だとか、コンマのあとは空白を入れろとか、インスタンス変数は__init__内で初期化しろとか、、、


メンバの命名がだいたいアウト
従いながら書いてたら全然はかどらない。かといってこの機能を全部オフってしまうとなんか他人にコードを見られた時ちょい恥ずかしい。

PEP8が他の言語にも共通した規約なら従いますけどね。

にしてもPyCharmは優秀!

2016年12月21日水曜日

Maya Asciiファイルをパースしてみた

そして一覧できるようにして見た。


Maxのシーンファイルの中からオブジェクト選択して読み込みと同じく、maファイルから欲しいものだけ選択して読み込み&上書きみたいな事ができれば良いなと考えています。

DAG階層をたどるのは難しい事では無いですが、DGをトラバースするのは厄介ですね。またアトリビュートが規定値の場合、maファイルにはそのアトリビュートは記述されないので、ちょっと一手間必要になりそうです。

2016年12月14日水曜日

Mac版Maya:Pysideで作成したウィンドウがメインウィンドウの後ろに隠れてしまう

Mac版のMayaではPySideで作成したウィンドウは「MayaQWidgetBaseMixin」をミックスインしていても、フォーカスが外れるとメインウィンドウの後ろに送られてしまいます。

隠れる!

self.setWindowFlags(Qt.Window | Qt. WindowStaysOnTopHint)
self.setWindowFlags(Qt.Tool)
などで、常に前面にすることも可能ですが、Melで作成されたウィンドウとのフォーカス処理がうまく機能しません。

さんざん探し回った結果ですが、ウィンドウへobjectNameを設定し、ウィンドウ設定の保存を許可するだけで良いみたいです。先日の例でいうと、以下の様に2行追記です。
class HtSetOutlinerColorDialog(MayaQWidgetBaseMixin,QWidget):
 def __init__(self, *args, **kwargs):
  super(HtSetOutlinerColorDialog, self).__init__(*args, **kwargs)
  self.closeOtherInstance()
  self.setAttribute(Qt.WA_DeleteOnClose, True)
  self.setObjectName("HtSetOutlinerColorDialog") #<- objectNameを設定
  self.setProperty("saveWindowPref", True) #<- ウィンドウ設定の保存を許可
  self.initUI()
objectNameを設定しないと「MayaQWidgetBaseMixin」によって「クラス名_UUID」というobjectNameが自動的に設定され、その名前が「windowPrefs.mel」へ保存されてしまいます。モジュールをインポートするたびにUUIDは変化するため、ゴミデータが「windowPrefs.mel」へ溜まることになりますので必ず設定します。

Windows版で開発していてると気づきませんが一般に配布するには気をつける必要ありですね。

問題の解決には「http://python_inside_maya.narkive.com/LwPxvddq/maya-python-qt-tool」を参考にしました。ちなみに行き着く為の検索ワードは「mac maya pyside window behind maya main window」です。