SeExprノードの開発状況と、その他

Blackbodyをリリースして以降、SeExprノードを改良すべく日夜奮闘しています。

今回のNew Featureは、

  • Vertex Normal、Vertex Color、UVの編集
  • 自前関数(特定メッシュ上の最近点の取得のための関数)の実装

と定めて開発を進めていました。


で、前者は比較的楽に実装が済んだ(といってもあれこれ引っかかって苦労しましたが、、)のですが、後者に関してはここ1週間ぐらい、休日や仕事後の時間を利用してちょくちょくあれこれいじっていました。
実際、ほとんどの時間は調べ物に費やされ、新たな情報を得てはコードを直し、また戻し、、といった地味な作業の繰り返しばかりやっていました。
というのもSeExprで自前関数を作成する際のドキュメントが非常に少ない!!
結果的には彼らが公開しているものをソースコードを照らし合わせて、どうにかこうにか落ち着かせた次第です。

で、結果がこれです。

[Maya] SeExpr Mesh Deformer Node RnD2 from taikomatsu on Vimeo.

シンプルなテストなので一見アレですが、色の付いてるところがメッシュに近いということです。

まぁどうにか動くには動いたのですが、めっちゃ重い!!
現在各点に対してMFnMesh::getClosestPoint()を使用して対象メッシュの最近点を取得しているのですが、おそらくこの関数が遅い。総当たりとまでは言わないまでも、空間構造を用いた近傍点検索などの高速化は行われていないんじゃないか、というのが僕の予想です、、

これをどうにかするには、自分でなんとかする、つまりAPIに頼らないで計算する必要が出てきます。

いやーーーしかしどうでしょう。
僕そこまで想定してなかったんですけども!!!!!!!!
getClosestPointつかえば良いじゃん!:D ぐらいに気楽に考えてたからこそチャレンジしたんですけども!!!!!!

Kd-Treeとか言われてもおっさんには難しすぎてわかりません・・・
まぁでも、出来ることは一通りやってみようと思っとるところであります。

空間構造なんぞは、この先自分で作る機会がそうそうあるわけではないとも思うんですが、知ってて損はしないものだとも思うので、まぁほんとに、出来る限りのところまでやってみます。無理はせず。ダメそうならすっぱりあきらめます。
そしたらこのツールも自前関数拡張は無しということでリリースする予定です。
さあ年内間に合うか・・・?いやー無理かも(^q^)/

というわけでこっちはこんなもんです。
引き続き頑張ります。

もし何か、こういうのあったらいいんじゃない?というアイディアお持ちの方いらしたらこっそりメールなど頂けると幸いです。
出来る限りチャレンジしてみたいと思います・・・!

 
ほんで、次。

先日リリースしたBlackbody Tool for Mayaですが、予想以上の反響を頂き、大変嬉しく思っております。
ありがとうございます。

リリース直前に必要なファイルを消してしまって動かない!というお約束を経て(^q^)/、現在は上手く動作したとの声が続々届いており、まずは一安心といったところです=3

Youtubeにはこんな動画をUPしてくれてる方も。ありがとうございます、そしてThank you very much!

いやー、良いですね。
自分以外の方がこうやって使ってくれるのはなかなか嬉しいものがあります。

で、他にも様々メールを頂いたりなどしているのですが、その繋がりからちょっと素敵な展開へと発展しました。
詳細は省きますが、こうなりました。

ドン!

SOuP-Development – TOOLS

SOuP-Devさんのサイトにリンクを貼って頂けることになりましたーーーー!!!(ワーードンドンドン

ヤホーーーーーーーーーーーーーーイ!!!!!!!!
ありがとうございますありがとうございますm(__ )m m(_ _)m m( __)m アザマスアザマス!!

SOuP-Devさんのページは1日で数千程度のページビューがあるそうで、ますます多くの方の日々の制作の助けになれましたらこれ幸い、でございます。

一つ心が痛い点があるとすれば、僕自信SOuPを使った経験がない、というところ・・・!!

・・・

えーと、今後もまだまだMayaは捨てられない様子ですし、ここらでいっちょSOuPでもやったるか!と思ってるとか思ってないとか、そういう話もあるとかないとかなので(しつこい)、SeExprの方が落ち着いたらちょっと触ってみたいなーと思ってます。

つい昨日、ロンドンのMainframe社からMASHがリリースされて、Mayaでのプロシージャルアニメーションがより強化された印象もあるので、ホントにタイミングみて使ってみたいなと思っています。

MASHに関しては、こちらもまた使う機会があればレビューなどしてみたいなーと思います。
まぁ、機会があれば、、、 い、いや、つ、、作ります。頑張ります。。サーセン
(余談ですが、こちらもSOuP-Devさんのページにリンクがあります。)

 
というわけで、また何か進捗があったらUPしていきます。
BlackbodyToolも併せて、よろしくお願い致します。

m(_ _)m

「SeExprノードの開発状況と、その他」への2件のフィードバック

  1. コマツさんこんばんは。
    いろいろトライされてて素晴らしいです。

    MFnMesh::getClosestPoint() は内部で空間構築はするものの、
    探し終えたら捨ててしまう(残してもしょうがない)気がするので、
    大量に呼ばれるともったいない(+遅くなる)ことになるような気がします。
    ポイント数回す前に、MMeshIntersector::create で空間分割(Octree)を作成し、それを使い回して MMeshIntersector:: getClosestPoint をする、
    というのがおそらくは maya として推奨になるのではと思います。

    MMeshIntersector(空間分割) + OpenMP(並列化) をしている
    そのもののサンプルが devkit に splatDeformer.cpp として存在していますので、うまく組み込めたら嬉しくなりそうですね。

    Blackbody Tool 含め応援してます。(^_^)b

  2. >hira先生
    アドバイスありがとうございます!
    先日何かいい方法はないかと調べていたところ、MMeshIntersectorの存在を発見し、先ほど早速仕込んでみました。
    そしたらもう何倍なのかわからないほどに高速化!!!
    これで実用になり得る!

    splatDeformer.cppの存在は全く知りませんでしたが、今回やりたいことのど真ん中!早速拝見したいと思います。
    諸々ありがとうございます!!!

    がんばります!

コメントを残す

メールアドレスが公開されることはありません。