[Maya]SeExprMeshノード絶賛開発中

大絶賛開発中であります。
でも今回は絵とか何もありません。
失敗談ばっかりです:P


先週末ぐらいに、一応closestPointが動いた!!となって大喜びしていたのですがまぁとにかく遅い。
遅すぎてワロスな状態でした。

その後Twitterなどで大騒ぎしてあれこれ教えて頂いたり、コメント欄にhiraさんよりコメント頂いたこともあって、MMeshIntersectorを使うと空間構造を使いまわして高速な最近点検索が出来るという事がわかりました。
皆様本当にありがとうございました。

で、早速やってみまして、出来ました。

まじ速ぇええええ!!!!
って思うぐらいには高速化しました。
ホント感謝です。

しかしやはりまだ若干遅い感がある。
ここはいっちょマルチスレッド化行くしか!!!!と思って無謀にもチャレンジしてしまいました。

一部配列の扱いなどでダメそうなところを修正して、まぁそんなにおかしなこと書いてるところもないし、比較的簡単に通るだろぐらいの気持ちで、まずはビルドしてみました。
この時実はMaya2013推奨のgcc4.1.2を使用していたのですが、OpenMPは4.2以降じゃないと使えない(使うのがめんどい?)らしく、しゃーないのでシステムデフォルトの4.5.x(詳しくは覚えてませんが確かこのぐらい)を使用してビルドしたところ、なんなくビルドが通り、Mayaでもロードできました。
なんだ、無理して古いの使う必要ないんじゃん:(

で、動かしてみました。
動きました。
・・・いや、違う。
動くには、動きました。
でもメッシュが完全に破綻しとる。。破綻しとるで兄ちゃん・・・・

なんじゃいと思って、値はいじらずにそのまま出力し、inとoutの値を調べてみたらまぁすごい違うわけです。全っ然別。いじってないのに。多分値の設定の時点でそもそも変な値入ってきてる感じだなーこれ、とかあれこれ推測しながら、現在いろいろ対策中です。

やはり鬼門のマルチスレッド化、僕の安易な想定など一瞬で亡きものにしてくれました・・・
いやー、、甘かった。それなんてスイーツ?ってぐらい甘かった。

で、しゃーない一旦動くところに戻すか、と思って戻してみたら、あれこれいじりすぎちゃって戻らない(^q^)/ バックアップファイルなんてものは取ってません。まぁどうせすぐ元に戻せますし・・・(震

というか実際このままではMT化出来ないのも分かったので、その辺り一式まるっと書きなおすつもりだったのでバックアップとかも取ってませんでした。なので問題なしです。
SeExprの方の絡みとか、MT化する際の禁じ手(ロックがどうとか)を使ってないかとか、もうちょっと調べておかないと心配な怪しい部分がチラホラあるので、数日調査してみます。

余談ですが、closestPoint以外はMT化して動作させることも出来たんです。
で、めっちゃ速くなった。速くなりましたまじで。倍は出てた?詳しく計測した訳じゃないので分かりませんが、体感かなり速くなってました。
元々やる気全然なかったんですが、是非実装したいと思うほどでした。なのでこれもまた良い機会と捉えて、ちょっとハードル高いですが挑戦してみたいなと思ってます。

完成が先延ばし先延ばしになるーーーーギャーーーーーーー

この開発のあれこれが終わったら、中身の解説をまとめ的に書いてみようと思っています。
そんなに何点も書けることがあるわけではないのですが、後々見たときにメモにもなるでしょうし、良い機会ですし。

さー今月中にはある程度目処をつけたい!!行けるか・・・!?

がんばりまーす。

コメントを残す

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