Loading

随笔分类 -  计算机图形学

摘要:成功在 MacOS 的 Docker 中运行 OpenGL 程序并显示这里记录一下: 我用的是 https://hub.docker.com/r/thewtex/opengl 这个镜像非常好,大部分工作都做好了,这里用的是基于 CPU 的渲染,也就是软件渲染,没有利用到显卡, 假设我们已经安装好了 阅读全文
posted @ 2022-11-26 12:35 芒果和小猫 阅读(1446) 评论(0) 推荐(0) 编辑
摘要:在第 5 篇文章中,我们成功加载了 fbx 模型,并且做了 MVP 变换,将立方体按照透视投影渲染了出来。但是当时只是随机给顶点颜色,并且默认 fbx 文件里只有一个 mesh,这次我们来加载一个柴犬模型,并且给模型贴图,模型可以从 sketchfab 下载。 本文没有涉及到理论解释,更多的是代码实 阅读全文
posted @ 2022-10-07 01:25 芒果和小猫 阅读(503) 评论(2) 推荐(0) 编辑
摘要:在 4 中成功绘制了三角形以后,下面我们来加载一个 fbx 文件,然后构建 MVP 变换(model-view-projection)。简单介绍一下: 从我们拿到模型(主要是网格信息)文件开始,模型网格(Mesh)里记录模型的顶点位置信息,比方说 (-1,1,1) 点,那么这个点是相对于这个模型的( 阅读全文
posted @ 2022-10-05 19:42 芒果和小猫 阅读(923) 评论(0) 推荐(0) 编辑
摘要:在做了 1~3 的基础工作后,我们的开发环境基本 OK 了,我们可以开始尝试利用 pyopengl 来进行绘制了。 本文主要有三个部分 利用 glfw 封装窗口类,并打开窗口; 封装 shader 类,进行编译、链接、使用; 封装 VAO、VBO、EBO 完成主函数进行绘制 完整的代码在仓库 (ta 阅读全文
posted @ 2022-10-03 01:02 芒果和小猫 阅读(488) 评论(0) 推荐(0) 编辑
摘要:assimp 是一个开源的模型加载库,支持非常多的格式,还有许多语言的 binding,这里我们选用 assimp 的 python 的 binding 来加载模型文件。不过社区主要是在维护 assimp 的 C++ 代码,对于这些 binding 可能更新的不够及时,比如 python 版本的就存 阅读全文
posted @ 2022-10-01 22:45 芒果和小猫 阅读(1471) 评论(0) 推荐(0) 编辑
摘要:1. 跨平台窗口管理 为了将 OpenGL 渲染的内容在操作系统的窗口中显示出来,我们不可避免的需要调用操作系统的 API 创建窗口、渲染上下文等等,每个操作系统的 API 都不一样,为了减少繁琐工作以及为了程序的可以移植性,有一些工具库帮助我们完成了这些事情,使得我们不需要和 native API 阅读全文
posted @ 2022-09-27 14:10 芒果和小猫 阅读(143) 评论(0) 推荐(0) 编辑
摘要:因为只是为了验证原理和想法,实在不愿意折腾 C++ 去编译、链接找库......,并且为了配合今后一系列关于 CG 的文章,决定用 python 的 opengl wrapper 来进行实践,所以第一步就是安装 pyopengl 了。 pip install PyOpenGL PyOpenGL-ac 阅读全文
posted @ 2022-09-27 01:07 芒果和小猫 阅读(248) 评论(0) 推荐(0) 编辑
摘要:什么是顶点动画? 简单来说,通过改变网格顶点的位置,使网格变形从而做成的动画。顶点动画的灵活度要远远高于骨骼动画。骨骼动画是靠骨骼(一堆有层级结构的节点,数量应该是远远小于网格顶点的数量的)的变化来驱动网格的形变,从自由度上来说,顶点动画每个网格的顶点都可以发生变化,因此自由度要远高于骨骼动画,可以 阅读全文
posted @ 2022-09-08 00:44 芒果和小猫 阅读(2312) 评论(0) 推荐(0) 编辑
摘要:Lookat矩阵 在三维游戏引擎中,需要摄像机看向某个点,或者需要物体看向某个点,此时需要对物体的变换,以调整到我们需要的姿态。以Unity为例,Unity的坐标系是左手系,朝上的轴是y轴(up,绿色),朝前的轴是z轴(foward,蓝色),朝右的轴是x轴(right,红色)。现在我们想让fowar 阅读全文
posted @ 2021-04-28 19:31 芒果和小猫 阅读(572) 评论(0) 推荐(0) 编辑
摘要:颜色混合(Color Blending) 颜色混合是通过混合两种颜色,来得到第三种颜色的一种方法。已有的颜色一般称为destination,将要放上的颜色称为source。一般图片除了颜色的RGB通道,还有一个alpha通道来表示透明度。我们可以利用混合来制作半透明的效果。有两种混合方式,传 阅读全文
posted @ 2020-06-19 11:19 芒果和小猫 阅读(676) 评论(0) 推荐(0) 编辑
摘要:Z缓冲区算法(Z-Buffer) 将多边形投影到2D平面上时,还需要解决一个问题,就是遮挡问题,也就是消除隐藏面,常用的是Z-Buffer算法。 一个帧缓来村像素的颜色,一个深度缓存来存放每个像素对应物体的深度值。 总的思想是,如果当前操作的像素值的深度值大于深度缓存中对应的深度值(因为往-Z方向看 阅读全文
posted @ 2020-06-18 23:21 芒果和小猫 阅读(659) 评论(0) 推荐(0) 编辑
摘要:简单光照模型(Phong和Blinn-Phong)和明暗处理 支持点光源和平行光,是一种简单光照模型,它将光照分解成了三个部分,分别为 漫反射 镜面反射 环境光 如图所示,是一个简单的几何模型。 L是光源方向 N是法线方向 R是反射方向 V是视线方向 HLV的平分 所 阅读全文
posted @ 2020-06-11 15:27 芒果和小猫 阅读(2812) 评论(0) 推荐(1) 编辑
摘要:基变换 理论部分 在n维的线性空间中,任意n个线性无关的向量都可以作为线性空间的基,即空间基不唯一。对于不同的基,同一个向量的坐标一般是不同的。因为在计算机图形学中,主要研究三维的空间,所以可以简化问题倒三维空间中的基变换,也就是坐标变换。 假设有两组单位正交基(图形学中选取的坐标系一般是正交的,为 阅读全文
posted @ 2020-06-10 11:11 芒果和小猫 阅读(1862) 评论(0) 推荐(1) 编辑
摘要:简介 基本是翻译和补充 http://www.songho.ca/opengl/gl_projectionmatrix.html 计算机显示器是一个2D的平面,一个3D的场景要被OpenGL渲染必须被投影到2D平面上以生成2D的图像。在OpenGL中,GL_PROJECTION矩阵可以用来进行投影变 阅读全文
posted @ 2020-06-05 14:29 芒果和小猫 阅读(968) 评论(0) 推荐(2) 编辑
摘要:1 变换矩阵 平移矩阵 \[ [10tx01ty001] [xy1] = \begin{bmatrix} x 阅读全文
posted @ 2020-06-03 16:01 芒果和小猫 阅读(303) 评论(0) 推荐(0) 编辑
摘要:1 Shader中的数据 1.1 获取数据的方式 1.1.1 属性(attribute)和缓冲(buffer) 缓冲是发送到GPU的一些二进制数据序列,通常情况下包括位置、法向量、纹理坐标、顶点颜色值等。一下是常用的API(gl代表WebGLRenderingContext) gl.createBu 阅读全文
posted @ 2020-06-02 17:29 芒果和小猫 阅读(552) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示