Skip to content
  • 首页
  • 留言
  • 关于

Share the joys of programming and technology

解析3d-tiles数据和提取b3dm模型文件

解析3d-tiles数据和提取b3dm模型文件

2022年4月16日 liyanliang Comments 0 Comment

1.解析json文件 2.解析b3dm模型 (1)b3dm模型文件时二进制文件,其中包含glTF文件: 当使用tiny_gltf库解析glTF时,需要减去(28byte + featuretable的byte + batchTable的byte ): (2)使用tiny_gltf库只需要3个文件stb_image.h,stb_image_write.h,json.hpp和tiny_gltf.h。 使用时需要注意,在调用#include “tiny_gltf.h”文件中的函数时,需要添加三个宏,如: 3.关于glTF格式详解 参考资料 1.解析json文件 Reference: RapidJSON的简单使用示例: RapidJSON简介及使用 2.解析3dtile-b3dm格式 Reference: (1)对相关资料做了总结和推荐: Cesium之b3dm格式_全栈空间-程序员秘密 (2)对b3dm二进制结构做了详细的解析: 3dTiles 数据规范详解[4.1] b3dm瓦片二进制数据文件结构 _ (3)官网对Batched3DModel的介绍 3d-tiles…

Read More Read More

C++实现一个简单的语言解释器

C++实现一个简单的语言解释器

2022年3月20日 liyanliang Comments 0 Comment

描述: 实现一个简单的语言解释器,支持以下指令 指令格式 描述 mov a v 把数v赋值给a,其中a是变量名称,由不超过10个小写字母组成,v是变量名或者常数 inc a 变量a加1 dec a 变量a减1 jnz a v 如果变量a的值不是0,则相对跳转v条指令。比如-2,向上跳转两个指令 输入保证最多有100个变量,100条语句;执行inc, dec和jnz之前,相应变量一定已经用mov赋值过。 代码实现 关于正则表达式,可以参考: https://www.runoob.com/regexp/regexp-metachar.html

OpenGL-法线贴图(Normal Mapping)

OpenGL-法线贴图(Normal Mapping)

2022年2月3日 liyanliang Comments 0 Comment

背景 在一个平面上如果只有一个法线,整个面的光照强度都是相同的,如果是凹凸的表面,无法表现表面的真是光照效果,所以引入了法线贴图。平面内的每一个fragment都存储一个法线向量,通过法线向量计算切线向量和副切向向量。 已知上向量是表面的法线向量。右和前向量是切线(Tagent)和副切线(Bitangent)向量。下面的图片展示了一个表面的三个向量: 计算原理 计算每个表面的切线和副切线可以参照https://learnopengl-cn.github.io/,主要计算过程如下: 顶点:       V3N3UV2  verts[] =       {           { 0.5f, -0.5f,  0.5f ,  1.0, 0.0, 0.0, 0.0f, 0.0f },           { 0.5f, -0.5f, -0.5f ,  1.0, 0.0, 0.0, 1.0f, 0….

Read More Read More

OpenGL-卡通着色(Cartoon)

OpenGL-卡通着色(Cartoon)

2022年1月30日 liyanliang Comments 0 Comment

原理 茶壶上的色调通过角度的余弦值来选择的,这个角度是指光线和面的法线之间的夹角角度。如果法线和光的夹角比较小,我们使用较亮的色调,随着夹角变大,逐步使用更暗的色调。换句话说,角度余弦值将决定色调的强度。 关于计算,主要根据diffuse的值得区间富赋予不同颜色,使之产生过渡的颜色效果。当diffuse的值大于0.95,使用最亮的颜色,当diffuse的值小于0.25,使用最暗的颜色。 非卡通效果 CartoonShading.vs CartoonShading.fs main.cpp 完整项目代码 https://github.com/mc-liyanliang/OpenGL-Shader/tree/master

OpenGL几何着色器实现贝塞尔曲线

OpenGL几何着色器实现贝塞尔曲线

2022年1月28日 liyanliang Comments 0 Comment

几何着色器 (GS) 是用 GLSL 编写的着色器程序,用于控制基元的处理。几何着色器位于顶点着色器(或Tessellation 阶段)和Vertex Post-Processing阶段之间。 本文实现的是三次方贝塞尔曲线。 P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。 曲线的参数形式为: 需要注意的是,显卡会影响曲线的绘制效果,如果使用的是集中显卡,建议切换为独立显卡。 lines_adjacency: line_strip: geometry_shader_bezier.vs geometry_shader_bezier.gs geometry_shader_bezier.fs main.cpp 效果: 完整项目代码: https://github.com/mc-liyanliang/OpenGL-Shader/tree/master

