Qt调用camera实现3D漫游问题求教

chuanxd 2014-08-11 09:14:15
小弟最近在学Qt3D绘图部分内容,已经实现了Qt画立方体、圆柱体等,圆柱体如图
现在想加入鼠标按键控制,参考CSDN某大神的3D漫游例程http://blog.csdn.net/lovehota/article/details/17374303?reload
按照例程说明把glcamera、鼠标按键类都添加到3D圆柱体的工程下,显示部分代码如下
void WidgetCylinder::initializeGL()
{
//初始化相机
Vector3d pos(0.0, 0.0, 12.0);
Vector3d target(0.0, 0.0, 0.0);
Vector3d up(0.0, 1.0, 0.0);
camera = new GLCamera(pos, target, up);
}

void WidgetCylinder::resizeGL(int width, int height)
{
//防止窗口大小为0
if(height == 0)
{
height = 1;
}
glViewport(0,0,(GLint)width,(GLint)height);

camera->setShape(40.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0);

//选择模型观察矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void WidgetCylinder::paintGL()
{
//清除屏幕和深度缓存
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

camera->setModelViewMatrix();

//移动到屏幕背后足够距离以便能看到全部场景
glTranslatef(0.0f, 0.0f, -10.0f-40);

DrawSolidCylinder(cylinderTissuecenterPos[0],cylinderTissuecenterPos[1],cylinderTissuecenterPos[2],cylinderTissueAxisLength[0],cylinderTissueAxisLength[1],cylinderTissueAxisLength[2],
26);
}

鼠标按键部分代码和例程中是一样的,结果代码运行结果为开始圆柱体所示,点击鼠标也没有反应,我怀疑是上述显示部分代码出现了问题,反复找了很长时间也没发现问题出在哪,小弟初学Qt,恳请论坛大神为小弟指点迷津,小弟不胜感激
...全文
265 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010284864 2014-09-20
  • 打赏
  • 举报
回复
请问你是怎么解决的啊
chuanxd 2014-08-19
  • 打赏
  • 举报
回复
谢谢彩阳提供的调试方法,问题已经解决,原因是我把鼠标所在的类给弄错了,鼠标应属于QGLWidget类,即应与OpenGL在相同的类,在此类下调用camera进行显示
彩阳 2014-08-14
  • 打赏
  • 举报
回复
这种情况需要在mousePressEvent中逐个通过qDebug( )输出来判断,或者更直接的调试一下吧。

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