2009/02/18

glutMotionFunc

By using glutMotionFunc, I can smoothly move camera direction, panning camera. Please refer the following sample code. Since glutMotionFunc is activated only after the first move of mouse, glutMouseFunc( mymouse ) shold be used to get the point you clicked the mouse button.

glutMotionFuncを使って、マウスのボタンを押しながらマウスを動かすことによって、スムースにカメラの方向を変えられるようになりました。OpenGLの入門書を読んでも今ひとつはっきりしないのですが、下のようにやれば簡単です。glutMotionFuncはマウスを動かした後の座標しかレポートしませんので、マウスボタンを押した時の座標はglutMouseFunc( mymouse ) から取得しなければなりません。

gx=gy=0

def mymouse(button, state, x, y):
global gx, gy
y = window_size[1] - y
gx = x
gy = y

def mymotion(x, y):
global gx, gy
y = window_size[1] - y
dx = x - gx
dy = y - gy
# calculation of global vars used in glutDisplayFunc( display )
glutPostRedisplay()
gx = x
gy = y

glutDisplayFunc( display )
glutMouseFunc( mymouse )
glutMotionFunc( mymotion)

0 件のコメント: