自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

牵LV小猪精的博客

一只会写Bug的猪

  • 博客(135)
  • 资源 (8)
  • 收藏
  • 关注

原创 Shader Language编程语言(CG/HLSL/GLSL)

Shader Language编程语言Shader Language编程语言Shader Language编程语言Shader Language目前主要有3种语言:基于 OpenGL 的 OpenGL Shading Language,简称 GLSL;基于 DirectX 的 High Level Shading Language,简称 HLSL;还有 NVIDIA 公司的 C for Graphic,简称 Cg 语言。OpenGL(全写Open Graphics Library) 是一个定义了

2022-05-27 16:56:29 1006

原创 Opengl同时显示模型和三角网格线框

Opengl同时显示模型和三角网格线框glPolygonMode 函数及相关参数同时显示模型和三角网格线框glPolygonMode 函数及相关参数glPolygonMode(参数1, 参数2);参数1 可以为: GL_FRONT、GL_BACK、GL_FRONT_AND_BACK参数2可以为:GL_LINE(注意区分GL_LINES)、GL_FILL实现效果如下:针对三维三角网格模型首先使用glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);得到的网格模型如下

2022-05-26 20:40:06 1176

原创 OpenGL渲染STL三角网格模型

Opengl绘制STL模型实现效果STL模型文件实现代码实现效果首先先看看使用可编程管线实现的STL模型的渲染效果,网格模型的数量大约在100来万,实现的效果还是挺鲁棒。STL模型文件关于STL的文件格式主要包括以下两种:ASCII格式二进制格式实现代码filesystem.h文件#ifndef FILESYSTEM_H#define FILESYSTEM_H#include <string>#include <cstdlib>#include "r

2022-05-26 17:40:16 1320

原创 OpenGL深度测试

OpenGL深度测试1. 深度缓冲(Depth Buffer)2. 深度缓冲实现3. 深度测试函数测试对比4. 深度冲突(Z-fighting)1. 深度缓冲(Depth Buffer)深度缓冲是由窗口系统自动创建的,它会以16、24或32位float的形式储存它的深度值。在大部分的系统中,深度缓冲的精度都是24位的。当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为

2022-05-21 17:06:26 1990

原创 c++实现2048小游戏

C++实现2048界面展示效果:#include <easyx.h>//需要包含这个库#include <string.h>#include <map>#include <sstream>#include <time.h>#include <conio.h>#include <graphics.h>#pragma comment( lib, "MSIMG32.LIB")// 方块的状态enum

2022-05-10 21:33:37 929

原创 图像轮廓提取算法(Opencv基于C++实现)

Opencv绘制图像轮廓1. 打开图像代码2. 轮廓提取函数3. 代码实现本章主要实现图像轮廓提取实现结果如下:1. 打开图像代码注意图片存放路径不能出现中文,不然会报错! CString defaultDir = _T("请选择路径"); //设置默认打开文件夹 CString fileFilter = _T("文件(*.jpg;*.bmp)|*.jpg;*.bmp|All File (*.*)|*.*||"); //设置文件过滤 CFileDialog fileDlg(true, d

2022-05-09 21:31:31 5926

原创 CSDN如何转载一篇博客呢

看到一篇挺好的文章想要转载怎么做呢?方法一 :傻瓜式复制【不推荐】方法二 : 后台操作【推荐】方法一 :傻瓜式复制【不推荐】一个个图文抠,效率低下,且版面格式会发生变化方法二 : 后台操作【推荐】首先先打开文章点击右键检查出现该开发工具界面,注意停留在元素这一栏,如图所示:点击Ctrl+F查找出现查找栏,并在查找栏内输入article_content选中该行后,点击右键然后点击复制,复制outerHTML打开创作,点击右键粘贴,即可出现原文的内容,查看并稍微修改,有些地方格式还

2022-05-08 10:57:44 1573 1

原创 Simplify3D打印参数设置

Simplify3D打印参数设置关键是打印进程的设定,这边以TPU为例子,其他材料可以查阅相关参数进行喷头温度,打印速度的修改,其他的基本一致。设置完成后进行模型切片,完成后点击储存即可进行打印...

2022-05-07 10:57:13 4120 2

原创 Opencv图像美颜滤镜

