c# - 自动将不同的网格组合成一个,同时保留纹理
问题描述
我目前正在开发一个类似于 Minecraft 的世界生成的 Unity 项目。目标是在世界上生成不同的块,每个块都有自己的材质,然后将它们组合成一个大网格。我的问题是,这会删除他们所有的材料(因为新网格只能有一种材料)。我听说过一种使用所谓的纹理图集的方法,但找不到任何具体的东西,所以我的问题是
- 如何在保留不同材料的同时将多个网格组合成一个大网格(最好只有一个网格,而不是不同材料组的多个网格)?
- 如果这不起作用,我如何自动生成一个纹理图集,可以为不同的三角形显示不同的纹理?
我尝试的一件事是为世界上的每个立方体生成一个网格,然后将它们组合成更大的网格,但这会丢失所有看起来像这样的材料数据: 右侧的单个网格,左侧的大网格
提前致谢!
解决方案
如果您谈论纹理图集是因为您想节省绘制调用(或以一般方式获得更好的性能),那么您将不得不编写大量代码来创建此类图集并更新合并网格的 UV,所以他们在地图集中引用了正确的纹理。这样做还可以防止平铺纹理(即:超出 UV 的 [0;1] 范围),或者至少它会使其更加复杂并带来一些严重的限制。
如果您负担得起,这就是它的工具,除其他外:https ://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017 (我从未尝试过,我推出了自己的解决方案)
推荐阅读
- android - 错误:不使用默认接口方法时,仅支持从 Nougat (--min-api 24) 开始
- javascript - 从收到的 http 请求中获取要执行的文件的路径
- r - 在数据框R中聚类1列
- robotframework - 如何在机器人框架中使用“获取库实例”和全局变量
- appium - 如何清除appium中的LogEntries?
- python - Pandas DataFrames .equals() 方法和 == 运算符在调用 .head() 和 .loc[] 时使用 NaNs 值改变行为
- swagger - ASP.NET 样板:将用户输入 DTO 属性值限制为特定的值集
- c++ - 为什么 Visual Studio 2017 坚持认为我没有在其他地方打开的文件已在编辑器之外进行了修改?
- javascript - 如何使用 RxJs 实现分页解决方案?
- html - 如何垂直设置div中心