« ブールのトグル。 | トップページ | 乳トラルポーズでポン。 »

2012年1月11日 (水)

ctr_dist と this_model の軋轢。

なぜか、ctr_dist の中で this_model が使えないんですよ。
誰か実験してくれませんんか。



エクスプレッションの ctr_dist です。2つのオブジェクトの間の距離を返してくれるという、すごく便利なエクスプレッションです。 今回はこんなエクスプレッションを書きました。

Thismodel1

ctr_dist( Model.Man_A, Model.Man_B )

Mac_C のスケールXにエクスプレッションを仕込みました。  Man_A と Man_B の距離をスケールXにブチ込むので、A や B を適当に横に動かして両者の距離を広げたり縮めたりすると、それに合わせて Man_C のスケールXが変化するというものです。 なんてことありません。


Man_A, Man_B, Man_C は、いずれも Model という名前の Model に所属しています。なのでオブジェクト名のところは、"Model.Man_A" のように、Model名を含めたフルネームになってます。 これで何も問題ないです。 ちゃんと動いています。 




でも今回は、例えば Action 化して汎用的に使おうなどという場合のことも考えて、this_model を使いたいんです。"Model" などという、汎用性の無い特定の名前を記述してしまうのではなく、「名前はどうでもいいから、そのオブジェクトが所属している Model 」 という記述にしたいのです。 だからこそ、this_model です。 そのためにある this_model です。まあ、そのためだけではなく、例えば Model名を覚えていなくても this_model で通っちゃえばラクだから、という意義もあると思いますが、いずれにせよ this_model は便利で有用なものです。




ってことで

ctr_dist( this_model.Man_A, this_model.Man_B )

と書いたのですが、

Thismodel2

効かないんですよ。


「効かない」
 というのは、エクスプレッションがセットされないという意味です。 Apply 押してもガン無視されます。 まだエクスプレッションが何もない状態でこのように書くと、ガン無視され、既に何かエクスプレッションがセットされていた場合は、元のエクスプレッションのまま更新されていません。つまり、やはりガン無視されているということです。


いろいろいじってみて、今のところ、

 ctr_dist のカッコの中では this_model は効かない
 それ以外では、ちゃんと this_model が効く

という風に、俺には見えるんです。



誰か実験してくれませんか。

とりあえず、this_model を使わない状態でちゃんとエクスプレッションが効いている状態のシーンをアップロードしておきました。 XSI のバージョンは 2012 です。

ダウンロード CtrDistAndThisModel.zip (114.9K)

これを this_model に書き換えられるかどうか、試してもらえませんかね?






それと、このシーンで試しただけだと、俺がこのシーンを作る時に何か変なことをやらかしている可能性を否定できなくなるので、できれば、まっさらな新規シーンの状態から、ご自分でこの問題を再現させられるか、試してもらえませんか? なにとぞご協力を。


まあ、this_model 使わなくてもなんとかなりますけどね。 でも Action 化して他の Model で Apply した時とかに困るんだよな。 リギングしてると、後半になって全体の整理のために新しい Model に移したりとか、よくやるから。 その時エクスプレッションが、古い Model の方を参照しようとしていたら困るから、確実に新Model 以下のオブジェクトを参照している状態にしたい。新Model に親子をつなぎ直すだけなら、エクスプレッション内の参照先の記述は自動でアップデートされるから問題ないと思うんだけど、Action 経由にすると、当然 Action 内は自動でアップデートされないから、困るんですよねえ。





ともかくだ、ctr_dist は、本当に this_model と相容れないのかどうか。

これがバグだろうが仕様だろうが今はどうでも良くて、どんな環境下でも現象として常に再現するのかどうかを、まずは調べたいのです。





俺ひとりでは、なかなか結論を出せないというか。 どうしてもワークフローの手グセもあるし、もろもろの初期設定など条件が固定されたもとでは、客観的な結論を出しにくいです。 なので、色んな人が、それぞれの環境下で実験して、それでも再現するということが確認できたら、


  嘔吐デスクどうしかしろやゴルァとか、

  今はこういうもんだといったん受け入れて、代替ワークフロー考えようぜオルァとか、

  次にこれに出くわしても焦らないぜもう分かってるぜさっさと this_model あきらめて実Model名使うことにするから無駄な実験の時間はかかんないぜノルァとか、


こんな感じで建設的に次のアクションに進めます。 まずは現象として再現するかどうかの確認が、第一歩です。

どうかご協力をお願いします。










こんな感じで、俺の代わりに誰かに実験をやらせる今さら聞けない素朴な疑問を誰かに質問したり、お互いに協力して実験したりする空気ができるといいなあ、などと妄想しております。 




