# MyCAD:三维CAD建模课程大作业
本项目为一个基于欧拉操作的三维建模项目,能基于 mvfs, mev, mef, kemr 和 kfmrh 5个基本欧拉操作和 sweep 扫掠操作生成对应的立方体,用OpenGL实现可视化。
![image-20231101153355526](./README.assets/image-20231101153355526.png)
### 项目说明
- 结构说明
- 源文件:在 ./MyCAD 目录下
- Camera.cpp / Camera.h:三维空间中的摄像机文件
- Element.cpp / Element.h:欧拉操作的对象,包括Solid, Face, Loop, Coedge, Edge, Vertex和Point
- EulerOperation.cpp / EulerOperation.h:欧拉操作,共定义了mvfs, mev, mef, kemr 和 kfmrh 5个基本操作和 sweep 扫掠操作
- Generator.cpp / Generator.h:顶点数据生成文件
- Shader.cpp / Shader.h:着色器文件
- Test.cpp / Test.h:测试用例文件
- 其他文件:在 ./CAD 目录下
- 顶点着色器文件:Vertex.vert, LightVertex.vert
- 片段着色器文件:Fragment.frag, LightFragment.frag
- 编译说明
- 项目依赖
- GLM:C++数学库,提供了在计算机图形编程中常用的各种数学操作和函数
- GLAD:提供跨平台的解决方案,用于加载不同版本的OpenGL和OpenGL扩展所提供的功能
- GLFW:用于创建和管理窗口、处理输入和事件,并与OpenGL等图形库进行交互
- 项目配置
- 本项目使用VS2022编译和运行
- 打开MyCAD.sln工程文件后,将活动解决方案配置平台设置为“x86”后,点击“生成解决方案”即可生成可执行文件
- 操作说明
- 键盘操作
- $WASD$:控制摄像机前后左右的移动
- $\uparrow\downarrow$:控制摄像机上下移动
- 鼠标操作
- 移动:控制视角的转动
- 滚轮:控制视角的大小
### 接口说明
- 本项目所有的接口都在Test.cpp中,mian.cpp对Test类中不同静态方法的调用实现不同的效果
- 具体接口
- 测试接口
- Test::createBody():构造一个带有内环的立方体
- Test::testSweep():扫掠操作测试函数,通过sweep操作构造无环的简单立方体,打印相关信息
- 主函数对接接口
- Test::testRingGenerator(vector<glm::vec3>& vertices):构造器测试函数,通过基础欧拉操作构造带环立方体,将离散化信息存入 vertices
- Test::testSweepGenerator(vector<glm::vec3>& vertices):构造器测试函数,通过sweep操作构造无环立方体,将离散化信息存入 vertices
- Test::testSweepRingGenerator(vector<glm::vec3>& vertices):构造器测试函数,通过sweep操作构造带环立方体,将离散化信息存入 vertices
- 主函数对接接口使用
- 通过对main.cpp第138行代码中不同主函数对接接口的调用实现不同立方体的可视化
- 可以利用欧拉操作自行添加更多立方体
### 其他说明
- 调试信息
- 我通过重载输出运算符的方式,提供了 Loop, Coedge, Edge, Vertex 和 Point 对象信息的打印方法, 通过标准输出流cout可以方便地查看对象内容
- 我提供了 Solid 对象的查看接口 printSolid(),可以打印出 Solid 对象中所有的下层信息
- 可视化
- 我在OpenGL中考虑了3种光照:环境光照(ambient),漫反射光照(diffuse)和镜面光照(specular),可以通过 main.cpp 中的对应代码修改光照参数
- 由于光照的需要,我基于 Loop 的方向计算面的法向量信息,并且将其用于渲染
- testRingGenerator接口构造的带环立方体基于基础欧拉操作,含有正确的法向量信息
- testSweepRingGenerator接口构造的带环立方体由于通过扫掠操作生成,部分法向量可能相反,不能模拟出真实的光照结果
- 手动构造立方体时需要注意 Loop 的方向,它指示了面的法向量信息
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> MyCAD:三维CAD建模课程大作业 本项目为一个基于欧拉操作的三维建模项目,能基于 mvfs, mev, mef, kemr 和 kfmrh 5个基本欧拉操作和 sweep 扫掠操作生成对应的立方体,用OpenGL实现可视化。 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
三维CAD建模课程大作业-基于欧拉操作的三维建模项目,能基于5个基本欧拉操作和 sweep 扫掠操作生成对应的立方体.zip (80个子文件)
MyCAD-master
MyCAD
MyCAD.vcxproj 7KB
Generator.h 705B
Fragment.frag 1KB
Element.cpp 4KB
EulerOperation.cpp 7KB
resources
container2_specular.png 141KB
container2.png 457KB
Camera.h 2KB
Vertex.vert 521B
EulerOperation.h 713B
LightFragment.frag 81B
main.cpp 10KB
x64
Debug
vc143.pdb 716KB
Test.obj 96KB
EulerOperation.obj 112KB
MyCAD.ilk 4.52MB
Camera.obj 105KB
MyCAD.log 197B
Element.obj 127KB
MyCAD.tlog
CL.write.1.tlog 4KB
MyCAD.lastbuildstate 143B
Cl.items.tlog 709B
CL.command.1.tlog 6KB
link.command.1.tlog 2KB
link.read.1.tlog 5KB
link.write.1.tlog 1KB
CL.read.1.tlog 238KB
MyCAD.exe.recipe 268B
glad.obj 221KB
MyCAD.Build.CppClean.log 967B
Shader.obj 481KB
vc143.idb 587KB
MyCAD.vcxproj.FileListAbsolute.txt 0B
main.obj 870KB
Generator.obj 318KB
Generator.cpp 4KB
Element.h 2KB
LightVertex.vert 197B
Test.h 389B
MyCAD.vcxproj.user 165B
Shader.h 755B
MyCAD.vcxproj.filters 2KB
Camera.cpp 2KB
Shader.cpp 3KB
Test.cpp 7KB
Debug
vc143.pdb 396KB
MyCAD.tlog
unsuccessfulbuild 0B
MyCAD.lastbuildstate 145B
CL.command.1.tlog 2B
vc143.idb 155KB
main.obj 66KB
.vs
ProjectSettings.json 42B
MyCAD
v17
Browse.VC.db 41.55MB
.suo 76KB
.wsuo 30KB
ipch
AutoPCH
f89549a29a5776cb
GENERATETRIANGLE.ipch 21.88MB
9925dc4befe856d0
GENERATOR.ipch 80.63MB
23a2f9929657c805
ELEMENT.ipch 77.13MB
5c2186204d986a1c
EULEROPERATION.ipch 34.13MB
8980098cbd517724
SHADER.ipch 80.88MB
f3dfb9e17bb7ea7
MAIN.ipch 34.38MB
aecf52ba280d873d
TEST.ipch 80.63MB
b184078bc1275f33
EULEROPERATION.ipch 77.38MB
f61d91c73035b260
GLAD.ipch 4.63MB
1db8be5d6e1cd75a
CAMERA.ipch 62.88MB
a0726ddaab174654
ELEMENT.ipch 896KB
8d02e568efeafaa4
MAIN.ipch 85.44MB
FileContentIndex
d61b0282-6b99-4ae5-8942-edfb3cb7e613.vsidx 35KB
3e29aeb9-6810-4021-804f-ab177141ea3b.vsidx 31KB
c08dfe0e-49d5-426f-8508-cb1073ec5811.vsidx 33KB
4b39bc04-7b53-4410-adcd-70a0ebe79119.vsidx 31KB
6cace6db-8b53-4a7c-8de3-927591ea3354.vsidx 31KB
slnx.sqlite 320KB
VSWorkspaceState.json 137B
x64
Debug
MyCAD.exe 802KB
MyCAD.pdb 3.49MB
MyCAD.sln 1KB
README.assets
a.txt 1B
image-20231101153355526.png 74KB
README.md 4KB
共 80 条
- 1
资源评论
奋斗奋斗再奋斗的ajie
- 粉丝: 1195
- 资源: 2908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功