我正在 Unity 中开发一个 3D 等级编辑器,墙壁会自动在放置的地板瓷砖边缘产生。
最初,我用一个过度工程化的着色器处理了墙材质的 UV 重映射。墙壁应该像纸板一样看起来,所以我使用了一个大图像贴图,其中壁板的不同部分采样不同的图像片段,并且中间部分根据walls的高度重复。事实上它的视觉效果很不错,但这之后我终于实现了Combine Meshes以使大的等级不再因跑得太快而跑得太快,这整个设置因此破産了,因为贴图现在被拉伸在合并结果上。您可以查看这个着色器的原始帖子https://www.reddit.com/r/Unity3D/comments/1qjo9sg/i_am_legit_at_my_wits_end_why_does_my_shader/。
此时,我真的想完全扔掉这种方法,而不是试图修复它,包括整个大图像贴图在内。
目前,墙体贴图实际上就是两个共享边的四边形。墙体的高度和厚度在调试器中暴露,后来我希望玩家能够控制这些值以便在游戏中玩,所有墙体都必须保持动态。
下面的截图显示了旧文本设置的设置。 红色是顶部边界,绿色是重复的中间部分(它存在于动态调整到任何想象的墙体高度而不会拉伸它的方式),蓝色是底部边界,顶部黄褐色条纹是纸板边缘。
https://preview.redd.it/1qgxdowt49tg1.png?width=656&format=png&auto=webp&s=dc6c5bab7a7b50942bc158da438c76af2b9a15f4
现在我想解决的是何谓标准和合理的解决方案。
如果我只是在 Blender 中制作 固定的LOD 模型,如同传统游戏资源,我就要么会将它与固定墙壁尺寸进行关联,要么我就会再次拉伸它,从而破坏了所有事情的意义。 我可以制作一组预设尺寸的变体,但是这听起来也不太灵活。我还考虑使用生成过程来生成网格,但我真的一点都不确定这是否是解决方案还是我要用核弹来解决一只苍蝇。
基本上,我希望这些墙壁保持动态、与合并的网格配合良好、在瓷砖上适当地进行重叠而不再拉伸,并且希望它们还能够支持 LOD 以便在接近时看起来稍微好一点但是不至于跑得太慢。
所以我想我的问题是什么:在这里,你会做什么? 生成过程性网格是否是正确的答案,还是这里有更简单的或标准的方法来处理这些动态壁障而不再用过度工程化的着色器来实现比它本该做的要多的事情?
我想从此墙体贴图和合并网格的设置直接跳到直接通过代码动态显示高宽的方式。
评论 (0)