俺の場合、SI|3D が XSI になった頃から、ひとりで実験したり開発したり、必死で英語の情報を漁ったりしながら、誰にも聞けず悶々としながら何年も過ごした時期がありました。 ひとりで調べて、ひとりで実験して、ひとりでワークフローを決めて指示を出したり。 まわりにダメ出しをしてくれる人はいなく、俺様流で文句も言われないのである意味ではラクではありましたが、すごく孤独感があり、つらい感じがしてました。  「これ、オレ流過ぎるよな?」 「普通どうやるんだろう?」 「俺、自己流を通してばかりで、時代に置いていかれてる気がする」 「誰か俺に教えてくれよ。毎日調べ物と実験だけじゃ、仕事進まねえよ」 などとストレスを溜めていました。  

インターネットでの交流がさかんになってきたので、それを利用して、グダグダにならずにCGの情報共有ができる場所を作ろうなどと妄想して実験したこともありました。



しかしここ1~2年で大きく状況が変わった感じがしています。ツイッタとかで質問もできるようになったし、個人的にだいぶ知り合いも増えたおかげで直接質問したり意見を聞いたりすることもできるようになりました。 一時期に比べれば夢のようです。 XSI Base のスレッドに深く潜ってってどうにかするのが唯一の方法だった 2003年とか 2004年頃を懐かしく思い出します。


ただし、ツイッタは気軽でいいのですが、常に見ていないとすぐに情報が流れ去ってしまう感じがしていて、CGの話の情報交換場所としては俺はまだ上手く活用できていません。欲しい情報だけフィルタする方法がわからんと言うか。  ツイッタの利用目的も皆バラバラなので、そこが良い所ではあるのですが、欲しい情報は埋もれてしまう傾向にありますよね。原発やセシウムや東電のことばかり喋りたい人もいるし、格言や名言みたいなのが好きな人もいるし、食い物の話とかも出るし、性器の名称を連呼するような馬鹿野郎もいるし、すげえカオスです。 このカオスの中で自分の目的に合致するよう情報をフィルタするのは至難の技です。

また、あまりにも気軽過ぎるゆえに、何か言うにしてもついついテキトーなことを言ってしまいそうになりますよね。 誰かに質問された時などに、自分で改めて実験もしてないのに、テキトーな記憶を頼りに 「こうじゃなかったっけ」 みたいなことをついつい言ってしまいます俺。 すいませんすいません。 でも、その気軽さゆえに情報を引き出すのが簡単なのがツイッターのいいところなので、気軽で無責任な発言だったとしても否定はしないしむしろ歓迎したい気分です。 でもそれだけではいけない。こうしてブログなどにベイクしておくことも重要だと思っております。

気軽で活発なやりとりから関心や興味が芽生え、複数の人がもう一段階踏み込んで実験し、結果を教え合い、最後にブログにベイクというのが理想ですかね。 いや、そんな上手くいくわけないな・・・。  ともかくですね、ひとりでやっていてもダメなんです。そんなんじゃあの暗黒時代に逆戻りです。 皆さんとやりたいんです俺は。







あれ? なんか話が硬くなってるよ。
この記事書き始めた時点ではそんなつもりは全くなかったはずなのに。
ctr_dist ゴルァしか考えてなかったのに。

おかしいな。


まあいいや。

早く俺の代わりに実験して下さい。







.

|

« ブールのトグル。 | トップページ | 乳トラルポーズでポン。 »

コメント

ctr_dist( this_model.Man_A.kine.global.posx, this_model.Man_B.kine.global.posx )では上手く動いたです。
ctr_dist( this_model.Man_A.kine.global.pos, this_model.Man_B.kine.global.pos )では適用されませんでした。
なにかヒントになりますでしょうか?

投稿: | 2012年1月11日 (水) 12時13分

実験あざます!(゚∀゚)

で、はい、まさにそうなんですよ。 他のお方の実験からも同じ結果が得られています。 つまり、「pos で記述をやめずに posx まで書けば、this_model が ctr_dist と併用できるようになる」ってのが正解なように、今のところ見えてます。

そして、posx って書いたから x 軸の距離しか考慮しない値を返すのかと思いきや、どうやらちゃんと3軸考慮された、2点間の3D空間上の正しい距離を返しているように見えます。

どうでしょかね?
認識違えばまたお知らせ下さい。

投稿: junki | 2012年1月11日 (水) 13時58分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ctr_dist と this_model の軋轢。:

« ブールのトグル。 | トップページ | 乳トラルポーズでポン。 »