2008年01月24日
Forceの使い方を間違っていた><
実は、昨年末から密かにリアルなアオウミガメの製作にも取り組んでいました。
モデリングは大よそ完成したのですが、どうにも動作が不安定で、ずっとテストしながら調整していました。

こんな感じの概観ですが、動作の問題とは大きくは2点あります。
1.移動中に上下にピョコピョコと不安定な動きをする。
2.首を動かすSculptedアニメで、Sculptedテクスチャの切り替え時に丸くなってしまう。
2の問題はSculptedアニメを使う以上、ある程度は止むを得ないと思っていますが、1に関してはどうにも不可解な状態でした。
この原因と対策が分からずに、時々思いつくとベータグリッドで試してみて、「あ~やっぱ駄目か・・・orz」を繰り返していました。
まあ、他の製作物と平行して進めているので、余り時間も取れていなかったのですが。><
最近一段落したので、再度ジックリとスクリプト内容を見直しながら、幾つかテストしてみました。
その結果、ようやく理由が分かりました。
一番の問題は、「Forceの正しい使い方を知らなかった」と言う事でした。
Forceとは・・・Mizさんの解説によると
「主に惑星ダコパのマスター・ヨーダの元で修行を積むことで実現される機能である。」とあります。つまり、マスター・ヨーダの教えを受けに行かないと・・・ってこれはMizさんの冗談ですね。
実際には物理オブジェクトに対して、与えられている力(=エネルギー)みたいなものです。
物理オブジェクトは動作する際に、エネルギーを消費します。そこでllSetForceを使って、永続的に力を与えてあげる訳です。
同じような関数で、llSetBuoyancyと言うのがあります。これは物理オブジェクトに浮力を与える命令です。
以前ジンベイザメの製作時に詳しく書きましたが(ジンベイザメのまとめ)、llSetBuoyancyは質量が80Kgまでの物体にしか効果が有りません。
その点llSetForceなら、本来llMoveToTargetの対象となる質量800KgまでならOKと言う事で、以降はllSetForceを使うようにしてきました。
が、このllSetForceに関しても、正しく理解はできておらず、その為に毎回ちょっとロジックを変えたりすると、不安定な動きになってしまう事はありました。
今回やっと正しい使い方を理解できたので、動作が安定するようになったのです。^ ^
説明しだすとややこしいお話になってしまうので、詳しくは後日「スクリプトのお勉強メモ」の方に書きたいと思います。
とりあえず、大きな問題が解決したので、これから本格的に仕上げに入ろうと思っています。
モデリングは大よそ完成したのですが、どうにも動作が不安定で、ずっとテストしながら調整していました。

こんな感じの概観ですが、動作の問題とは大きくは2点あります。
1.移動中に上下にピョコピョコと不安定な動きをする。
2.首を動かすSculptedアニメで、Sculptedテクスチャの切り替え時に丸くなってしまう。
2の問題はSculptedアニメを使う以上、ある程度は止むを得ないと思っていますが、1に関してはどうにも不可解な状態でした。
この原因と対策が分からずに、時々思いつくとベータグリッドで試してみて、「あ~やっぱ駄目か・・・orz」を繰り返していました。
まあ、他の製作物と平行して進めているので、余り時間も取れていなかったのですが。><
最近一段落したので、再度ジックリとスクリプト内容を見直しながら、幾つかテストしてみました。
その結果、ようやく理由が分かりました。
一番の問題は、「Forceの正しい使い方を知らなかった」と言う事でした。
Forceとは・・・Mizさんの解説によると
「主に惑星ダコパのマスター・ヨーダの元で修行を積むことで実現される機能である。」とあります。つまり、マスター・ヨーダの教えを受けに行かないと・・・ってこれはMizさんの冗談ですね。
実際には物理オブジェクトに対して、与えられている力(=エネルギー)みたいなものです。
物理オブジェクトは動作する際に、エネルギーを消費します。そこでllSetForceを使って、永続的に力を与えてあげる訳です。
同じような関数で、llSetBuoyancyと言うのがあります。これは物理オブジェクトに浮力を与える命令です。
以前ジンベイザメの製作時に詳しく書きましたが(ジンベイザメのまとめ)、llSetBuoyancyは質量が80Kgまでの物体にしか効果が有りません。
その点llSetForceなら、本来llMoveToTargetの対象となる質量800KgまでならOKと言う事で、以降はllSetForceを使うようにしてきました。
が、このllSetForceに関しても、正しく理解はできておらず、その為に毎回ちょっとロジックを変えたりすると、不安定な動きになってしまう事はありました。
今回やっと正しい使い方を理解できたので、動作が安定するようになったのです。^ ^
説明しだすとややこしいお話になってしまうので、詳しくは後日「スクリプトのお勉強メモ」の方に書きたいと思います。
とりあえず、大きな問題が解決したので、これから本格的に仕上げに入ろうと思っています。


