- 博客(131)
- 资源 (1)
- 收藏
- 关注
原创 四元数的使用
平面向量向高维空间推广,实数对应一维数轴a, 对实数扩充产生复数a+b*i二维平面,对复数扩充产生四元数a+b*i+c*j+d*k三维空间,并定义相应的运算法则。形如a+b*i+c*j+d*k的数称为四元数(quaternion),其中a、b、c、d是实部,i、j、k称为虚部,并且有下列计算公式。加、减法 : (1+2i+3j+4k) + (4+5i+6j+7k) = 5+5i+9j+10k。乘法:(1+2i+3j+4k) * (4+5i+6j+7k) =复数的运算法则i * i = -1;
2023-03-29 10:58:05 420 1
原创 xatlas源码解析(六)
上一章说到,facegroup有了,facegroup组成了chartgroup,那么如何使用chartgroup计算相应的chart呢,答案在runChartGroupComputeChartsTask中,如下:// 使用ChartGroup计算Chartsstatic void runChartGroupComputeChartsTask(void *groupUserData, void *taskUserData){ auto args = (ChartGroupComputeChart
2022-04-02 19:03:30 1490
原创 xatlas源码解析(五)
前一章讲到,为了组织计算facegroup的任务数据,调用了computeCharts函数,这个函数中将每一个mesh放到一个任务当中,并使用多线程分割mesh,并将分割后的mesh形成一个一个的facegroup,下面看看是如何分割的:// 运行计算ComputeCharts的任务函数,计算每一个mesh分成多少个Charts的任务static void runMeshComputeChartsTask(void *groupUserData, void *taskUserData){ //
2022-04-02 16:52:40 446
原创 xatlas源码解析(四)
xatlas将导入的模型重新存储完成,格式化成s_atlas内部的mesh后,就开始将mesh分割成一个一个的chart。// 构建图集线程static void atlasGenerateThread() {// 第一次运行 或者 useUvMesh改变了 或者 chart改变了 if (firstRun || s_atlas.useUvMeshChanged || s_atlas.options.chartChanged) {#if USE_LIBIGL if (s_at...
2022-04-02 14:50:20 861
原创 xatlas源码解析(三)
这一章讲解当模型不参考本身的uv的情况:继续上一章AddMesh过程的讲解,AddMesh中将模型的数据组织为atlas内部的数据,并且是原始数据的拷贝,而不是引用,并将mesh交给了子线程处理。// atlas中添加mesh【顶点、法线、uv】AddMeshError AddMesh(Atlas *atlas, const MeshDecl &meshDecl, uint32_t meshCountHint){ ...... // 获取一个任务组句柄 if (ctx->ad
2022-04-02 11:58:22 708 1
原创 xatlas源码解析(二)
在进行xatlas分析之前,先说说xatlas将模型加载到内存后的数据组织方式,代码如下:typedef struct { uint32_t flags; // flags代表网格索引数是否超过65535 // uint32_t if OBJZ_FLAG_INDEX32 flag is set, otherwise uint16_t. // See: objz_setIndexFormat void *indices; // 所有的面索引buffer uint32_t numIn
2022-04-01 19:54:43 1419
原创 xatlas源码解析(一)
atlas是模型uv展开(或者uv投射)到2D平面上的一个类库,投射的过程当中会根据很多参数的设置,最终产生不同的展开结果,例如:充分利用2D空间时将每一个三角面充分填充到2D平面中,或者为了充分利用模型网格之间的拓扑关系将关联的面尽量合到一起(投射过程中会产生拉伸)等。xatlas中使用了很多的第三方库,本章不会重点讨论它们,后续会有补充:本文从上面的"Generate"开始,因为界面使用的时imgui库,所以需要一点imgui库的知识,具体调用位置:void atlasShowGu
2022-04-01 13:02:41 1691
原创 Using UVAtlas (Direct3D 9) 翻译
Article 06/09/2021 7 minutes to read 7 contributorsNoteUVAtlas was originally shipped in the now-deprecated D3DX9 utilty library. The latest version is available atUV Atlas Command-Line Tool (uvatlas.exe).笔记UVAtlas最初是在现已弃用的D3DX9 utilty库中发布的。最新版..
2022-03-31 19:26:30 781
原创 图形学中4x4矩阵的理解
计算机图形学中矩阵往往是4x4的: 如何理解4x4矩阵呢,不妨拆开这个矩阵:可以看见,只有左上角的3x3的矩阵参与了线性变换,如果,想要将平移放到这个矩阵当中,并且添加的一列不参与线性变换,则需要添加新的一列,也就是增加一个维度。...
2022-03-28 10:03:43 2825
原创 依据向量空间(线性空间)解释矩阵变换
矩阵初始的研究对象是解线性方程组:a1x+b1y+c1z=d1,a2x+b2y+c2z=d2,a3x+b3y+c3z=d3用矩阵表示是 AX=B,这里所有的数据都是在R数域,(复数域定义的乘法规则不同)用列向量组的形势表示是[xα1 + yα2 + zα3] = [d1, d2, d3]的转置。按照列向量xα1 + yα2 + zα3的形式表现出来的就是线性组合,{ai,i∈(1,2,3)}就是每一个向量,如果ai之间线性无关就可以表示一个三维空间的一组基底,而x,y,z就是将每一个..
2022-03-12 09:22:20 602
原创 UE4 云渲染环境搭建
基于ue4的云渲染目的在与将ue4实时渲染图像帧通过视频流的方式一帧一帧的传到浏览器端,主要是因为基于web的三维渲染效果不佳,通过ue4的强大渲染能力与各种功能的支持能力使得网页端也可以实时看到好的效果。这个过程服务之间使用的是反向代理的机制,过程大概分为三个应用:前端------(控制命令与视频流)node信令服务--------ue4视频流服务。知识准备工作:1、前端:web端需要通过html+js的方式显示视频与后端交互,需要熟悉前端的一些知识;2、信令服务:基于nodejs开发
2022-03-08 17:08:21 5863
原创 C++开源项目的一些基础知识
github上的开源项目都有一些固定的编写方式、代码构建方式,因为大部分代码都会涉及到跨平台,针对跨平台的工作便是将代码构建为本地项目。概念普及:针对不同平台、不同编译工具有很多种make工具,例如GNU Make、QT qmake、vs MS nmake、BSD Make(pmake)、Makepp等,这些工具都是某些公司自己按照需要制定的工具,他们有不同的规范和标准,所执行的makefile格式也是千差万别,如果某些项目想要跨平台,必须保证在不同的平台正确编译,针对不同的平台编写不同的makef
2022-03-07 11:45:12 8058
转载 Blender 之修改器代码分析
转载:Blender 之修改器代码分析 - KAlO2 - 博客园Blender 之修改器代码分析 Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改、生成、形变、模拟)列出所有的修改器。也可以空格键输入modifier,出现"Add Modifier"后点击即可。我参与翻译了官方的修改器文档,也跟着制作双螺旋结构的DNA教程走了一遍,算是对修改器有个大致的了解。制作很简单,用上细分表面(Sub...
2022-03-03 13:36:34 1569 1
转载 UE4 Pak 相关知识总结
转载:UE4 Pak 相关知识总结 | 每天进补一点点!近来研究了下UE4中Pak文件的工作流程,并对UE4中的文件系统了解了下。这个过程中,我发现现有的资料讲的比较乱,且有的版本很老。遂在此按照自己理解来简单阐述下UE4中和Pak文件相关的各种知识,如果有什么错误或者不明白的地方请在下方留言或者发送Email:[email protected]。需要知道的核心概念这里根据自己的理解把使用Pak时需要的核心概念提炼出来了。印证了《Gmae Engine Architechture》中的..
2022-03-03 11:40:39 2538
转载 Qt程序运行时窗口大小与设计模式的不一致
原文链接:https://blog.csdn.net/weixin_51242840/article/details/120857393这个问题可能是由分辨率不同的显示器的缩放不同导致的。Qt5解决方法在main函数添加:if(QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QApplication a(argc, arg
2022-02-24 18:13:32 995 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人