- 博客(18)
- 资源 (2)
- 收藏
- 关注
原创 LearnOpenGL学习心得(一)
VAO、VBO 和 EBO 关系:OpenGL 只有一个当前对象,把它想象成 current object,你的后续操作,都是在对这个 object 进行。你可以拥有很多个 object,然后用 bind 来指定 current object,所以你后面的操作,就不需要点名你在操作谁了。通过绑定,可以随时的在多个 object 之间切换当前对象。从图中可以看到,VAO相当于保存的是一个状态集,而 VBO 和 EBO 保存的只是一块数据,是没有状态的。
2025-03-28 12:06:44
699
原创 C++ 字符串分割
C与C++风格的字符串辨析C++风格的字符串 string 类型,是STL标准库提供的模板类容器,它支持迭代器,作为类有许多直接的成员函数可以调用(C风格字符串需要调用库里的函数才可以实现相同的功能)
2025-03-02 10:44:18
595
原创 在循环中的递归该如何理解
当一个问题比较复杂时,我们设法将他转化为一个或多个形式一样但问题规模较小的问题来解决,并且当小问题解决后能够推导出大问题的解。若小问题仍然无法解决则继续将小问题转化为形式相同的更小问题,直到问题规模小到足以轻而易举地解决。这里将一个大问题转化或者说分解出的小问题称为该大问题的子问题。
2025-03-02 10:43:31
988
原创 C++的初始化以及构造函数
一、初始化1.初始化与赋值C++中初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新的值来代替,这两种完全是一个不同的操作。有一些变量创建了以后就不允许变化或者是没有编译器给其默认赋值,就必须初始化而不能使用赋值操作:①变量为const或引用类型:const对象:一旦被创建就不能被修改,所以必须初始化。引用:创建一个引用时,程序把引用和初始值绑定在一起,而不是将初始值拷贝给引用,一旦初始化完成,引用将和他的初始值对象一直绑定在一起,无法再绑定到其他对象上,所以
2024-09-24 12:00:29
511
原创 3D几何学习
1.齐次坐标为0,表示为方向向量,不可位移,齐次坐标非0,则表示为一个点。2.想要从齐次向量得到3D向量,我们可以把x、y和z坐标分别除以w坐标(通常不会注意这个问题,因为w分量通常是1.0)① 绕参考系三个轴 (xyz) 的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。② 此时各个变换顺序的旋转矩阵是左乘的① 绕物体坐标系三个轴 (XYZ) 的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。② 此时各个变换顺序的旋转矩阵是右乘的。
2024-09-24 11:58:48
990
原创 精读diffusion论文系列(1)——DDPM
为什么要分成多步来实现功能,因为多步方便控制,方便生成指定的图像最小化生成和编码两个概率分布的KL散度重参数化相当于让最后的求导连接到了平均值和方差变量上,从而让随机生成的噪声作为了一个导数形式表现。而均值向量和方差向量可以由神经网络的权重表示。采样过程是无法进行可微的,但是如果重参数化后,z和均值、方差向量之间联系起来了,所以梯度可以一直反传到后面网络中对应的参数1. Introduction首先在Introduction部分定调了DDPM是一个使用变分推断来训练的参数化马尔科夫链,它通过有限次数
2024-09-24 11:56:36
1234
1
原创 精读diffusion论文系列(2)—— DDIM
DDPM虽然能生成高质量的照片,但是由于他是依赖马尔科夫链来进行推理的,所以需要一步一步的进行采样,这样效率很低。在DDPM中,通过不断给图片增加噪声,最后得到一个高斯噪声的过程称为前向过程也叫扩散过程,这个过程中每一个。后面就是讲述了DDPM的推断过程和训练过程,但是DDIM论文中和DDPM原文中有些符号表示的不是一个意思。DDIM希望我们可以绕开这个马尔科夫链的限制,从而不需要进行迭代的加噪采样,便可以直接得到最终的。这种想法本质上是想用一个粗糙的估计出的分布来代替真实的数据分布。
2024-09-20 18:28:59
1059
原创 python运行机制以及import函数执行过程
我们经常使用的各种语言大部分都是高级语言,高级语言计算机是无法读懂的,需要首先编译为机器可以读懂的汇编语言,然后让机器“翻译”为由0和1组成的二进制文件机器才可以执行。最直接的一个想法是我们直接将代码通过一个“黑盒子”变为二进制代码并运行,编译翻译这些工作都由这个“黑盒子”来完成,这个黑盒子其实就是我们说的,我们在任意系统上,只要有这个高级语言对应的解释器,我们就可以直接运行该程序,所以解释器对应的程序是可以跨平台的。解释器对应的语言一般为解释性语言,例如Python。
2024-07-24 14:11:54
1173
原创 blender设置渲染背景和渲染线云obj
通过Add添加Alpha over节点,会将两个image进行合并,其中未被链接的Image即为背景颜色,调成纯白即可。导入一个obj格式的线云模型,线云模型特殊之处在于其无法使用 freestyle方法 提取对应的轮廓线条,因为它本身就是轮廓线。由于blender与模型的坐标系不一致,我们首先将其原点归位到坐标系的几何中心,鼠标右键点击物体,选择geometry to origin。原点归位后使用快捷键 ctrl+R 来进行旋转得到与坐标系相对一致的物体,以便于后续规划相机路径。
2024-07-18 02:33:54
1663
原创 对于docker的理解以及使用参考
打个比方,我们从海里打捞出了一条鱼,我们把它带回家养着,如果经济一点的方法,就是我们弄个水缸,里面提供氧气泵,食物等这条鱼生存所需要的必要条件,如果我们豪华一点,我们就直接建个水族馆模拟海洋里的条件,除了氧气,食物等必需品,海洋里的地形条件,海洋里其他的生物等非必须的条件我们也整上,这两种方法都可以保证鱼的存活,但很显然,第二种方法没有必要,因为我们只需要这条鱼活着就行了,我们不关心其他的海洋因素,这里面的鱼就类似于我们想要执行的程序,docker技术就相当于第一种方法,虚拟机技术相当于第二种方法。
2022-09-06 23:30:48
1215
1
原创 使用VScode + CMake + MinGW配置OpenGL
1. 将VScode配置CMake需要通过MSYS2下载好MinGW_w64,以及下载好CMake,然后在VScode中配置三个文件:launch.jsontasks.jsonc_cpp_properties.json将三个文件的默认编译器路径进行修改即可2.配置GLFW库GLFW库是针对 OpenGL 的 C 语言库,提供了渲染物体所需的最低限度的接口。允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入,首先从官网上下载GLFW包我们需要依据自己的编译器是MSVC以及M
2022-03-11 20:26:20
214
原创 C语言的预编译
C程序的生成需要经过预编译、编译、汇编和链接四个步骤才可以执行,其中在预处理步骤,预处理器会执行宏替换、条件编译以及包含指定的文件。包含文件以"#"开头的命令行就是预处理器处理的对象。其中两个最常用的预处理指令是:#include指令(用于在编译期间把制定的文件内容包含进当前文件中)和 #define指令(用任意字符序列代替一个标记)。一般 #inlude 文件后面跟着头文件的名字,但后面跟着的形式却有所不同,有两种形式:#include <stdio.h>#include "my.h"
2021-11-11 20:28:06
2296
原创 现代计算机图形学入门(三)——光栅化
文章目录一、三角形的应用二、使用步骤1.引入库2.读入数据总结一、三角形的应用我们在光栅化的过程中,需要把不同的像素转化为多边形。有的是四边形,但更为广泛的是使用三角形。三角形有如下的好处:①三角形是最基础的多边形,没有比三角形边更少的多边形②任何其他多边形都可以拆为三角形③三角形的内部一定是在一个平面的,而四边形就可能不会④三角形的内外区分非常清楚,但是对于多边形而言,由于存在凸多边形和凹多边形所以区分比较麻烦⑤通过三角形三个顶点的左边便于判断三角形内像素的中心点与三角形的关系在图形
2021-08-08 11:19:10
935
原创 现代计算机图形学入门(四)———— 着色
文章目录1 可见性(Visibility)1.1 画家算法1.2 Z-Buffer算法2 着色(Shading)2.1 Blinn-Phong反射模型2.1.1 漫反射1 可见性(Visibility)1.1 画家算法对于一幅图,我们一般是先把远景画完,然后再用近景将部分远景覆盖,最终得到一幅画,在图形学中这样的一种算法过程被称为画家算法在图形学中我们想画一个立方体,画画的顺序也挺讲究,如下正方体,如果我们不是以左上右下的顺序画,左面就会有一条棱线显现出来。在一般的情况下,
2021-08-07 15:46:43
1162
原创 现代计算机图形学入门(二)——变换
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport p
2021-05-16 15:29:00
964
1
原创 现代计算机图形学入门(一)——线性代数基础
现代计算机图形学入门(一)——线性代数基础本系列文章为学习GAMES101课程的学习笔记,欢迎交流分享文章目录现代计算机图形学入门(一)——线性代数基础一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、pandas是什么?标题二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warning
2021-04-30 18:00:47
2412
基于OpenGL的三维花瓶模型生成
2024-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人