自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 WebGL模型加载问题

- 预先加载模型,防止不出图 -->

2025-03-23 14:52:33 74

原创 33333

【代码】33333。

2025-03-18 17:51:24 89

原创 提高11111

【代码】提高11111。

2025-03-18 16:48:11 109

原创 将光源视角的深度贴图应用于摄像机视角的渲染

将光源视角的深度贴图应用于摄像机视角的渲染是阴影映射(Shadow Mapping)技术的核心步骤之一。这个过程涉及到将摄像机视角下的片段坐标转换到光源视角下,并使用深度贴图来判断这些片段是否处于阴影中。为了将摄像机视角下的片段转换到光源视角下,我们需要计算光源的视图矩阵和投影矩阵。将片段从世界空间转换到光源视角下的裁剪空间:使用光源的视图矩阵和投影矩阵将世界空间中的坐标转换到光源视角下的裁剪空间。将片段从屏幕空间转换到世界空间:使用摄像机的逆投影矩阵和逆视图矩阵将片段从屏幕空间转换到世界空间。

2025-01-07 15:12:47 622

原创 如何将光源视角的深度贴图应用于摄像机视角的渲染

虽然光源的视角和摄像机的视角不同,但我们通过将摄像机视角下的片段投影到光源视角中,确保了我们在光源的视角下正确地比较了深度值。1.4将片段从光源视角下的裁剪空间转换到光源视角下的纹理空间:通过除以 w 分量(透视除法),将裁剪空间中的坐标转换为归一化的设备坐标(NDC),然后再将其映射到深度贴图的纹理坐标系中。我们需要将摄像机视角下的每个像素投影到光源的视角中,然后检查该像素在光源视角下的深度值是否大于深度贴图中的深度值。一旦我们得到了光源视角下的纹理坐标,就可以从深度贴图中采样出对应的深度值。

2025-01-07 15:09:37 341

原创 Opengl天空和

【代码】Opengl天空和。

2024-12-13 14:28:56 106

原创 切片渲染原理

