通常的方法是在立方体上对边缘进行圆角处理,如示例中的矩形对象?
理想的结果看起来非常像这些图像。
(当然,你可以使用一个具有仔细圆角边缘和角落的网格,但实现它需要很多tris。)
注意,当然是 NON -shader方法......
添加两个小扁平盒子,然后简单地在两侧之间进行新的正常运动,即45度:
那将完美呈现......
下面的GDG提供了一篇文章,如果没有使用着色器方法,有人断言这确实是最好的方法。
我真的想知道如何使用着色器执行此操作。
注意 - 关于非着色器方法的非常详细的教程
答案 0 :(得分:3)
使用延迟着色,您可以访问G-buffer来定位和舍入边缘,就像在this paper中一样。虽然它是一种后处理技术,但它能够在某些像素的范围内模拟圆度。
简单平均法线(1像素宽度):
简单平均法线(2像素宽度):
简单平均法线(3像素宽度):
答案 1 :(得分:1)
我当然会遵循着色器导向的答案,但特别是如果在给定平台上无法获得必要的着色器,我可以通过几个等级来实现这一点。细节"模特又名LoD。
为GameObject提供一个行为脚本,用于检查每个帧与相机的距离。
根据距离激活相应的网格,并停用其他网格,这应该在玩家可用的最高分辨率无法检测到的情况下进行。
< / LI>这种技术在3D游戏中被广泛使用,这是一种很好的方式来表示一旦相机近距离接近可以变得更加细致的远距离群体。
答案 2 :(得分:0)
我们能够为我们的游戏WorldToBuild完成斜角立方体,我在这里写了一篇关于它的文章:
https://www.linkedin.com/pulse/coding-resizable-beveled-cubes-unity-richard-christley
如果只想了解该过程,请滚动到文章底部。关键在于您可以继续制作斜角模型,然后将顶点成组移动。
总之,我要做的就是 达到的效果是: 创建一个斜切的立方体(我使用了搅拌机)。 通过它们找到要在每个方向上移动的顶点 中心位置。 计算出斜切的边缘,然后设置确切的大小。