WinDbg检查内存泄漏

WinDbg检查内存泄漏

2022年1月22日 liyanliang Comments 0 Comment

1.在windbg.exe路径下执行cmd 2.输入打开GFlags,我要检查的程序名称为midas XDS.exe C:\Program Files (x86)\Windows Kits\10\Debuggers\x64>gflags.exe /I midas XDS.exe +ust 3.第一次拍照,此程序的进程pid为:17136 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh -p:17136 -f:test111.txt 4.打开并关闭要检查的对话框 5.第二次拍照 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh -p:17136 -f:test222.txt 6.比较文件 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh test111.txt -f:test222.txt -v -symopt:ox80000000>Compare000.tx …

Read More Read More

OpenGL雾化效果实现-每像素雾化

OpenGL雾化效果实现-每像素雾化

2022年1月21日 liyanliang Comments 0 Comment

雾化实现原理 雾背后的基本思想是,物体离相机越远,它应该被雾覆盖得越多,因此就越不可见。 因为我们现在拥有现代 GPU,所以我们可以检查场景的每个片段有多远并计算雾。 我们需要得到一个叫做雾因子的东西,它是一个从 0.0 到 1.0 的数字,简单地说,应该对那个片段应用多少雾。 如果为零,则没有雾,如果为 1.0,则对象完全被雾覆盖。 介于两者之间的任何东西都会使物体出现/迷失在迷雾中。 雾需要三个控制变量: 雾强度因子的计算: 关于clamp函数: clamp翻译为夹具,就叫夹具函数吧,这个函数是什么意思呢?看看解释的意思是:获取x和minVal之间较大的那个值,然后再拿较大的那个值和最后那个最大的值进行比较然后获取较小的那个,意思就明白了,clamp实际上是获得三个参数中大小处在中间的那个值。函数有个说明:如果minVal > minMax的话,函数返回的结果是未定的。也就是说x的值大小没有限制,但是minval的值必须比maxVal小。 像素颜色计算: 关于mix()函数: mix(x,y,a) a控制混合结果 return x(1-a) +y*a 返回 线性混合的值。 s…

Read More Read More

OpenGL实现billboard效果(CPU)

OpenGL实现billboard效果(CPU)

2022年1月15日 liyanliang Comments 0 Comment

实现的原理 无论怎么旋转视角,它都面向摄像机;但大小会随着远近而变化。 使物体的右方向始终与摄像机的有方向平行。布告板的顶点坐标根据相机的右方向自动计算,并且布告板始终面向摄像机。如下图所示: 关于布告板的计算 由用户确定布告板的大小和下端中点坐标: 根据摄像机的右方向计算布告板的四个顶点: 顶点着色器 billboard.vs 片段着色器 billboard.fs 完整代码实现 完整项目代码 https://github.com/mc-liyanliang/OpenGL-Shader/tree/master

算法:寻找异常数字

算法:寻找异常数字

2021年11月24日 liyanliang Comments 1 comment

题目描述: 寻找异常数字。 输入一个无序的公差为1的等差数列,其中有一个数不属于此数列,找到这个数。 举例: 输入1 3 2 3 , 输出为3 输入2 5 3 7 4,输出7 解法1:暴力解法 通过从头到尾遍历数组,找到异常的数字。 解法二:二分法 使用二分查找的方法,这里的关键是怎么确定目标数字。这里有两个关键点:1.数组的公差为1 ;2.排序后,数组是有序的。 如此,可通过判断数字与数字的下标是否相等。 代码中用到的快速排序:

OpenGL 几何着色器的应用

OpenGL 几何着色器的应用

2021年11月23日 liyanliang Comments 1 comment

