Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 是否可以将Maya中的纹理组合到某种类型的atlas中?_Unity3d_Textures_Maya_Atlas - Fatal编程技术网

Unity3d 是否可以将Maya中的纹理组合到某种类型的atlas中?

Unity3d 是否可以将Maya中的纹理组合到某种类型的atlas中?,unity3d,textures,maya,atlas,Unity3d,Textures,Maya,Atlas,我开始使用Maya对2D角色进行骨骼动画,该角色由几个不同的部分(腿、身体、头部、武器等)组成。我有一个单独的.PNG图像文件中的每个部分。现在,每个零件都有一个多边形,具有自己的材质和纹理: 我想知道是否有一种方法可以自动将纹理组合成一个地图集,使所有多边形使用地图集的相同材质,并更正它们的UV贴图,使它们仍然指向地图集的正确部分。现在,我可以手动执行相反的操作:我可以使用其他工具在Maya外部创建图集,然后在材质上使用图集并手动更正每个多边形的UV贴图。但这是一个很长的过程,如果我需要改变

我开始使用Maya对2D角色进行骨骼动画,该角色由几个不同的部分(腿、身体、头部、武器等)组成。我有一个单独的.PNG图像文件中的每个部分。现在,每个零件都有一个多边形,具有自己的材质和纹理:

我想知道是否有一种方法可以自动将纹理组合成一个地图集,使所有多边形使用地图集的相同材质,并更正它们的UV贴图,使它们仍然指向地图集的正确部分。现在,我可以手动执行相反的操作:我可以使用其他工具在Maya外部创建图集,然后在材质上使用图集并手动更正每个多边形的UV贴图。但这是一个很长的过程,如果我需要改变纹理,我必须重新做一遍。所以我想知道是否有一种自动化的方法


我之所以这么做是为了在Unity中保存draw调用。据我所知,Unity可以批处理对象,只要它们共享相同的材质。因此,我不希望对角色中的每个多边形进行绘制调用,而是希望对整个角色进行单个绘制调用。我是玛雅的新手,所以任何帮助都将不胜感激

如果要在Maya中执行atlassing,可以通过复制网格并使用“传递贴图”工具将所有不同网格烘焙到副本上作为单个模型来执行。这些步骤将是:

1) 复制网格

2) 使用“UV布局”确保复制的网格没有重叠UV(或仅在适当的情况下有重叠UV,如镜像块)

3) 使用传递贴图…工具将原始网格投影到新网格上,使用“使用拓扑”选项确保投影干净

最终结果应该是,新模型与原始模型具有相同的几何体和外观,但将其所有纹理组合到附着到单个材质的单个板材上

此方法的限制是某些类型的网格(特别是自相交的网格)可能无法正确投影,从而使您可以手动修补贴图集纹理。与任何atlassing解决方案一样,您可能会在纹理中看到一些软化,因为atlas纹理不是逐像素复制,而是投影,因此是重采样


您可能会发现,使用脚本或assetPostprocessor统一重新处理角色更为灵活。Unity有一个本地纹理贴图功能,有文档记录。Unity附带了一个用于组合静态网格的脚本,但您需要实现自己的脚本;unity wiki上有一个例子可能会满足您的需求:(注意:我们在工作中也会做类似的事情,但我无法分享;我没有使用此链接中的例子)。FWIW Unity的原生atlassing只能在矩形中工作,因此它的内存效率不如您自己所能做到的。

这是一个非常广泛的问题,您尝试过什么吗?您能显示当前的工作方式吗?