92ODE: 2007年10月アーカイブ
テクスチャを切り替えるサンプルプログラム
チップさんから「プログラムに関する質問なのですが、テクスチャをたくさん使うにはどうすればいいのでしょうか?LOOPの中でfn.path_to_texturesのパスを変えてもテクスチャが変わらなくて悩んでいます。というご質問を頂きました今回のODE講座で回答します。
simloopの中でpath_to_texturesのパスを変えてもテクスチャは変わりません。
dsStartGraphics()を使う必要があります。ただし、drawstuff.hの95行目のdsSimulationLoop()の下に以下の一行を追加して、ode-0.9のフォルダでmake,make installし直してください。ode-0.8だとエラーが出るようです。
DS_API void dsStartGraphics(int window_width, int window_height, struct dsFunctions *fn);
なお、シミュレーション中の複数の物体に違ったテクスチャを割り当てるためには、dsStartGraphics()を各物体を描画する前に、各物体毎に呼び出さなければいけず、描画速度が遅くなります。drawstuffのソースコードに手を加えるか、他の3Dグラフィクスライブラリを使用することをお勧めします。
そもそもdrawstuffはテストプログラムの表示用ライブラリなので凝ったことはできません。その代わりにソースも短くコードも複雑ではないのでOpenGLの勉強にもピッタリです。
以下に't'キーと'u'キーを押すとテクスチャが切り替わるサンプルプログラムを紹介しますので参考にしてください。ここからダウンロード可能です。
お待たせしました。約半年ぶりのODE講座です。さて、任意のベクトルの向きに沿うように円柱を表示させる方法に関してご質問があったので、試しにサンプルプログラムを作ってみました。
ここではdRFromAxisAndAngle()とdRFromZAxis()のAPIを使って実現しています。 この他にdRFromEulerAngles()のAPIもありますが、ODEのオイラー角はロボット関係者にとっては標準的ではないので省略します。 詳細については、よくある質問をご覧ください。
