在Unity3D中组合多个网格并保留材质

时间:2015-11-28 06:35:35

标签: c# unity3d

我有三个网格A,B和C.每个网格都有自己的材质,由单个subMesh组成。现在,我想创建一个新的网格,其中包含例如每个(A,B和C)网格的10个实例,它将包含3个子网格,即每种类型的所有元素的一个子网格。

我使用" Mesh.CombineMeshes(...)"为此目的,它将所有网格组合成一个subMesh或为每个元素创建subMesh(在我的例子中为30个subMeshes)。这两个结果对我来说都是不可接受的。

1 个答案:

答案 0 :(得分:3)

您可以先将所有类型A的网格物体组合成网格1,将所有类型B的网格物体组合成网格物体2,将所有类型为C的网格物体组合成网格物体3,并使用from docxtpl import DocxTemplate, RichText import re tpl=DocxTemplate('test_tpl.docx') startsentence = 'Here is a sentence with \textbf{bold words} in the middle of it.' latexbold = re.compile(r'\textbf\{([a-zA-Z0-9 .]+)\}') # Strip the latex command. strippedsentence = re.sub(latexbold, '\\1', startsentence) rtaddsentence = re.sub(latexbold, 'rt.add(" \\1 ", bold=True)', startsentence) docxsentence = re.sub(latexbold, '<w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">\\1</w:t></w:r>', startsentence) richstrippedsentence = RichText(strippedsentence) richrtaddsentence = RichText(rtaddsentence) richdocxsentence = RichText(docxsentence) context = { 'strippedresult': richstrippedsentence, 'rtresult': richrtaddsentence, 'docxresult': richdocxsentence, } tpl.render(context) tpl.save('test.docx')

然后,您只需将网格1,2和3组合成单个网格,使用mergeSubMeshes = true,生成一个包含3个子网格的网格,每个子网格由单个网格构建,如您所愿。 / p>

MeshFilter.sharedMesh可用于按类型对网格进行分组。

以下是代码:

mergeSubMeshes = false