• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OpenGLでkeyboardやmouseを使いたい)

OpenGLでkeyboardやmouseを使いたい

このQ&Aのポイント
  • キーボードとマウスを使ってOpenGLでグラフィックを制御する方法についてのヒントをお願いします。
  • キーボードで入力した内容に応じてグラフィックが動作する方法や、マウスの動きに合わせて視点を回転させる方法について教えてください。
  • 既存のプログラムを参考にして試してみたのですが、クリックするたびに視点が遠ざかるばかりで最終的には表示が消えてしまいます。どのように修正すれば良いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Shinoa
  • ベストアンサー率92% (12/13)
回答No.3

私は以下の方法でマウスによる視点の制御を行っています。 移動パラメータを _mx, _my, _mz 、 回転パラメータを _rx, _ry, _rz 、 マウスの移動量を dx , dy として、    1.回転   _ry += dx ;   _rx += dy ;   _rz += dx ;  2.拡大縮小   _mz += dy ;  3.並行移動   _my += dy ;   _mx += dx ;   ホイール操作の場合は、移動量dyを回転量に置き換えてください。 視点の初期値、移動量、移動方向はお好みに合わせて調整してください。 また、視点の回転は、 『シフトキー押下しながらマウス移動』で1軸固定回転 などの制御を加えると、視点操作しやすくなると思います。   後は、実際に描画する時に、物体自体を移動させます。      // 移動   glTranslated( _mx, _my, _mz );   // 回転   glRotated( _rx, 1.0, 0.0, 0.0 );   glRotated( _ry, 0.0, 1.0, 0.0 );   glRotated( _rz, 0.0, 0.0, 1.0 );      // ここで、描画を行う。    これで、お望みの動きに近い事はできると思うのですが、どうでしょう? 以上、ご参考になれば幸いです。

star_blue
質問者

お礼

ありがとうございます。 今は、ほかの事で手がいっぱいなんですが それが済み次第挑戦してみます。 ありがとうございました。

その他の回答 (2)

  • togino
  • ベストアンサー率75% (97/129)
回答No.2

#1 の回答勘違いしてます・・・ごめんなさい。

  • togino
  • ベストアンサー率75% (97/129)
回答No.1

外していたらすみません。ごめんなさい。 gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz); ってなっているので、視点を動かすなら 引数の前3つの方を動かすのでは・・・ > クリックするたびに視点が遠ざかり ではなくて、中心が遠ざかっていったのではないかと。 あと、x0,y0,z0 って増加する一方ですよね。 クリックする度にいずれは・・・

関連するQ&A