社区
机器视觉
帖子详情
OpenGL, 如何用Mouse移动一个3维坐标的物体? HitTest, MouseMove
jyc_nj
2004-09-27 04:25:18
OpenGL, 如何用Mouse移动一个3维坐标的物体? HitTest到物体作好了.
MouseMove时,如何改成新的坐标值?
谢谢.
...全文
216
5
打赏
收藏
OpenGL, 如何用Mouse移动一个3维坐标的物体? HitTest, MouseMove
OpenGL, 如何用Mouse移动一个3维坐标的物体? HitTest到物体作好了. MouseMove时,如何改成新的坐标值? 谢谢.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gwcui
2004-09-29
打赏
举报
回复
OPenGL中有选择、拾取。
用起来比较方面
比坐标的暴力计算简单一些
可以用拾取。
jyc_nj
2004-09-28
打赏
举报
回复
谢谢楼上的,我也基本是这样作的,
不过对第2条,我是用gluUnProject(用glReadPixels得到深度), 发现返回的3D坐标是在观察平面上,而观察点离物体远, 我就用前后两次坐标的差,来作为物体新坐标的变化值,绝大部分情况效果很好,但有时候gluUnproject获得的3D坐标值会突然"飞掉",变成很大的值.不知道这是怎么回事.
syy64
2004-09-28
打赏
举报
回复
或者加一个整个场景的底面。
syy64
2004-09-28
打赏
举报
回复
“但有时候gluUnproject获得的3D坐标值会突然"飞掉",变成很大的值”:
原因有下:
1、你点在空的地方(无模型处);
2、场景缩得太小(应尽量放大场景);
解决办法:
程序加判断,x,y,z方向都控制在场景之内。
syy64
2004-09-27
打赏
举报
回复
1、通过选择模式,选上该物体;
2、将鼠标移动的平面坐标计算成场景的三位坐标;
3、根据鼠标景的三位坐标重新计算物体坐标;
4、重画该物体。
OpenGL
实现的鼠标控制三
维
空间
物体
的
移动
要实现鼠标控制三
维
空间
物体
的
移动
就首先必须把鼠标
坐标
的屏幕
移动
信息转换为鼠标在三
维
空间
移动
的信息,反向利用上面的变换流程就可以实现了。因为视口变换不是一一映射的,所以
一个
屏幕
坐标
对应的在相机
坐标
内的一条线段,线段的一段在视体近剪裁平面上,另外一端在视体的远剪裁平面上。这里,我们可以作
一个
经过我们需要
移动
的
物体
的
一个
平面,这个平面与近剪裁平面相平行,这个平面与上面所提的线段有
一个
交点,这个交点就是鼠
OpenGL
Object
Mouse
Trackball 三
维
物体
的trackball旋转实现原理
https://www.khronos.org/
opengl
/wiki/Object_
Mouse
_Trackball这是一篇翻译+碎碎念~~~翻译的不好,见谅引言trackball(又称 arcball)是为了复杂三
维
物体
的旋转操作提供
一个
直观的用户界面(User Interface,UI 这里译成用户界面感觉怪怪的),使得旋转操作通过
一个
简单的虚拟的球体来实现。球体是虚拟轨迹球的很好的选择,因为球
OpenGL
中3D
物体
移动
功能的实现
OpenGL
,全称Open Graphics Library,是
一个
跨语言、跨平台的编程接口,专用于渲染2D和3D矢量图形。作为一种开放式、功能强大的图形API,它被广泛应用于计算机图形学领域,特别是在视频游戏开发和模拟系统中。
OpenGL
的主要特点包括利用硬件加速的图形渲染,以及
一个
在多种编程环境中都能工作的标准化接口。学习
OpenGL
,首先要掌握其核心概念,如渲染管线、上下文(Context)、状态机(State Machine)以及矩阵操作等。
OpenGL
之鼠标控制
坐标
系旋转、缩放、
移动
OpenGL
之鼠标控制
坐标
系旋转、缩放、
移动
1、实现代码 void CMyStatic::On
Mouse
Move
(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (point.x { int diffX = (int)(point.x - m_fLastX
Python
OpenGL
使
物体
旋转起来
小教程目录入门来个窗口完整代码结果图画个三角形完整代码结果图 入门 来个窗口 首先我们要导入库中的函数 from
OpenGL
.GLUT import * 我们需要
一个
窗口去显示我们想要展示的内容: glutInit() 窗口是有了,但是这个窗口的大小和名称我们都不知道,我们要定义一下它的大小和窗口名称: glutInitWindowSize(800, 600) glutCreateWindo...
机器视觉
4,514
社区成员
15,347
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章