xatlas源码解析(一)

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

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 && !
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值