# 零件显示
## 一、 作业要求
![](https://www.writebug.com/myres/static/uploads/2021/12/10/b4cef608be1e0b61c21d373e642f03e7.writebug)
## 二、操作
1、 打开“发布版_直接运行”文件夹,双击 exe 文件;
2、键盘方向键,↑:绕 X 轴逆时针旋转下,↓:绕 X 轴顺时针旋转,左 ←:绕 Y 轴逆时针旋转,右 →:绕 Y 轴顺时针旋转,空格键:绕 Z 轴顺时针旋转, F5:绕 Z 轴逆时针旋转
![](https://www.writebug.com/myres/static/uploads/2021/12/10/a91b99299f2a01aaa2b21fca6408e0e3.writebug)
## 三、方法和流程(具体代码都有注释)
### *1*、数据获取
(1)所用工具:SolidWorks2018,Blender。 因为把每个表面上面的多边形或者三角形的位置算出来找规律比较困难,我们可以直接利用外部的三维建模软件,建立零件的三维模型,导出来 OBJ 格式的文件,这种文件包含 零件表面的多变形顶点数据。然后 opengl 通过读取这些数据来绘制三角面,最终显示零件。
(2)具体过程
1、 首先在 SolidWorks2018 中建立零件的模型。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/2ef7921d01ce6342e037bdd972525cb0.writebug)
2 将 SolidWorks 建立的三维模型导出为 stl 格式的文件。因为 SolidWorks 本身无法直接导出 obj 格式,所以先转化为 stl,然后用三维建模软件 Blender 将 stl 转为 OBJ, Blender 是一个跨 平台三维软件,擅长于各种三维文件格式的转换。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/ad5e544ee9f39cba3c7d53533bdfff40.writebug)
在这里要注意,在导出 obj 时,因为坐标系定义的原因,在 opengl 中显示的坐标系和 blender 中不一样,所以在导出时,需设置坐标系方向,同时顶点文件还需要是单独的数字(在 C++ 文件读取中会出问题),所以要设置导出的几何数据只包含顶点的坐标数据。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/eeb2c567a987c7936be9db7d7e844da2.writebug)
得到的 obj 文件用文本打开是这样:其实就是点数据
![](https://www.writebug.com/myres/static/uploads/2021/12/10/dc1c616af3c93f47754780e5591c841f.writebug)
3、 在 Visual studio2017 中新建项目,在 C++ 源文件中加入文件读写的头文件,然后创建一 个读取 OBJ 文件的类,其中包含读取函数和绘制函数的方法,以及顶点数据的存储.
![](https://www.writebug.com/myres/static/uploads/2021/12/10/c26876beaf33404a450d82bfcf0d3ab4.writebug)
4、 文件读取的方法实现如下图,具体思路是通过一行一行的读取,判断首字母是 v 还是 f, v 代表的是几何体顶点,f 代表的是面(存的前面的点所在的面,这里是在一个面的三个 点的索引组成一个 f)。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/98b67c038f5c92d828aff685bd43e034.writebug)
5、 读取的方法实现之后就是实现了,通过读取存储下来的每三个点,绘制一个三角面,进 而实现零件的绘制。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/535039377887ba086fcf52f2f676e537.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/10/41402c0a57002227568d1e6935067c87.writebug)
### *2*、项目实现流程:
(1)首先初始化窗口。设置一些读取键盘的操作和初始化光照等。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/573e1f823f667673f1127f9c74b44aae.writebug)
(2)键盘命令的实现,因为所需的键盘指令除了空格之外都是特殊按键,所以需要查找空 格的 ASCII 码来读取空格键。这里需要两个函数:
![](https://www.writebug.com/myres/static/uploads/2021/12/10/2029d2117a926acc30bf50e31ccaafda.writebug)
(3)键盘指令设置完成后需要写绘制的函数 void gaobin_Object(void),在经过一些初始设置 后,首先定义背景,因为背景需要渐变色,这里我们在背景上画一个四边形,然后设置过度颜色;
![](https://www.writebug.com/myres/static/uploads/2021/12/10/746d4257501813e2e7988eaebb73e3fb.writebug)
(4)接下来就是绘制零件,首先通过事先定义好的类中的读文件方法,读取存在项目同目 录中的 obj 文件,ObjLoader monkey = ObjLoader("openglOBJ.obj"); monkey 就是类的一个对 象,存着零件的绘制数据,然后设置旋转参数。在设置旋转参数之前需要用 glPushMatrix(); 命令将这次操作与其他绘制独立,因为背景也是绘制的,旋转的时候零件动,背景要固定。
![](https://www.writebug.com/myres/static/uploads/2021/12/10/ce5b69cd170aa310dc722db8d113b325.writebug)
(5)颜色设置,我们在得到顶点数据后,就可以知道几个孔和 U 型槽的面上点所在的范围, 在类的绘制方法中,我们加一个判断,将点在这些范围内的绘制设置为一个颜色,其他的面 设置为别的颜色。下面是一个小例子:
![](https://www.writebug.com/myres/static/uploads/2021/12/10/6bb1098455e7813a1fca957fd00327c8.writebug)
----------其余判断----------
![](https://www.writebug.com/myres/static/uploads/2021/12/10/ea7dc79dacb57a9a7307a4f06e562c1e.writebug)
(6)设置完成后,零件的显示会有颜色重叠,立体感不强,我们在初始化 void SetupRC(void) 函数中加入深度判断函数 glEnable(GL_DEPTH_TEST),将重叠的部分哪个在前显示哪个。然后加入 光照和材质颜色反射。首先是设一个全局的环境光,然后我又加了三个围绕零件的灯。参数实现如下:
灯的位置和照射反向参数:
![](https://www.writebug.com/myres/static/uploads/2021/12/10/9ccdfc1d342c889838f1d213decb8211.writebug)
光照的设置:
![](https://www.writebug.com/myres/static/uploads/2021/12/10/5943133b5c1e88f18066f65d78fe0084.writebug)
材质的反射设置:
![](https://www.writebug.com/myres/static/uploads/2021/12/10/8f3307e4593869c8a6bc66b695157ff2.writebug)
(7)最终效果
![](https://www.writebug.com/myres/static/uploads/2021/12/10/8557282b90e6c19a29d5c5264791e40d.writebug)
没有合适的资源?快使用搜索试试~ 我知道了~
基于SolidWorks+Blender设计实现建立零件的三维模型【100012744】
共45个文件
dll:7个
tlog:7个
obj:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 142 浏览量
2023-06-12
11:05:08
上传
评论 2
收藏 22.78MB ZIP 举报
温馨提示
所用工具:SolidWorks2018,Blender。 因为把每个表面上面的多边形或者三角形的位置算出来找规律比较困难,我们可以直接利用外部的三维建模软件,建立零件的三维模型,导出来 OBJ 格式的文件,这种文件包含 零件表面的多变形顶点数据。然后 opengl 通过读取这些数据来绘制三角面,最终显示零件。
资源推荐
资源详情
资源评论
收起资源包目录
100012744-基于SolidWorks+Blender设计实现建立零件的三维模型.zip (45个子文件)
ljxs
LICENSE 1KB
发布版_直接运行
freeglut.dll 272KB
openglOBJ.obj 28KB
高斌_大作业2.exe 583KB
高斌_大作业2程序(VS2017控制台应用C++)
高斌_大作业2
openglOBJ.obj 28KB
x64
Debug
vc141.pdb 524KB
高斌_大作业2.obj 1.62MB
vc141.idb 355KB
vcpkg.applocal.log 209B
高斌_大作业2.log 1KB
高斌_大作业2.Build.CppClean.log 3KB
高斌_大作业2.tlog
CL.write.1.tlog 920B
高斌_大作业2.lastbuildstate 352B
CL.command.1.tlog 1KB
link.command.1.tlog 18KB
link.read.1.tlog 40KB
link.write.1.tlog 900B
高斌_大作业2.write.1u.tlog 450B
CL.read.1.tlog 35KB
高斌_大作业2.vcxproj 7KB
高斌_大作业2.vcxproj.user 162B
高斌_大作业2.cpp 10KB
高斌_大作业2.vcxproj.filters 941B
x64
Release
freeglut.dll 272KB
glut.dll 166KB
openglOBJ.obj 28KB
高斌_大作业2.iobj 1.44MB
高斌_大作业2.ipdb 541KB
高斌_大作业2.pdb 6.09MB
glut32.dll 166KB
高斌_大作业2.exe 583KB
Debug
glut.dll 166KB
openglOBJ.obj 28KB
freeglutd.dll 456KB
高斌_大作业2.ilk 6.11MB
高斌_大作业2.pdb 10.48MB
glut32.dll 166KB
高斌_大作业2.exe 2MB
高斌_大作业2.sln 1KB
高斌_大作业2演示视频.mp4 15.29MB
高斌_大作业2设计说明书.pdf 1.62MB
零件三维模型
零件.STL 51KB
openglOBJ.obj 28KB
零件.SLDPRT 115KB
README.md 6KB
共 45 条
- 1
资源评论
神仙别闹
- 粉丝: 2673
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功