关于几何着色器 从 OpenGL 3.2 开始,在顶点着色器和片段着色器之间有第三种可选类型的着色器,称为几何着色器。该着色器具有使用顶点着色器的输出作为输入动态创建新几何体的独特能力。 几何着色器在渲染管道中的位置: 应用1:几何着色器生成Bézier曲线 Bézier曲线方程: 需要4个控制点: beziercurve.geom 应用二:几何着色器生成爆破物体 当我们说爆破一个物体时,我们并不是指要将宝贵的顶点集给炸掉,我们是要将每个三角形沿着法向量的方向移动一小段时间。效果就是,整个物体看起来像是沿着每个三角形的法线向量爆炸一样。 geom.gs 应用三:法向量可视化或生成毛发 Geom.gs Reference: https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/09%20Geometry%20Shader/ https://web.engr.oregonstate.edu/~mjb/cs519/Handouts/geometry_shaders.1pp.pdf

第 1 页,共 5 页12345»

近期文章

  • 解析3d-tiles数据和提取b3dm模型文件
  • C++实现一个简单的语言解释器
  • OpenGL-法线贴图(Normal Mapping)
  • OpenGL-卡通着色(Cartoon)
  • OpenGL几何着色器实现贝塞尔曲线
  • WinDbg检查内存泄漏
  • OpenGL雾化效果实现-每像素雾化
  • OpenGL实现billboard效果(CPU)
  • 算法:寻找异常数字
  • OpenGL 几何着色器的应用
  • Midas XD-构件详图开发
  • Midas XD-选筋助手开发
  • Civil Designer开发-检测规范自动生成控制截面
  • Civil Designer开发-公路桥梁承载能力检算评定
  • Midas W-满堂支架快速建模助手开发
  • OpenGL绘制桥梁模型
  • Modern OpenGL绘制圆柱体
  • WordPress分页插件 – WP-PageNavi的使用(替换现有脚本)
  • 土木想往土木软件开发方向发展,应该如何准备
  • 设计模式-抽象工厂模式

全站热点

  • C++编写的情人节小程序 (1,033)
  • OpenGL开发环境搭建-GLFW与GLAD配置 超详细 (394)
  • 判断一个点是否在闭合区域内 (371)
  • 截面特性计算程序-附源码 (370)
  • 提取最小封闭区域 (357)
  • Modern OpenGL绘制圆柱体 (342)
  • 使用ODA数据库出现 “ODA_ASSUME”: 找不到标识符的错误 (300)
  • Midas XD [错误] 右侧挡土墙的最下端深度必须小于地基的最下端深度 (297)
  • midas XD2020的开发 (296)
  • #pragma message 编译时提示信息 (281)
  • WordPress分页插件 – WP-PageNavi的使用(替换现有脚本) (266)
  • 土木想往土木软件开发方向发展,应该如何准备 (255)
  • OpenGL绘制旋转立方体 (234)
  • 两跨连续梁影响线绘制-附源码 (224)
  • 从DLL中动态加载一个函数:LoadLibrary和GetProcAddress的使用 (194)
  • 算法:寻找异常数字 (138)
  • 如何调试Revit二次开发代码-教学视频(解决无法调试问题) (133)
  • 创建模态对话框绘制直线-ObjectARX开发视频 (132)
  • 通过Spy++抓取窗口以查询对话框id (127)
  • Midas W-满堂支架快速建模助手开发 (123)

分类

  • C# (3)
  • C++ (16)
  • GIS (1)
  • MFC (3)
  • ObjectARX (2)
  • OpenGL (11)
  • Revit开发 (1)
  • 岩土 (2)
  • 算法 (1)
  • 结构设计 (7)
  • 职场生涯 (1)
  • 计算几何 (3)

归档

  • 2022年4月 (1)
  • 2022年3月 (1)
  • 2022年2月 (1)
  • 2022年1月 (5)
  • 2021年11月 (7)
  • 2021年6月 (3)
  • 2021年5月 (2)
  • 2021年3月 (2)
  • 2021年2月 (8)
  • 2021年1月 (18)

标签

b3dm Bezier Curves BillBoard C++ CDN CivilDesigner DLL EasyX fog glTF json MFC Midas W Midas XD NormalMapping ObjectARX ODA OpenGL OpenXML Open XML revit WinDbg 基坑设计 影响线 截面特性 桥梁 桥梁检测 桥梁设计 算法 计算几何 设计模式

书签

  • 李燕良的CSDN
  • 崔济东的博客
  • C++爱好者博客
  • 陈学伟的博客
  • 贾苏的博客
  • 陈睦锋的博客
  • 孙勇的博客

统计

  • 1
  • 83
  • 12
  • 149
  • 38
  • 36,862
  • 11,883

实时访问地域

© 2022   liyanliang.net Copyright. All Rights Reserved.