• 大小: 2.99MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-17
  • 语言: 其他
  • 标签: Qt  源码  

资源简介

本程序由QT+OpenGL开发而成,能以点,线,面,平滑表面等方式显示模型,支持自由旋转,缩放,拖动,能检查模型是否完整,并自动补全模型,能读取ascii编码的obj模型和CAD模型

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “math.h“
//#include 

#include “glworkplace.h“

GLWorkplace::GLWorkplace(QWidget *parent)
    : QGLWidget(parent)
{
timer = new QTimer(this);
modified = false;

}

GLWorkplace::~GLWorkplace()
{
//glDeleteList(obj);
for(int i=0;i deleteTexture(texture[i]);
}

void GLWorkplace::initializeGL()
{
stopSign = 0; //stopSign=1则不能加载文件
xrot=0;
yrot=0;
zrot=0;
xsig=ysig=zsig=0;

showAxis = true;
showBox = false;
showNormals = false;

texturesOn = false;
isSmooth = false;
editMade = NONE;
editDraw = false;
otfselectionType = TWO;

textureNum = 0;

infoBar = false;

scanRatio = 0;

pointSize = 1.0f;
lineWidth = 1.0f;

paintType = F; //初始化作图模式为三角形面

om = new CobjectModel;

QWidget::setMouseTracking(true);//开启鼠标跟踪,若为true则当鼠标不按下按钮也能触发mouseMoveEvent()

cfps = 0;

//************置matrix_rotate为单位矩阵用于trackball保存动作后的矩阵**********
glPushMatrix();
glLoadIdentity();
glGetDoublev(GL_MODELVIEW_MATRIX matrix_rotate);
glPopMatrix();
//*****************************************************************************

glEnable( GL_TEXTURE_2D );
//启动纹理贴图

glClearColor(0.0f0.0f0.0f0.0f);

glClearDepth( 1.0 );
//设置深度缓存
//glEnable( GL_DEPTH_TEST );
//glDisable( GL_DEPTH_TEST );
//启用深度测试
glDepthFunc( GL_LEQUAL );
//所作深度测试的类型

glClearStencil(0.0f);
glEnable(GL_STENCIL_TEST);
//使用0表示清除模版,启用 模版测试

//glHint( GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST );
//纹理压缩GL_FASTESTGL_NICESTGL_DONT_CARE并使纹理与模型颜色混合


//反走样*************************
glEnable (GL_LINE_SMOOTH);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA);
    glHint (GL_LINE_SMOOTH_HINT GL_DONT_CARE);
//*********************************************


//************消除多边形背面*****************
//glCullFace(GL_BACK);
//glFrontFace(GL_CCW);
//glEnable(GL_CULL_FACE);
//*******************************************

glEnable(GL_DEPTH_TEST);

glEnable(GL_LIGHTING);
//glLightfv( GL_LIGHT1 GL_SPECULAR lightSpecular );
glLightfv( GL_LIGHT0 GL_AMBIENT light0.ambient );
//环境光
glLightfv( GL_LIGHT0 GL_DIFFUSE light0.diffuse );
//镜面光
glLightfv( GL_LIGHT0 GL_SPECULAR light0.specular );
glLightfv( GL_LIGHT0 GL_POSITION light0.position );
//灯光位置
//glLightModelfv(GL_LIGHT_MODEL_COLOR_CONTROL GL_SEPARATE_SPECULAR_COLOR);
    glEnable(GL_LIGHT0);
//开启灯光

glEnable(GL_COLOR_MATERIAL);
//起用本身颜色混合

glShadeModel(GL_SMOOTH);
//平滑阴影

//**************融合****************
//glEnable( GL_BLEND );
//glBlendFunc( GL_SRC_ALPHA GL_ONE );
//glColor4f( 1.0 1.0 1.0 0.5 );
//glColor4f(0.1f 0.3f 0.3f 0.5f);
//**********************************

obj = makeobject();
//objfw = makeframework();

//*******************透视投影*****************
glMatrixMode(GL_PROJECTION);
//glMatrixMode(GL_PROJECTION)指明接下来的两行代码将影响projection matrix(投影

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     379904  2008-11-04 20:52  3DLab\3DLab.ncb

     文件        388  2002-03-03 22:51  3DLab\3DLab.pro

     文件      20759  2019-05-03 21:15  3DLab\3DLab.pro.user

     文件        724  2007-05-26 16:48  3DLab\3DLab.qrc

     文件        875  2008-11-04 20:51  3DLab\3DLab.sln

     文件        874  2007-05-15 16:33  3DLab\3DLab.sln.old

    ..A..H.     33280  2008-11-04 20:52  3DLab\3DLab.suo

    ..A..H.     35840  2007-06-14 10:11  3DLab\3DLab.suo.old

     文件      17648  2008-11-04 20:51  3DLab\3DLab.vcproj

     文件      15699  2002-03-03 22:51  3DLab\3DLab.vcproj.8.00.old

     文件       1433  2008-11-04 20:52  3DLab\3DLab.vcproj.DEVELOP-4F9E29B.xuyangjie.user

     文件       1407  2007-06-14 10:11  3DLab\3DLab.vcproj.PP.LimiT.user

     文件      29451  2007-05-26 16:10  3DLab\glworkplace.cpp

     文件       5613  2007-05-20 20:30  3DLab\glworkplace.h

     文件      26443  2007-05-28 05:36  3DLab\glworkplace_Runtime.cpp

     文件       1339  2005-12-15 01:07  3DLab\images\copy.png

     文件       1323  2005-12-15 01:07  3DLab\images\cut.png

     文件       2107  2006-06-18 23:50  3DLab\images\delete_face.png

     文件       1296  2007-05-26 16:53  3DLab\images\fixholes.png

     文件       1205  2007-05-26 16:54  3DLab\images\fixpoints.png

     文件       1416  2006-01-02 16:42  3DLab\images\flat.png

     文件       3447  2006-01-02 16:42  3DLab\images\flatlines.png

     文件       7358  2007-05-15 13:39  3DLab\images\icon.ico

     文件       6013  2007-02-04 19:21  3DLab\images\lightposition.png

     文件        852  2005-12-15 01:07  3DLab\images\new.png

     文件       4655  2007-02-04 19:20  3DLab\images\no_edit.png

     文件       2221  2005-12-15 01:07  3DLab\images\open.png

     文件       1745  2005-12-15 01:07  3DLab\images\paste.png

     文件       1387  2006-01-02 16:42  3DLab\images\points.png

     文件       3512  2006-01-02 15:42  3DLab\images\save.png

............此处省略60个文件信息

评论

共有 条评论