v0.1ってとこ? しかし問題も、、、

先日作った擬似SSSプラグインですが、
一応思ったとおりの動作をするようになりました。


動かなかった原因は、なんとも情けない原因でした、、、
結果から言うと、配列の初期化ミス、ってところでしょうか、、、

例えばMELだと、これでint配列の初期化完了です。
○ int $hoge[];

でもCだと、これではエラーです。
× int hoge[];

なぜならC言語では初期化の際に配列の要素数(?)を与えてあげないといけないのです。
○ int hoge[10]; のように。

今回は、MIntArrayとMFloatVectorArrayの変数の宣言の際に、
しっかりと初期化がされるようにしていなかったのが原因っぽいです。

例えばMIntArrayだと、
MIntArray a( 1, 0 );
としてやることによって、1要素の配列が作られるようです。

ここをスルーしていた。これがマズかった、模様。
MayaのAPIを使ってるってことで、全部やってもらってる感覚でした。
そんなわけないですね。すみません。

で、ここを直したらすんなりと完成。

渡すパラメータ間違ってないかとか、引数に不備はないかとか調べてたけど、
そういうことじゃなかった、ってことね、、、

これが出来たらあとは使い勝手を良くするためにアトリビュートを整理したり、
ライトの情報を反映できるようにしたり。
それが終われば擬似SSSシェーダv1.0完成か!?
ウヒョーーーーーっっ!

と思っていたら、また別の問題が浮上、、、

えーーーーー。
このままだと全然使えないじゃん、、回避作を練らないと、、、。

何かnewメソッドがあるに違いない!
間違いない!

なんとかしないともったいないもの。

引き続き、がんばりまーす。

「v0.1ってとこ? しかし問題も、、、」への2件のフィードバック

  1. 配列数はけっこー最初とまどうよね。
    配列数を変数にすると駄目だったり。

    でもAPIで作るとappendが使えて楽チンなので
    すぐ慣れちゃったわ。

  2. >hajimeさん
    配列のサイズ指定、どうしても忘れちゃうんですよね、、、
    僕もMELから入った人間、どうしてもココは、、、

    MayaのAPIにappendがあったのも初期化忘れの原因だったりします。
    append出来るなら初期化しなくても平気かな、みたいなノリでした。
    勿論そんなわけはないんですが、、

    それにしてもAPIいじるのは楽しいですねー。
    ノードも作れちゃうから、MELいじってる時の物足りない感を埋めてくれます。

コメントを残す

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