立方体-切片相交:一个盒子和一个平面之间的相交会产生一个有3到6个顶点的多边形(假设这个平面实际上与盒子相交)。不同的情况如图2所示。我们的方法是在顶点处理器中直接计算这样的交点多边形。但是,一个顶点程序只能修改现有的顶点。它既不能在流中插入新的顶点,也不能从流中删除顶点。因此,我们设计了一个顶点程序,它总是接收6个顶点并输出6个顶点。如果交点多边形包含小于6个顶点,则顶点程序将生成一个或多个重复的顶点(即两个相同的顶点,中间的边长度为

2024-12-05 13:43:43 624

原创 生成一个带法向量的圆锥体

【代码】生成一个带法向量的圆锥体。

2024-12-02 13:23:20 138

原创 基于OpenGL的光照烘培生成光照贴图的流程和代码

光照烘焙的主要目的是将复杂的光照计算预先存储到纹理中,这样可以减少实时渲染时的计算量,尤其在静态场景中。这种技术可以显著提高游戏或者应用的性能。在OpenGL中,利用帧缓冲对象(FBO)来存储光照烘焙的结果并通过纹理映射在最终渲染时使用,是实现光照烘焙的标准方式。

2024-12-02 11:17:22 544

原创 光照贴图原理

光照贴图就是一种将复杂的光照计算预先烘焙到纹理图像中的技术,这样在渲染时就不需要实时计算光照,而是直接将计算好的结果从纹理中提取出来。它是一种非常高效的性能优化手段,尤其在静态场景中表现出色。

2024-12-02 11:15:25 651

原创 纹理映射的坐标对应关系

在 3D 模型的每个顶点中,我们定义了顶点的位置和与之对应的纹理坐标。假设我们正在绘制一个简单的正方体,每个顶点会有一个纹理坐标,用来指示该顶点在纹理图像上的位置。

2024-11-29 11:22:10 736

原创 用三维模型的顶点法向量计算法线贴图

不过,法线贴图通常是在纹理空间(2D 图像的每个像素)内进行操作,并不直接操作三维顶点的法线,而是利用法线贴图中的每个像素值表示一个表面的法向量。假设已经加载了法线贴图,并且传递给片段着色器,在着色器中,我们将法线贴图的 RGB 值重新映射为三维法线向量,进行光照计算。由于法线是通过法线贴图获取的,表面看起来会有更丰富的细节,即使原始网格本身非常简单。在渲染时,法线贴图中的 RGB 值会被用来替代顶点的法线,计算最终的光照效果。会从法线贴图中获取,经过映射后重新生成一个单位法线,代表表面的局部法向量。

2024-11-29 10:10:34 718

原创 assimp读取的TexCoords和u、v坐标

的主要用途是将 2D 纹理图像映射到 3D 模型的表面。Assimp 负责从模型文件中解析顶点的纹理坐标,并将其存储在。通过 OpenGL 的顶点、片段着色器,将这些坐标用于纹理采样,从而为模型渲染出逼真的纹理效果。在 Assimp 中,每个网格的顶点可能包含一个或多个纹理坐标集合,存储在。表示模型顶点的纹理坐标,通常用于将 2D 纹理图像映射到 3D 模型表面。从绑定的纹理图像中采样颜色,并将颜色应用到模型的表面。作为顶点属性传递到片段着色器,用于采样纹理。在 OpenGL 中,之间,对应纹理图像的。

2024-11-29 09:40:48 277

原创 二维四边形显示三维纹理的方式

当纹理坐标超出[0, 1]范围时,纹理的边界会被“拉伸”至边缘颜色,这样超出范围的部分会显示纹理的边缘颜色,常用来处理透明度边界。这样,四边形的显示将不会继续“拉伸”纹理的中间部分,而是使用纹理的边缘像素填充纹理坐标超出范围的区域。:当纹理坐标超出[0, 1]范围时,纹理会重复,超出部分的纹理会根据某种周期性规则重复。:当纹理坐标超出[0, 1]范围时,纹理会沿着纹理坐标反向重复,形成镜像效果。如果你的纹理边界是不规则的(比如透明区域),并且你使用。,超出部分的纹理将会显示其边缘像素,而不是继续延伸。

2024-11-28 11:45:50 286

原创 OpenGL如何裁剪三维纹理为二维纹理

将一个 3D 纹理裁剪为二维纹理的过程实际上是选择一个特定的切片来显示。: 3D 纹理可以通过不同的方向进行“切片”。一般来说,3D 纹理的坐标有xyz三个轴。裁剪方向的选择通常是基于这些坐标轴来决定的。z:选择在z轴上进行切片,意味着将 3D 纹理从z轴方向上按层切开,显示每一层(即选择某个深度层的二维纹理)。这种方式常见于体积数据、医学影像数据的可视化。xy:也可以选择x轴或者y轴来切片,显示不同深度层在x或y方向上的投影。

2024-11-28 11:34:13 185

原创 OpenGL显示三维纹理的二维切片

在三维纹理中,纹理坐标是三维的 (s, t, r),其中 s 和 t 分别对应二维纹理的水平和垂直坐标,r 对应深度坐标。四边形的顶点坐标通常定义为屏幕上的位置,例如 (-1.0, -1.0, 0.0) 到 (1.0, 1.0, 0.0)。纹理坐标则定义为 (0.0, 0.0, r) 到 (1.0, 1.0, r),其中 r 是当前切片的深度坐标。++i):遍历所有切片。当我们渲染一个四边形时,可以通过设置 r 坐标的值来选择三维纹理中的某个切片。FragColor:最终的片段颜色,从三维纹理中采样得到。

2024-11-28 11:30:09 423

原创 屏幕空间环境光遮蔽(SSAO,Screen Space Ambient Occlusion)

是一种基于屏幕空间的环境光遮蔽技术。它通过使用深度缓冲、法线缓冲和随机采样核生成遮蔽效果。以下详细描述 SSAO 的。,常用于光照阶段乘以环境光分量。

2024-11-27 16:00:14 1265

原创 【OpenGL】延迟着色和G缓冲

