C/C++
文章平均质量分 69
nicemxp
我的博客:www.nicemxp.com
展开
-
常用排序算法总结
整理了下一些常用的排序算法。原文访问链接:http://www.nicemxp.com/articles/16一、冒泡排序冒泡排序:一排n个元素的序列,通过两两比较交换位置保持大的(或者小的)在右侧,这样经过n-1轮这样的操作完成排序。源码:#define SWAP(a,b) {a=a+b;b=a-b;a=a-b;}// 冒泡排序void BubbleSort(int sr...原创 2018-10-20 14:39:47 · 112 阅读 · 0 评论 -
3D图形学学习总结(十)—纹理映射透视矫正
原文链接:http://www.nicemxp.com/articles/27 之前的总结中介绍过仿射纹理映射,仿射纹理映射中纹理坐标是根据三角形屏幕坐标线性插值得到的,但是三角形在3d空间中映射到屏幕坐标时是与三角形的z轴分量相关的。所以直接直接通过屏幕坐标线性插值得到的纹理坐标是有误差的。 我们可以看一下仿射纹理映射: 这是将一个纹理图直接根据平面坐标...原创 2019-04-07 13:50:36 · 2369 阅读 · 0 评论 -
3D图形学学习总结(十一)—深度缓存
原文链接:http://www.nicemxp.com/articles/28 在前面的学习中,总是用一个箱子来进行各种测试,但是在世界中如果有很多个物体,然后将物体都加入渲染列表中后,发现渲染出来的效果跟想象中的不一样。 这是因为渲染接口接受到渲染列表中的三角形面是无序的,没有顺序先后之分,总是把新收到的三角形渲染到屏幕上并覆盖到屏幕本来像素点的颜色。也许我们可以为插...原创 2019-04-07 15:54:55 · 771 阅读 · 0 评论 -
3D图形学学习总结(十二)—纹理滤波
原文链接:http://www.nicemxp.com/articles/29 双线性纹理滤波 之前进行的纹理映射过程中,包括仿射纹理映射和透视纹理映射,采用的都是点采样,即使用纹理坐标u和v,丢弃了它的小数部分(或者进行四舍五入)。 这样做的问题就是本来可以用作绘制更高的图像信息被丢弃了,这就是双线性滤波的作用,不丢弃小数部分,而是根据纹理坐标u,v采集纹理图中...原创 2019-04-07 21:47:51 · 971 阅读 · 1 评论 -
基于Assimp的骨骼动画实现
原文链接:http://www.nicemxp.com/articles/31emmm...模型资源是在淘宝花5个大洋买的。实际有很多模型,带动画的只有6个,实际最后用3DMax导出fbx的模型assimp只有两个加载出来是正常的。感觉assimp加载fbx不太友好,网上也有很多人有这种情况(不知道是不是自己写的代码有问题)。 assimp加载骨骼动画网上有很详细的教程,地址:h...原创 2019-07-04 15:49:01 · 3815 阅读 · 3 评论 -
3D图形学学习总结(九)—3D裁剪
原文链接:http://www.nicemxp.com/articles/26 在渲染管线中,物体经过世界变换,相机变换,物体剔除,剩下的物体就是我们要进行渲染的,我们把这些物体加入渲染列表中,之后我们应该继续进行透视变化。 但是进行透视变换之前,我们应该会想到有些物体虽然没有被剔除,但是只有一部分在视景体中,另一部分还在视景体外,这样组成物体网格的三角形加入渲染列表中...原创 2019-04-06 22:42:50 · 2689 阅读 · 0 评论 -
四元数的一些整理
原文链接:http://www.nicemxp.com/articles/30四元数在3d图形学中主要用来进行球面线性插值,可以让相机在球面上圆滑的移动,避免了相机通过欧拉角计算的一些弊端,如万向死锁。所以记录下四元数的一些知识和想法,本文只是一段自己学习过程中的理解思路,可能有些不理解的地方自己理解的也有问题,具体的推导过程太多这里不记录,可以自己根据性质推导或者查看相关资料。四元数在数...原创 2019-04-04 20:29:08 · 1221 阅读 · 0 评论 -
3D图形学学习总结(三)—相机坐标转换(UVN相机)
原文链接:http://www.nicemxp.com/articles/20在很多情况下,欧拉相机是可行的,但是会存在一些问题,如万向头死锁。UVN相机是使用注视目标和向量u,v,n定义的。它与欧拉相机模型的差别是如何定义相机朝向,欧拉相机使用角度,而UVN相机使用向量。定义相机的朝向:右向量u( ux, uy, uz),上向量v( vx, vy, vz),注视向量n( nx, ny, ...原创 2018-11-06 15:54:05 · 4535 阅读 · 0 评论 -
3D图形学学习总结(四)—透视坐标变换
原文链接:http://www.nicemxp.com/articles/21经过相机坐标变换后,相机位置已经变换到了原点处,朝向指向正Z轴,如图:如图是左手坐标系下3D系统俯视图,相机视野为90度,视景体内物体的顶点需要投射到视平面上完成透视变换,如果我们知道了视距d可以很容易算出顶点在视平面投影的坐标,如图:图示是3D系统的侧视图,YOZ平面下根据相似三角形定理可以很容易得...原创 2018-11-06 20:14:04 · 5690 阅读 · 1 评论 -
3D图形学学习总结(五)—屏幕坐标变换
原文链接:http://www.nicemxp.com/articles/22物体顶点v经过透视变换后在视平面上的投影坐标(xper, yper),现在要将视平面坐标变换到屏幕上,需要经过屏幕坐标变换,缩放投射到屏幕上。屏幕宽度:SCREEN_WIDTH,屏幕宽度:SCREEN_HEIGHT,如图:注意,屏幕的y轴坐标是反转了的,我们现在进行映射变换。物体顶点的透视坐标(经过归...原创 2018-11-06 22:38:57 · 2169 阅读 · 0 评论 -
3D图形学学习总结总览
原文链接:http://www.nicemxp.com/articles/173D图形学学习总结(一)—世界坐标转换3D图形学学习总结(二)—相机坐标转换(欧拉相机)3D图形学学习总结(三)—相机坐标转换(UVN相机)3D图形学学习总结(四)—透视坐标变换3D图形学学习总结(五)—屏幕坐标变换3D图形学学习总结(六)—背面消除与物体剔除3D图形学学习总结(七)—Gour...原创 2018-11-02 18:15:33 · 781 阅读 · 2 评论 -
3D图形学学习总结(一)—世界坐标转换
原文链接:http://www.nicemxp.com/articles/18一个在局部模型坐标下的立方体,如图:该立方体共8个顶点,在局部坐标中的坐标可以在图中看到,如果把该立方体放入世界坐标系中(world_x,world_y,world_z)处,即局部坐标的中心点(0,0,0)移动到(world_x,world_y,world_z),那么它的8个顶点也要跟着移动,以v0点为例...原创 2018-11-02 20:07:19 · 2755 阅读 · 0 评论 -
3D图形学学习总结(二)—相机坐标转换(欧拉相机)
原文链接:http://www.nicemxp.com/articles/19物体放置到世界中后,在欧拉相机模型下转换成相机坐标。欧拉相机模型是使用位置和旋转角度(欧拉角度)定义的,其中旋转角度决定了相机的朝向。相机位置在(camx, camy, camz),观察角度为(0,angy,0),即相机绕y轴顺时针旋转angy。如图:如图所示,要想转换成相机坐标,首先将相机移动到原点...原创 2018-11-05 20:29:39 · 3558 阅读 · 0 评论 -
3D图形学学习总结(六)—背面消除与物体剔除
原文链接:http://www.nicemxp.com/articles/23物体从局部坐标最后渲染到屏幕上我们已经基本了解了,但是在3d流水线中我们不能把世界中所有的物体和物体所有的面都渲染出来,这样在视景体中物体的背面或者不在视景体中的物体,对他们进行计算都是做无用功,所以有了物体的背面消除和物体剔除。背面消除物体的背面消除很简单,在世界坐标中进行,即相机坐标转换操作之前,物体的面...原创 2018-11-15 16:14:27 · 1925 阅读 · 1 评论 -
3D图形学学习总结(七)—高洛德着色和仿射纹理映射
原文链接:http://www.nicemxp.com/articles/24gouraud着色和仿射纹理映射,两种算法非常相似,都是一种插值计算的算法,下面记录下原理。Gouraud着色着色是一种游戏物体线框或者网格的填充模式,因为游戏的物体线框和网格都是由三角形组成的,所以着色就是对三角形进行填充,是在二维空间中进行的,gouraud着色是根据三角形顶点的颜色,进行插值计算来完成三...原创 2019-01-30 16:24:08 · 1133 阅读 · 1 评论