
图形学
文章平均质量分 94
wk_119
欢迎大家交流
展开
-
【图形学】网格简化及边坍缩( Edge Collapse )算法
本文简要介绍了网格简化的基础及意义,重点介绍了边坍缩(Edge Collapse)算法以及具体实现细节。原创 2020-12-27 16:52:29 · 10472 阅读 · 6 评论 -
【图形学】Loop细分算法及半边结构实现(C++)
文章目录Loop 细分算法介绍增加新顶点更新旧顶点算法实现半边结构半边结构的表示方法半边结构的构造方法创建所有顶点创建所有面及半边半边结构的使用Loop 细分顾名思义,网格细分是将粗糙网格精细化的过程,如下动图。Loop细分是众多网格细分算法的一种,Loop细分仅仅对三角形网格模型有效。值得注意的是,虽然叫Loop细分,但是不能理解为“循环”细分,叫这个名字是因为作者的名字是这个而已。下面是一个粗糙的兔子模型1000个面,进行3次细分算法介绍Loop细分算法主要分两步进行增加新顶点:增加原创 2020-10-18 18:14:06 · 7659 阅读 · 5 评论 -
[图形学]拉普拉斯网格变形(Laplace Deformation)原理及复现
本文原理参考论文: Laplacian Mesh Processing本文复现参考:Mesh模型的Laplace Deformation(网格形变 - 拉普拉斯形变) - C++代码实现文章目录拉普拉斯网格变形原理拉普拉斯坐标拉普拉斯矩阵原理分析添加锚点求解形变后的坐标拉普拉斯网格变形是一个相当经典的工作,本工作复现了一下基础的部分,这里记录下原理部分和结果。复现结果演示如下:拉普...原创 2019-12-05 18:19:10 · 11267 阅读 · 9 评论 -
[软件] PointPicker 选取模型上的点并保存
最近想拾取一个模型上的点的坐标并保存下来,正好实现一下简单的点云拾取操作。原创 2019-11-26 21:29:14 · 1033 阅读 · 3 评论 -
vcglib库的入坑体验(读取obj文件并显示)
写在前面:vcglib的坑真的是太深了,慎入!!! 各种文档不全,使用全靠看源码和猜,网上资料很少而且基本都是复制粘贴,有用的信息真的很少!(附上vcglib的文档 真的能看到自闭)本文使用vcglib库进行读取obj文件(其他各种3d模型格式也是同样的方法)并显示,但是目前仍然遇到一些问题没有解决:读取的纹理信息全部缺失(读出来全部为0,因此下图并没有贴纹理),查了很久真心不知道为什么,如果有...原创 2019-11-24 20:50:59 · 4800 阅读 · 4 评论 -
[图形学]凸包生成算法附C++实现
凸包(Convex Hull)是一个计算几何(图形学)中的概念,简单的来说就是对于一个给定的点集,我们需要求得一个凸多边形把给定的点集全部包含起来。先附上我的结果:如上图可以看到用绿色的线连成的一个凸多边形,就是一个凸包,它包含点集中所有的点。一、算法流程1、求出点集中满足min(x-y)、min(x+y)、max(x-y)、max(x+y)的四个点,并按逆时针(或者顺时针)方...原创 2018-08-05 17:16:18 · 8319 阅读 · 6 评论 -
[图形学]Delaunay三角剖分算法附C++实现
完整代码已上传:点击此处将离散点构成三角网,这种三角网称为Delaunay三角网Delaunay剖分具备的优异特性有(来自百度百科):1.最接近:以最近的三点形成三角形,且各线段(三角形的边)皆不相交。2.唯一性:不论从区域何处开始构建,最终都将得到一致的结果。3.最优性:任意两个相邻三角形形成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小的角度不会变大。...原创 2018-08-15 19:58:29 · 18809 阅读 · 9 评论 -
【图形学】基于点云生成树木模型
很久之前就想尝试有关于点云方面的知识,但是一直耽搁到现在,一方面感觉很难不知道如何下手。最近看了师兄发来的论文后,我发现基于点云生成树木模型也并没有想象中那么难。参考论文:Knowledge and Heuristic Based Modeling of Laser-Scanned Trees.Hui Xu,Nathan Gossett,Baoquan Chen.参考博客:https:...原创 2019-03-03 20:50:00 · 11023 阅读 · 35 评论 -
【OpenGL】阴影映射实现实时阴影
完整代码已上传:https://github.com/kaiwu119/BallFreeFallAnimation阴影是光线被物体遮挡而产生的,当光线照射不到物体表面时,这个物体就处于阴影中了, 阴影的存在可以让场景更加真实,而且更容易分辨出物体的相对位置。现在有很多阴影的实现方法,但是都不是那么容易实现的,而阴影映射是比较容易实现的,这次主要介绍阴影映射实现实时阴影,下面先看效果图:...原创 2019-03-08 15:38:25 · 5948 阅读 · 0 评论 -
[图形学]仿制Minecraft游戏(柏林噪声生成地形)
最近在整理之前做过的东西,之前的制作了一个简易版的《Minecraft》的游戏,当时是看一个学长的博客,感觉很有趣。那时第一次了解到柏林噪声(Perlin Noise),下面介绍一下我对这个游戏的总结。 先附上我的游戏截图:1. 地形的生成采用的柏林噪声生成地形,关于柏林噪声的相关概念下面的博客已经说得很清楚了 [数学]柏林噪声 :http://www.cnblogs...原创 2018-05-31 20:27:14 · 7583 阅读 · 5 评论 -
[图形学]3D树的建模方法
在游戏设计、电影和城市规划领域,3D树的建模在虚拟场景中占了很重要的角色。所以如何快速建立真实的3D树就是一个很重要的的课题。关于3D树的建立存在很多经典的方法,典型的方法是利用L-system建模,使用参数化方法操作复杂的参数,这个方法擅长描述植物特性不同的物种,但是这种方法需要一定的专业知识而且只能控制局部特征,并不能控制整体的特征。另一方面,L系统与环境缺少交互作用,因为植物的生长是一件...原创 2018-05-29 17:23:40 · 7997 阅读 · 1 评论 -
[GLSL]渲染大规模地形(多纹理)
演示程序已上传:https://download.youkuaiyun.com/download/qq_31804159/10383143从学习图形学开始,就想做一个关于地形方面的东西(因为看起来比较酷emmm),有一次机会了解到了基于高度图渲染地形。这是一个比较简单的方法,对新手而言比较友好的。其实这个是我好早之前做的一个东西了,但是算是真正进入图形学的一个标志吧,以后我会陆续的把我做的一些有意思的东...原创 2018-04-25 13:10:02 · 4856 阅读 · 2 评论 -
几何着色器(二) 表面法线可视化
从之前的介绍,我们已经了解了几何着色器的基本知识,现在介绍一下如何用几何着色器实现表面法线的可视化如果是第一次了解几何着色器,可以先了解基本知识:几何着色器(一)效果图:首先我们先了解一下绘制流程: 1.激活顶点着色器和片元着色器 2.正常绘制模型 3.激活顶点、几何、片元着色器 4.绘制法线 也就是说我们要绘制两次 着...原创 2018-05-19 11:30:46 · 1938 阅读 · 0 评论 -
几何着色器(一) 基本概念
最近想做一些渲染的东西,接触到了几何着色器,发现了几何着色器的强大之处,几何着色器位于顶点和片元着色器之间,几何着色器能够产生0个以上的基础图元,它能起到一定的裁剪作用、同时也能产生比顶点着色器输入更多的基础图元。它可以做的事情非常的酷炫,例如:表面法线的可视化和实现三维物体的爆炸效果。 基本知识: 输入可以有如下:points:绘制GL_POINTS图元时。 lines...原创 2018-05-18 18:19:37 · 7961 阅读 · 0 评论 -
几何着色器(三)爆破和腐蚀效果
几何着色器的功能是很强大的,我们可以借用几何着色器的丢弃图元的特性实现腐蚀效果。我们也可以通过改变图元从而实现物体的爆破效果。因为几何着色器是GPU跑的,所以很大的提升了运行效率,从而实现实时的动画效果也是毫不费力的,下面的例子是采用了150万个点渲染的一个地形;先看效果图(动态图可能有些卡):腐蚀效果:爆破效果: 如果你之前已经看过我写的实现表面法线...原创 2018-05-19 15:06:18 · 1432 阅读 · 0 评论 -
opengl绘制花瓶
本文阐述一种简单的绘制3D花瓶的方法,对于刚接触图形学的小伙伴而言是一个很好的练习题目。先附上我的结果: 下面阐述原理及我的实现:1.定义一个正弦函数f(y)f(y) = r*sin(y)+Rr和R用于控制花瓶半径2.让这个函数绕着y轴旋转,则我们可以得到一个曲面函数:x^2+z^2 = (r*sin(y)+R...原创 2018-04-25 20:19:00 · 7335 阅读 · 0 评论 -
[OpenGL]多视角漫游
我们绘制完一个模型之后,尴尬的是每次运行只能看到模型的一面,这样显然是极为不方便的,那我们如何能够像游戏中那样对一个模型进行多视角观察呢。现在我给大家描述一下原理:想象一下,如果我们把我们的眼睛放在一个球面上,把物体放在球心上,那么我们无论把我们的眼睛放在球面的哪个位置我们都是可以观察到模型的,而且根据位置的不同我们观察到模型也不同。下面具体说明实现方法: 1.构建一个球面 ...原创 2018-04-28 21:53:48 · 1141 阅读 · 0 评论 -
[OpenGL]导入obj文件
通常来说我们构建一个模型是比较复杂的工作,那么我们还有什么途径获得模型呢。其中一种方法就是导入obj模型,不要被这个名词给吓到了,其实就是把一个制作好的模型保存到一个文件中,我们称为obj文件。先上图片:下面说明如何读取单个obj文件: 我们先了解一下obj文件里都是表示什么v 表示点的坐标值vt表示纹理贴图坐标值vn表示点的法线f 表示的是面,本例中针对的...原创 2018-04-26 23:17:33 · 6034 阅读 · 5 评论 -
[图形学]基于平面方程的阴影计算
一个三维物体绘制出来之后,打上光照就很具有真实感了,但是如果一个物体没有影子,那么是一个很可怕的事情。那么我们如何把一个物体的影子加上呢,本文会介绍一种方法,可以让三维物体的影子投影到指定的平面上。如何绘制下面的花瓶可以参考我的另一个文章:opengl绘制花瓶程序演示链接:https://download.youkuaiyun.com/download/qq_31804159/10383046实现结果...原创 2018-04-29 17:35:19 · 2176 阅读 · 0 评论 -
[GLSL]法线贴图(Normal mapping)原理及实现
前一段时间了解到一个技术叫法线贴图,感觉这是一个很有意思的东西,所以我尝试去实现了一下,虽然网上有很多资料了,但在这里还是记录一下我的实现过程。演示程序已上传:https://download.youkuaiyun.com/download/qq_31804159/10372916 感兴趣的同学可以下载玩一下首先附上我的实现结果: 左上为原图,左下为得到的法线图,中右图是法线贴图效果。...原创 2018-05-01 17:40:11 · 8635 阅读 · 3 评论