Gizmo OpenTK(或 OpenGL)
Gizmo OpenTK (or OpenGL)
这里有人写过使用 Gizmo 移动对象的代码吗?
我的意思是通过鼠标平移或旋转立方体?
例如在 3ds max 或 blender 编辑器中。
我不明白如何为此使用 3d 鼠标位置。
我做到了。我的算法:
Vector2 mouseDelta;//set this for your own
Vector3 objectPosition;//and this
Vector3 objectUpDir;//and this
//Here
Vector3 MoveY(){
Vector2 center = worldToScreen(objectPosition);//get center to screen
Vector2 up = worldToScreen(objectPosition+objectUpDir);//get up to screen
float ang = Vector2.CalculateAngle(mouseDelta,up-center);//get angle from up && mouse delta
ang = MathHelper.RadiansToDegrees(ang);//get degreees
ang = ang/90-1;//here :if perpendicular, then ang = 0
return objPosition + objUpDir * (ang/5);//5 - your speed
}
这里有人写过使用 Gizmo 移动对象的代码吗? 我的意思是通过鼠标平移或旋转立方体? 例如在 3ds max 或 blender 编辑器中。 我不明白如何为此使用 3d 鼠标位置。
我做到了。我的算法:
Vector2 mouseDelta;//set this for your own
Vector3 objectPosition;//and this
Vector3 objectUpDir;//and this
//Here
Vector3 MoveY(){
Vector2 center = worldToScreen(objectPosition);//get center to screen
Vector2 up = worldToScreen(objectPosition+objectUpDir);//get up to screen
float ang = Vector2.CalculateAngle(mouseDelta,up-center);//get angle from up && mouse delta
ang = MathHelper.RadiansToDegrees(ang);//get degreees
ang = ang/90-1;//here :if perpendicular, then ang = 0
return objPosition + objUpDir * (ang/5);//5 - your speed
}