![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机图形学
tianyapai
困局
展开
-
xatlas源码解析(六)
上一章说到,facegroup有了,facegroup组成了chartgroup,那么如何使用chartgroup计算相应的chart呢,答案在runChartGroupComputeChartsTask中,如下:// 使用ChartGroup计算Chartsstatic void runChartGroupComputeChartsTask(void *groupUserData, void *taskUserData){ auto args = (ChartGroupComputeChart原创 2022-04-02 19:03:30 · 1521 阅读 · 0 评论 -
xatlas源码解析(五)
前一章讲到,为了组织计算facegroup的任务数据,调用了computeCharts函数,这个函数中将每一个mesh放到一个任务当中,并使用多线程分割mesh,并将分割后的mesh形成一个一个的facegroup,下面看看是如何分割的:// 运行计算ComputeCharts的任务函数,计算每一个mesh分成多少个Charts的任务static void runMeshComputeChartsTask(void *groupUserData, void *taskUserData){ //原创 2022-04-02 16:52:40 · 476 阅读 · 0 评论 -
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 · 894 阅读 · 0 评论 -
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 · 750 阅读 · 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 · 1541 阅读 · 0 评论 -
xatlas源码解析(一)
atlas是模型uv展开(或者uv投射)到2D平面上的一个类库,投射的过程当中会根据很多参数的设置,最终产生不同的展开结果,例如:充分利用2D空间时将每一个三角面充分填充到2D平面中,或者为了充分利用模型网格之间的拓扑关系将关联的面尽量合到一起(投射过程中会产生拉伸)等。xatlas中使用了很多的第三方库,本章不会重点讨论它们,后续会有补充:本文从上面的"Generate"开始,因为界面使用的时imgui库,所以需要一点imgui库的知识,具体调用位置:void atlasShowGu原创 2022-04-01 13:02:41 · 1864 阅读 · 0 评论 -
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 · 832 阅读 · 0 评论 -
图形学中4x4矩阵的理解
计算机图形学中矩阵往往是4x4的: 如何理解4x4矩阵呢,不妨拆开这个矩阵:可以看见,只有左上角的3x3的矩阵参与了线性变换,如果,想要将平移放到这个矩阵当中,并且添加的一列不参与线性变换,则需要添加新的一列,也就是增加一个维度。...原创 2022-03-28 10:03:43 · 3003 阅读 · 0 评论 -
依据向量空间(线性空间)解释矩阵变换
矩阵初始的研究对象是解线性方程组: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 · 631 阅读 · 0 评论 -
向量叉乘总结
向量叉乘的记忆比较模糊,现在推荐三种向量叉乘的记忆方法(如下图所示):1、向量的行列式展开法2、轮换法(右手定则的循环不变性)3、矩阵向量的乘法原创 2022-01-28 13:19:10 · 2801 阅读 · 0 评论