图形
ARTELE
爱好计算机
展开
-
学习光线追踪(19)---光源[3]
0.简介目前,还有个问题没有解决,就是在场景中,所有光线的反射折射都对其余物体有影响,这些影响可以考虑处理。1.反射折射比如一个光源照到了镜面反射物体,那么此时镜面反射物体就相当于一个光源,再次对其余物体反射光线,此时,这类反射物体就可以被认为是一个光源,透镜并不只是对光源方向产生折射效果,对任何方向都有,只是因为有光照一面光线强,导致阴影产生,别的方向没有强光源,所以看不出来有阴影效...原创 2020-05-17 15:43:39 · 595 阅读 · 0 评论 -
学习光线追踪(19)---光源[2]
0.简介上次解决了光源问题,下面我们解决透明物体透光问题。注:贴出源码与最终源码可能有所不同,以最终源码为准。1.透明物体透明物体受到光照,比较直直观的就是透镜效果,放大镜聚焦这类的,我是这么考虑的,透明物体也相当于一种光源,只是这种光源和真正的光源不同,真正的光源发光点就是某个中心点,例如球形光源就是球的中心,但是透镜不是,透镜是透镜上所有点都有发光的可能,因为透镜"发"出的光是...原创 2020-05-17 15:43:56 · 592 阅读 · 1 评论 -
学习光线追踪(19)---光源[1]
0.简介目前我们的程序能模拟一些反射和折射的效果,但是,目前物体可见主要还是由于物体自身发光,也就是材质的light属性不为0,从这里开始,要彻底的实现光源发光,其余物体依靠光源的光反射光线的方法显示。注:贴出源码与最终源码可能有所不同,以最终源码为准。1.光源定义一个光源很简单,就是将光源材质的light设置一个大于0的数字,这就是光源,其余的等于0的都是非光源。2.阴影...原创 2020-05-17 15:44:42 · 815 阅读 · 0 评论 -
学习光线追踪(18)---镜面反射贴图
0.简介前面我们实现的镜面反射都是统一的反射指数,但是对于有些材质就不适合有太强的反光效果,通过镜面反射纹理来实现不同部位的反射效果不同1.添加纹理这里和纹理的使用差不多,将原来的参数替换成图片,这里的图片应该是一张灰度图如下图。箱子的反射贴图这个是木箱子的反射贴图,黑色的部分是不发生镜面反光的,白色部分是有镜面反光的。float HighMaterial::getSp...原创 2020-05-17 15:44:56 · 1704 阅读 · 0 评论 -
学习光线追踪(17)---BUG修改
0.简介之前就顾着一直写来着,中途出现了一些小问题,这里简单总结一下。1.盒体绘制这里后来我绘制了一个箱子,结果出现了神奇的问题,找了很久发现,是在计算箱子最近平面的时候找到平面就返回了,没有判断最小距离。所以做了新的补丁。Ray Triangles::intersect(Ray ray){ //一束光线只能在同一时间打在这个物体的一个位置上 float min = FLT...原创 2020-05-17 15:45:13 · 504 阅读 · 0 评论 -
学习光线追踪(16)---折射计算[2]
0.简介上一次实现了折射,看到了一个透明的球体,这次也是一次展示,放入了一个玻璃方块,就是一块玻璃砖。1.效果不在过多叙述就是添加了一个新的透明盒子折射效果可以看到地面上有一个透明的立方体。三角面是逆时针绘制的。2.源码release0.12...原创 2020-05-17 15:45:29 · 515 阅读 · 0 评论 -
学习光线追踪(16)---折射计算[1]
0.简介前面的反射效果已经和非光追渲染有很大区别了,这回加上折射计算,效果会更好。1.折射计算折射计算相对反射要复杂一点,折射公式网上有的是,我就不在这里进行推导和详细讲解了,有需要的可以看下面这篇博客。光线折射计算2.添加计算代码在之前的反射光线附近添加折射光线计算代码,然后折射也进行光追迭代。光线追踪迭代函数。Ray rayTrac(Ray ray, vect...原创 2020-05-17 15:45:42 · 1563 阅读 · 0 评论 -
学习光线追踪(11)---纹理加载
0.简介之前显示的图形中都是单一颜色的,这次我将纹理加上去,这样就可以显示更加丰富的元素了。1.纹理添加纹理功能需要对源程序多个地方修改,因为有了纹理就会增加纹理坐标的处理,所以在定义多边形的时候,就要在在原来顶点的基础上添加纹理坐标。然后根据光打在多边形上的位置,计算纹理坐标。2.纹理坐标定位为了能刚好的兼容各种i情况的纹理坐标,采用面积法来定位纹理坐标。纹理坐标示意图...原创 2020-05-17 15:46:39 · 567 阅读 · 2 评论 -
OpenGL游戏制作之路[第七篇 元素动起来(1)]---2D游戏---(注:此版本作者处于探索阶段,希望能得到读者的指教和建议)
失踪人口回归。前言上回书说到地图编辑器可以放置元素了,这次我们让元素动起来。首先,我制作了一张动图的素材。正题这两张图仔细观察,有不同的地方,我就利用这两张图来实现元素的动态效果。class GLTexture{protected: //动画序列 vector<GLuint> animation_sequence; //当前显示的 GLuint...原创 2019-03-27 21:56:15 · 308 阅读 · 0 评论 -
OBB包围盒及其碰撞检测算法(一)
之前对于游戏的物理 引擎挺感兴趣,但是碰撞算法得学习一下,AABB就不说了,给点思路基本都能做出来,但是OBB就不一样了,涉及到了一些数学知识,其实涉及到图形方面的时候,线性代数就会常用一些,虽然这个OBB病没有涉及到图形的变换,但是也用到了线性代数的东西。如果不懂AABB和OBB是什么的话我在这里简单说一下,玩游戏的时候,游戏中的元素会发生碰撞,有的时候元素的形状不是很规则,如果直接对不规则原创 2017-01-25 15:24:05 · 22912 阅读 · 11 评论