图像美颜void BeautyFace(){ Mat matResult; Mat src = imread("D:/pic2/a0.png"); int bilateralFilterVal = 50; // 双边模糊系数 imshow("原图", src); whiteFace(src, 1.1, 8); // 调整对比度与亮度,参数2为对比度,参数3为亮度 imshow("亮度调节", src); GaussianBlur(src, src, Size(5, 5), 0, 0

2022-05-06 20:02:57 557

原创 摄像头动态捕捉小程序

Opencv摄像头实时捕捉小程序驱动摄像头加入Canny边缘检测加入Sobel边缘检测先上一个好玩的动图看看结果:驱动摄像头首先先驱动摄像头实现的代码如下:#include <opencv2/highgui/highgui.hpp>using namespace cv; int main(){ Mat img_src; VideoCapture cam(0); while(1) { cam >>img_src;

2022-05-06 16:46:39 1343

原创 Opencv推荐学习网站

中文学习网站网址:http://www.opencv.org.cn/http://wiki.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5

2022-05-06 14:53:04 2022

原创 模型轮廓提取

模型轮廓提取模型边界 (孔洞)识别算法对于三角网格模型,如果存在某一条边只属于一个三角面片,那么这个边为模型边界,称这条边为模型的边界边。如果一条边同时属于两个三角形,则为内部边。由边界边首尾相连构成的闭环多边形则为边界。模型边界 (孔洞) 搜索主要思路:遍历找到边界边,以找到的边界边为起点,搜寻相邻边界边,最后构成一个闭环多边形。实现的伪代码:...

2022-05-05 15:00:29 398

原创 判断点集与多边形的位置关系

判断点集与多边形的位置关系点集与凸多边形点集与一般性多边形点集与凸多边形点集或者是点与多边形位置关系无非就三种点在多边形的内部点在多边形的外部点在多边形上一般如果该多边形是凸的那么我们可以直接用面积法或者向量法来解决位置关系,如下图所示:点集与一般性多边形但是更为一般的多边形可能有凸有凹,该方法便不再适用,如下图所示:根据该思路可以使用射线法,首先看看射线法的基本操作:从目标点引一条射线与多边形做交,当交点个数为奇数说明该点在多边形内部,若是为偶数则该点位于多边形外部,且该方法也

2022-05-05 14:39:58 738

原创 最详细的图像傅里叶变换

图像傅里叶变换的理解1. 傅里叶变换理论层面理解2. 常见频谱图3. 傅里叶变换在图像中的应用1. 傅里叶变换理论层面理解数学意义:傅里叶变换将一个任意的周期函数分解成为无穷个正弦函数的和的形式物理效果:傅里叶变换实现了将信号从空间域到频率域的转换信号分析: 一维傅里叶变换(将杂乱的信号由时域转化到频域中)一维傅里叶变化是将信号分解为正弦波的和的形式时域横轴是时间,纵轴是振幅频域横轴是频率,纵轴是振幅对一个信号做时域到频域的变换,能够清除看到该信号主要由两个正弦波以及一些噪声混合,如下

2022-05-04 15:24:40 45514 11

原创 MFC+Opencv以图拼图

MFC+Opencv拼图MFC对话框添加按钮图片准备Opencv配置代码实现本篇文章主要通过将一系列图片作为拼图的基础,实现目标图形的拼图,我们先给个结果图可以更直观了解生成的结果是如何的。MFC对话框添加按钮第一步:在对话框内创建按钮第二步:在对话框里修改默认的ID: IDC_pingtu第三步:双击所创建的按钮,会生成默认函数:void picprocessing::OnBnClickedpingtu(){//空的}我们把实现写在内部即可!图片准备首先,整理好目标图片,确

2022-05-02 18:06:10 1941

原创 OpenGL光源

按照之前简化版点光源生成的平行光

2022-04-26 20:42:14 1149

原创 MFC Check-box与Button结合

在MFC中经常需要一个按钮能够实现多种功能,这个时候可以考虑通过Check-box的勾选操作来与其配合实现目标效果。首先在对话框里添加Check-box,并且修改Check-box的ID双击添加好的Check-box,会创建一个相应的函数,由于Check-box本意是为了与Button结合使用,所以在该函数内部可以这样编写:void FeatureDistributionDialog::OnBnClickedGan(){ // TODO: 在此添加控件通知处理程序代码 CMainFrame*

2022-04-25 21:11:47 449

原创 对象数组初始化

对象数组初始化问题为什么使用对象数组遇到的问题解决方法为什么使用对象数组为了满足用户创建同一个类的多个对象。遇到的问题应使用“{…}”初始化聚合对象不存在默认构造函数#include<iostream>using namespace std;class point{public: //point(){}; point(float x,float y,float z){ m_x = x; m_y = y; m_z = z; }; float m_x, m

2022-04-23 10:28:51 2701

原创 OpenGL光照贴图

光照贴图1. 光照贴图的意义2. 漫反射贴图3. 镜面光贴图1. 光照贴图的意义现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。只有光照颜色的材质系统是不够的,它只是一个最简单的模型,难以模拟现实中复杂的物体材质。所以我们需要引入漫反射和镜面光贴图(Map)。实现更精确地对物体的漫反射分量和镜面光分量进行控制。2. 漫反射贴图这边要实现的案例是一个带有钢边的木箱子:二维纹理图片如图所示:在着色器中使用漫反射贴图的方法和纹理教程中是完全一样的。主要将纹理储存为Material结构

2022-04-22 14:33:17 788 1

原创 OpenGL物体材质

OpenGL物体材质定义材质的意义如何实现物体材质物体材质的设置光的属性定义材质的意义在现实世界里,每个物体会对光产生不同的反应,每个物体对镜面高光也有不同的反应。有些物体反射光的时候不会有太多的散射,因而产生一个较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的高光点。如果我们想要在OpenGL中模拟多种类型的物体,我们必须为每个物体分别定义一个材质属性。如何实现物体材质当描述一个物体的时候,我们可以用这三个分量来定义一个材质颜色(Material Color):环境光照(Ambie

2022-04-21 15:48:54 560

原创 点集的读入与输出操作

在MFC框架里实现从文件中读取点集1. 点集读入操作实现代码:2.点集输出操作实现代码:1. 点集读入操作实现代码:读入点集数据(ID, (x,y,z))void Readpoint(){ CString filter = "(*.txt)|*txt|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL); if (dlg.DoModal

2022-04-20 09:39:06 258

原创 Geomagic网格重划分与模型光顺

Geomagic网格重划分与模型光顺1 网格重划分2 模型光顺首先先导入模型,可以看到模型还是相对较为粗糙,面片的法矢方向差别很大,因此需要重新划分下网格。1 网格重划分网格重划分的步骤为:重划网格➡设置目标边长➡点击应用查看(可以更改)➡点击确定。注意:不要点叉叉✖,会出现灰键现象,都点不了,只能重新来一遍。2 模型光顺由于初始点云或者构造模型的原因,可能存在一些粗糙的锐边现象,为了更好的表现出模型的光滑程度,对其进行光顺点击快速光顺,如图所示:快速光顺完成后的效果如图所示局部区

2022-04-19 20:15:17 1931

原创 Magics软件中实现蒙皮偏置

导入模型

2022-04-19 19:42:32 415

原创 OpenGL冯氏光照

OpenGL光照1. 环境光照 (Ambient lighting)2. 漫反射光照 (Diffuse lighting)3. 镜面反射光照 (Specular lighting)冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。通过光照材质的设置渲染出来的物体还是十分逼真的,如下面的这个咖啡机。1. 环境光照 (Ambient lighting)环境光 简单理解为来自环境的光,由许多光线经过多次漫反射最终打在某一点上,实际上环境光

2022-04-18 21:36:04 553

原创 OpenGL光照之颜色

OpenGL光照之颜色颜色什么是颜色如何表示物体颜色光照场景的搭建颜色什么是颜色颜色是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应,我们肉眼所见到的光线,是由频率范围很窄的电磁波产生的,不同频率的电磁波表现为不同的颜色,对色彩的辨认是肉眼受到电磁波辐射能刺激后所引起的一种视觉神经的感觉。其实在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。如何表示物体颜色首先要知道,在实际模型中物体吸收了其中的大部分颜色,它仅反射了代表物体颜色的部

2022-04-17 14:43:51 770

原创 二维数组快速排序sort

二维数组快速排序sort1. 使用比较函数cmp2. 使用lambda表达式1. 使用比较函数cmp#include<iostream>#include<vector>#include <algorithm>using namespace std;bool cmp(vector<int>&a, vector<int>&b){ return a[0] > b[0];}void main(){ vecto

2022-04-15 11:13:24 2163

原创 OpenGL鼠标视角交互

OpenGL鼠标视角交互1. 欧拉角2. 鼠标输入1. 欧拉角欧拉角(Euler Angle)是可以表示3D空间中任何旋转的3个值,一共有3种欧拉角:俯仰角(Pitch)、偏航角(Yaw)和滚转角(Roll),下面的图片展示了它们的含义:俯仰角是描述我们如何往上或往下看的角偏航角表示我们往左和往右看的程度滚转角代表我们如何翻滚摄像机把三个角结合起来我们就能够计算3D空间中任何的旋转向量本摄像机系统仅关注俯仰角和偏航角对于俯仰角,观察Y轴朝上的方向:俯仰角的Y值 等于sinθdir

2022-04-14 21:30:57 2036 1

原创 Abaqus应力结点数据导出与处理

Abaqus应力数据导出Abaqus中导出每个应力结点数据输出数据处理Abaqus中导出每个应力结点数据从工具➡查询➡查询值中打开,如下图所示:接下来点击查询值出现该对话框在查询值对话框内依次点击选择一个显示组➡位置:选择单元结点➡显示组 选择All 等待遍历节点完成(因模型网格多少而定)➡勾选 Attached nodes的值,这边全选,如下图所示点击写入文件,注意保存路径和文件命名,文件以.rpt格式输出输出数据处理将后缀修改为.txt,然后使用文本编辑器打开...

2022-04-13 21:47:01 17647 1

原创 OpenGL摄像机键盘交互

摄像机交互对于摄像机基础实现内容较为生疏的可以参考该文章👉摄像机lookAt矩阵实现考虑键盘交互实现opengl摄像机绕着目标物体自由移动,首先需要设置一个摄像机系统,定义lookAt函数变量glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);glm::vec3 cameraFront = glm::vec3(0.0f, 0.0f, -1.0f);glm::vec3 cameraUp = glm::vec3(0.0f, 1.0f, 0.

2022-04-13 17:12:18 1031

原创 OpenGL摄像机(Look At矩阵)

OpenGL摄像机1. 摄像机/观察空间2. Look At3. lookAt 矩阵案例1. 摄像机/观察空间观察矩阵将所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。当定义一个摄像机时需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为原点的坐标系。如下图所示:图1中的Position为摄像机位置glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);正z

2022-04-13 13:32:12 3819

原创 OpenGL立方体纹理贴图

依据之前学习的坐标变换,构造一个立方体首先需要构造三维顶点(x,y,z)以及相应的纹理坐标(u,v)每个面由2个三角形构成所以一共有6个三维顶点和纹理坐标我们依次对每个面进行处理 float vertices1[] = { -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 0.5f, -0.5f, 0.5f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.

2022-04-12 14:27:20 4060 15

原创 OpenGL坐标变换

OpenGL坐标变换1. 坐标系统间的变换1.1 局部空间1.2 世界空间1.3 观察空间裁剪空间1.4 屏幕空间1.5 变换矩阵的组合2. 实现3. 渲染部分代码1. 坐标系统间的变换在渲染管线中,物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个过渡坐标系(Intermediate Coordinate System)的优点在于,在这些特定的坐标系统中,一些操作或运算更加方便和容易。比较重要的有5个不同的坐标系统:局部空间(L

2022-04-11 16:24:36 2138

原创 多个着色器与多个VAO,VBO绘制三角形

VAO VBO 多个着色器练习

2022-04-07 20:23:02 1417 2

原创 OpenGL绘制三角形

可编程渲染管线在现代OpenGL中,我们必须定义至少一个顶点着色器和一个片段着色器(因为GPU中没有默认的顶点/片段着色器)。出于这个原因,刚开始学习现代OpenGL的时候可能会非常困难,因为在你能够渲染自己的第一个三角形之前已经需要了解一大堆知识了。#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>//当用户改变窗口的大小的时候,视口也应该被调整。//我们可以对窗口注册一个回调

2022-04-06 21:46:20 3902

原创 OpenGL窗口实现

OpenGL窗口实现1 渲染循环包括的代码:2 完整代码及解释3 实现的结果1 渲染循环包括的代码:// 渲染循环while(!glfwWindowShouldClose(window)){ // 输入 processInput(window); // 渲染指令 ... // 检查并调用事件,交换缓冲 glfwPollEvents(); glfwSwapBuffers(window);}2 完整代码及解释#include <g

2022-04-06 15:50:03 246

原创 OpenGL状态机

OpenGL状态机1. 什么是状态机?2. OpenGL状态机1. 什么是状态机?先来解释什么是“状态” State 。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如自动门的状态就是两个 open 和 closed 。“状态机”,也就是 State Machine ,不是指一台实际机器,而是指一个数学模型。说白了,一般就是指一张状态转换图。例如,根据自动门的运行规则,我们可以抽象出

2022-04-06 11:13:55 1473 1

原创 最全计算机图形学面试资料整理

计算机图形学面试资料整理1 什么是渲染管线2 有那几个坐标系(空间)?如何在空间之间进行转换?3 三个重要的空间变换矩阵4 视口变换是什么?5 顶点缓冲对象(Vertex Buffer Objects,VBO)6 顶点数组对象(Vertex Arrary Object,VAO)7 渲染管线的流程8 三种着色器有什么用?各完成了什么过程?9 什么是光栅化?10 OpenGL中有哪几种缓冲?都有什么用?11 为什么要用齐次坐标系12 片段和像素的区别?13 深度缓存算法(zbuffer算法)14 光照计算处理共

2022-04-05 21:33:22 5207

原创 Java入门基础知识

JAVA基础知识记录1 基础内容相关知识链接写在最前面:之前自学Java用的是Eclipse1 基础内容常量final相当于c++中的const数组int[ ]number=new int [100];Int[ ]score={1,2,3,4,5};数组大小 score.length二维数组 int[][]=new int [3][5];JAVA 中Math类封装了很多数学相关的属性和方法Math.sqrt() : 计算平方根Math.cbrt() : 计算立方根Math.pow

2022-04-05 15:39:38 403

原创 原始三维格子点内部实现小范围格子重建

在原始N*M的数组A中(该数组可以理解为规则格子,各维度的增量均为常数)内部构建一个比其小的数组B,要求数组B与A格子点重合,如图所示:

2022-04-01 16:15:11 196

原创 CPU和GPU及CUDA入门基础概念

CUDA入门基础概念1 CPU与GPU的关系1.1 CPU与GPU各自特点2 一些零碎的CUDA入门知识2.1 函数修饰符2.2 线程、线程快、线程格2.3 什么是核函数2.4 常用的GPU内存函数2.5 GPU内存分类1 CPU与GPU的关系1.1 CPU与GPU各自特点CPU(中央处理器) 需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。GPU(图形处理器) 面对的则是类型高度统一的、相互无依赖的大规模数据和不

2022-03-29 21:44:32 2147

opengl+imgui实现3d模型渲染

opengl+imgui实现3d模型渲染,基本功能包过模型载入,模型平移,旋转,缩放,模型交互,纹理贴图,光照等基本操作,有需要欢迎和我联系谢谢

2024-06-29

voronoi 2d 维诺图源代码

voronoi 2d 维诺图源代码下载,可编译,运行值得学习

2024-02-22

LINUX egl X11 opengl代码 可以直接运行

LINUX egl X11 opengl代码 可以直接运行,包括makefile文件,可以参考编译

2023-08-14

番茄助手可用于vs2022及以下版本

番茄助手可用于vs2022及以下版本,运行安装时选择win7兼容

2023-06-26

学习动态库的编译,以及如何加载动态库生成可执行文件

动态库.dll加载案例,学习动态库的编译,以及如何加载动态库生成可执行文件

2022-11-07

Tetgen库的显示配套文件 tetview

方便Tetgen库的显示配套文件 tetview

2022-06-15

Typora markdown编辑器

Typora markdown编辑器功能强大,界面简洁,使用简单,看起来十分大气,体验良好,可以支持不同类型编辑器的转换,支持Window系统,并且Typora 支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。内部文档有关安装方法,资源齐全

2022-04-26

games101pdf课件

games101课件,计算机图形学相关基础内容,包括mvp,管线,光栅化,光线追踪,模拟,动画等内容。

2022-04-05

三点弯曲有限元模拟.zip

模型已经做好可以查看云图结果和动画

2021-12-29

Voronoi2.rar

C++MFC编译的二维voronoi图

2021-08-17

齿轮有限元分析.zip

齿轮啮合时的动态分析

2021-05-19

abaqus_material.zip

abaqus材料资源,方便添加常用材料,快速选择参考材料方便后续处理,里面包含金属,非金属,塑料,陶瓷等

2020-08-10

emmit 插件pyv8.zip

window10下的sublime text3 html emmet插件所需要的PyV8亲测有效,内附教程!本人也折腾很久,最后整理出来,其他系统的有需要也可以联系我谢谢!

2020-05-22

空空如也

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

TA关注的人

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