延迟着色(Deferred Shading)是一种渲染技术,通过将几何信息(如位置、法线和颜色)存储在缓冲区中,分两步完成光照计算,从而提升复杂场景的性能。2. 几何阶段 (Geometry Pass) 在几何阶段,渲染场景,将几何信息存储到 G 缓冲区。3. 光照阶段 (Lighting Pass) 使用屏幕空间四边形渲染光照。根据需要添加后期处理,直接在 FragColor 上进行额外处理即可。创建帧缓冲对象 (Framebuffer Object, FBO)2.3. 创建颜色 + 镜面强度缓冲区。

2024-11-27 14:09:05 1254

原创 meshh传递顶点位置、法向量、纹理坐标、uv向量的方法

【代码】meshh传递顶点位置、法向量、纹理坐标、uv向量的方法。

2024-11-21 12:59:53 163

原创 shaderh的设计

【代码】shaderh的设计。

2024-11-21 12:58:58 280

原创 Model类的设计

【代码】Model类的设计。

2024-11-21 12:58:10 124

原创 Opengl光照测试

然后是配置一下glfw+glad环境。

2024-11-15 16:44:09 633

原创 opengl半角切片渲染

读取模型并进行半角切片渲染。

2024-11-14 14:06:01 147

原创 openmesh的配置

2024-10-25 17:38:12 145

原创 Windows下3D Gaussian Splatting

加入环境变量时,先ff再colmap,

2024-10-19 15:34:20 162

原创 加载模型的效果

Shader ourShader("loading.vs", "oading.fs");Model ourModel("outputmesh.obj");

2024-09-13 14:06:50 138

原创 #include <pcl/point_types.h>#include <pcl/PolygonMesh.h> int main() { pcl::PointCloud<pcl::Po

/ 第一个顶点的索引。// 第二个顶点的索引。// 第三个顶点的索引。// 现在mesh包含了一个三角形,它的顶点是cloud中的点。// 如果需要,可以保存网格到文件。// 假设我们有一个简单的三角形。// 创建一个三角网格对象。// 填充点云数据...// 设置三角形索引。

2024-09-06 17:55:00 338

原创 #include <iostream>#include <vector>#include <ctime>#include <pcl/point_cloud.h>#include <pcl/oc

boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer(new pcl::visualization::PCLVisualizer("显示点云"));//设置背景颜色为黑色。// 对点云着色可视化 (red).// 等待直到可视化窗口关闭。// 初始化点云可视化对象。

2024-09-05 12:28:38 383

原创 opengl两张图像的混合、叠加后放在旋转立方体表面

【代码】opengl两张图像的混合、叠加后放在旋转立方体表面。

2024-08-05 11:01:24 670

原创 带深度的坐标变化

【代码】带深度的坐标变化。

2024-07-16 09:50:49 127

原创 多个箱子不旋转

【代码】多个箱子不旋转。

2024-07-16 09:50:02 102

原创 添加编译选项

在倒数第二行添加:

2024-07-02 10:37:06 321

原创 opengl箱子的显示

单个旋转箱子:注意要使用文件夹里自带的awsomeface.png。单个箱子:注意要使用文件夹里自带的awsomeface.png。

2024-07-01 15:26:07 1075

原创 opengl坐标变换

读入图像然后额外开辟着色器。

2024-06-24 13:30:50 226

原创 【VTK】多窗口交互显示

【代码】【VTK】多窗口交互显示。

2024-06-14 10:51:09 580

原创 【VTK】dicom序列换切片

【代码】【VTK】dicom序列换切片。

2024-06-14 10:50:33 469

原创 [VTK]DICOM序列到.stl输出

【代码】[VTK]DICOM序列到.stl输出。

2024-06-14 10:49:47 389

原创 OPENGL三维渲染

【代码】OPENGL三维渲染。

2024-05-06 16:19:50 166

原创 OPENGL与VS的配置细节

命令行:链接器命令行:

2024-05-06 13:32:30 896

原创 opengl+vs2013环境配置

4、打开vs2013,新建一个win32控制台程序,打开 视图-》属性管理器-》Debug|x64,右键打开属性,在VC++目录-》库目录下新增目录D:\opengl,提前在D盘目录下新建一个文件夹opengl,将glut64.lib拷到opengl目录下(记得将glut64.lib改成glut32.lib)====================完成上述4个步骤即可以跑通vs2013 Debug x64环境=================如:C:\Windows\SysWOW64 (64位系统)

2024-05-06 10:20:06 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除