【精·术】计算机图形学
自己主要从事的研究方向,分享自己的学习心得
Do Better
个人博客xdbblog.com
人生如一场修行,得意时,一日看尽长安花,艰难时,潦倒新停浊酒杯,但生命的跋涉不能回头,哪怕,畏涂巉岩不可攀,也要会当凌绝顶,哪怕无人会 登临意,也要猛志固常在,从生活中,汲取九万里风鹏正举的力量,历练也无风雨也无晴的豁然,待到重阳日,我们还来就菊花。
展开
-
【MIT6.837】A3:OpenGL & Phong Shading
A3:OpenGL & Phong Shading实验概述实现交互式相机实现Blinn-Phong光照模型及对应的光滑明暗处理技术实现绘制各个图元的方法,尤其是球图元的绘制Hints1、Phong模型与Bling-Phong的区别Phong适合模拟塑料,比"反射"材质表现出的介质更光滑一些,适合模拟玻璃、水、冰等高反光特性的介质BlinnPhong大多适用于金属材质Blinn-Phong它能提供比Phong更柔和、更平滑的高光,而且速度上也更快,因此成为很多CG软原创 2020-05-19 22:25:41 · 703 阅读 · 0 评论 -
【MIT6.837】A2:Transformations & Additional Primitives
A2:Transformations & Additional Primitives实验概述本实验的目标是实现更多的基本图元(如Plane、Triangle类的实现)、新增两种渲染模式(normal visualization和diffuse shading)、新增PerspectiveCamera类及变换(Transform类)的实现。实验步骤1 TASK分析下面右边的序号是在实验中实际完成的顺序[1] Object中更新球的计算交点方法【3】[2] Object中派生出pla原创 2020-05-17 22:25:15 · 437 阅读 · 0 评论 -
【MIT6.837】A1:Ray Casting
A1:Ray Casting(光线投射)学术名词camera obscura:针孔照相机Perspective:透视投影Orthographic:正交投影Parallel projection:平行投影Ray-Plane Intersection:射线与平面相交Ray-Sphere Intersection:射线与球面相交orthonormal basis:标准正交基Ray Casting:光线投射Ray tracing:光线追踪Geometric:几何学Algebraic:代数原创 2020-05-13 23:11:30 · 705 阅读 · 0 评论 -
【MIT6.837】A0: IFS
A0:迭代函数系统(IFS)任务概述6.837的第一个作业,实现IFS算法。目的是熟悉C++的语法特性,并且熟悉使用两个和图像生成和线性代数相关的简单库。通过生成一些奇妙的分形物体来体会图形学的乐趣。IFS 是一种构造分形的方法,得到的分形通常是自相似(self-similar)的。IFS最经典的例子是绘制一种蕨类植物(Barnsley’s fern),如下图所示,可以看到,每一个子叶片与整个叶片的形状相同。IFS由一个仿射变换(affine transformations)集合所定义,通常定义的仿原创 2020-05-12 20:21:10 · 780 阅读 · 0 评论 -
【OpenGL】三维场景漫游的实现
功能构建一个三维场景可利用glut提供的各种简单形体来搭建,或者读入别的模型,并加入光照效果用键盘操作一个物体(如一艘飞船,或一个机器人),在三维场景中漫游视点可以放在物体上,或跟随物体,利用gluLookAt()函数来实现对视点的控制思路1、开始想直接利用OpenGL的glulookAt函数,但发现并不好用2、之后参考他人资料寻思构造一个摄像机类,通过摄像机类达到控制视点,这部分通过参考LearnOpenGL上的摄像机类进行实现实验结果实验效果图程序控制键说明w,s,a,d分原创 2020-05-12 20:13:07 · 7758 阅读 · 0 评论 -
【OpenGL】机器人手臂的实现
一、基本功能实现了机器人的一只手臂,由上臂、下臂、五根手指共同组成,通过A、S、D、F、G键向上旋转,通过a、s、d、f、g键向下旋转,通过方向键left和right转向,通过up和down实现放缩。效果图如下:二、实现过程 1、实现手臂对于手臂的实现,可以使用一个经过放缩后的立方体作为手臂的一段。手臂模型搭建好后,就是要确定手臂的位置,因为手臂进行旋转,不是绕手臂的中心节点(等同于立体体的体心)进行旋转,它是绕手臂的一条边(等同于立方体的一条边)进行旋转。...原创 2020-05-12 19:48:46 · 2526 阅读 · 0 评论 -
【OpenGL】光照太阳系
一、要求二、思路0、效果图1、实现基本的太阳系采用局部变换的思路完成,实现太阳、地球、月亮及轨道的绘制2、宇宙中加入一盏泛光(方向光)加入思路: 1)设置好物体的法向 在这里可以不进行设置,因为在OpenGL是一个状态机中,如果不进行设置,则使用默认值 2)打开光照 3)设置光照参数 注意其实光照参数可以设置在打开光照之前,因为Open...原创 2020-03-24 16:41:46 · 2649 阅读 · 8 评论 -
【OpenGL】太阳星系的实现
一、功能要求基本功能三个球体、一个表示太阳、一个表示地球、一个表示月亮;地球不停地绕太阳旋转,月亮绕地球旋转,期间它们三者都发生自转。扩展功能地球有两个月亮,画上轨道线,使轨道倾斜,放缩效果自己完成的效果图二、思路基本功能的实现首先搭好程序框架:1、 设置显示模式2、 初始化窗口3、 创建窗口4、 设置一系列回调函数5、 启动主循环框架设置完毕后,针对display()...原创 2020-03-22 14:47:20 · 2519 阅读 · 0 评论 -
【OpenGL】绘制球体
步骤1-初始化:GLFW窗口,GLAD2-计算球体顶点:通过数学方法计算球体的每个顶点坐标3-数据处理:通过球体顶点坐标构造三角形网络,生成并绑定VAO&VBO&EBO(准备再GPU中进行处理),设置顶点属性指针(本质上就是告诉OpenGL如何处理数据)4-着色器:给出顶点和片段着色器,然后链接为着色器程序,渲染时使用着色器程序5-渲染:使用画线模式画圆,开启面...原创 2020-03-06 18:45:27 · 15616 阅读 · 20 评论 -
【OpenGL】绘制四边形
EBO、VBO和VAO的简介思路画一个四边形,可以有两种方法1、通过2个三角形拼接而成,这就和前一个实验画三角形类似,利用VAO和VBO实验,我们要做的只是需要把给出的顶点增加为6个即可。2、但是我们会发现使用上述方式,有两个顶点重复出现,这在画复杂图形时,会增加很多空间消耗,而上述介绍了通过EBO能存储顶点信息数量,从而减少顶点数组中顶点的个数。下面介绍通过VAO+VBO+EB...原创 2020-03-05 22:57:59 · 3226 阅读 · 3 评论 -
【OpenGL】绘制三角形
实验步骤步骤:1-初始化:初始化GLFW,创建窗口,初始化GLAD,创建视口2-数据处理:给定顶点数据,生成并绑定VAO&VBO(准备再GPU中进行处理),设置顶点属性指针(本质上就是告诉OpenGL如何处理数据)。3-着色器:给出顶点和片段着色器,然后链接为着色器程序,渲染时使用着色器程序。4-渲染:清空缓冲,使用着色器程序,绘制三角形,交换缓冲区并检查触发事件(比如键...原创 2020-03-03 12:49:14 · 1032 阅读 · 0 评论 -
【OpenGL•错误】visual studio2019报错 无法解析的外部符号gladLoadGLLoader,该符号在函数main中被引用...
遇到的错误今天在打开之前写的OpenGL绘制三角形的程序时,发现一直报如下错误当时一直以为是自己没有链接好头文件和库文件,经过上网搜索,终于找到了问题所在,是自己没有把glad.c文件添加到项目中。解决办法之前记得自己添加glad.c文件是通过在源文件->新建项,新建一个glad.c文件,然后把其他目录下的glad.c文件的内容拷贝进来。后来,我发现可以不需要这么麻烦。通过右击源...原创 2020-03-03 12:04:58 · 1444 阅读 · 0 评论 -
【OpenGL】Windows下创建第一个OpenGL程序
开发工具IDE:VS2019GLFWCMakeGLADglfw下载glfw源码:下载地址下载的内容如下所示:CMake下载CMake(将源码生成自己想要的IDE工程):下载地址下载的内容如下所示:下载完成后安装即可生成工程文件GLFW使用CMake程序生成GLFW.sln文件1、打开CMake设置好glfw根目录和生成的工程目标目录(自己任意设置,我这里设置为在g...原创 2019-12-25 20:09:40 · 562 阅读 · 0 评论