atlas是模型uv展开(或者uv投射)到2D平面上的一个类库,投射的过程当中会根据很多参数的设置,最终产生不同的展开结果,例如:充分利用2D空间时将每一个三角面充分填充到2D平面中,或者为了充分利用模型网格之间的拓扑关系将关联的面尽量合到一起(投射过程中会产生拉伸)等。
xatlas中使用了很多的第三方库,本章不会重点讨论它们,后续会有补充:

本文从上面的"Generate"开始,因为界面使用的时imgui库,所以需要一点imgui库的知识,具体调用位置:
void atlasShowGuiOptions()
{
if (!(s_atlas.status.get() == AtlasStatus::NotGenerated || s_atlas.status.get() == AtlasStatus::Ready))
return;
if (ImGui::Button(ICON_FA_COGS " Generate", buttonSize)) // Generate按钮
atlasGenerate(); // 构建按钮
}
// 图集构建
void atlasGenerate()
{
// 如果状态是没有构建、或者是准备阶段,可以继续构建
if (!(s_atlas.status.get() == AtlasStatus::NotGenerated || s_atlas.status.get() == AtlasStatus::Ready))
return;
// 处理参数没有改变过:【有模型,还是原来的模型】,【chart选项没有改变】,【打包选项没有改变】,【现在的数据和之前的参数相同】
if (s_atlas.data && !s_atlas.options.chartChanged && !

本文介绍了xatlas库在模型UV展开过程中的应用,探讨了如何根据参数设置产生不同展开效果,如高效利用2D空间和保持拓扑关系。通过展示关键代码段,解释了构建图集的步骤,包括参数检查、清理、设置选项以及启动线程进行多线程UV展开。读者需具备一定的imgui库和UV展开基础知识。
最低0.47元/天 解锁文章
1982

被折叠的 条评论
为什么被折叠?



