Unity3D,圆形边框,立方体?

问题描述 投票:6回答:3

圆角边缘的常用方法是什么,如示例中的矩形对象?

理想的结果看起来非常像这些图像。

(当然,您可以使用具有仔细圆角边缘和角落的网格,但要实现这一点需要很多tris。)


注意,当然是非着色器方法......

添加两个小扁平盒子,然后在两侧之间简单地制作新的正常位置,即45度:

那将是完美的圆形......

下面的GDG提供了一篇文章,如果没有使用着色器方法,有人断言这确实是最好的方法。

我真的很想知道如何用着色器做到这一点。


注意 - 关于非着色器方法的非常详细的教程

http://catlikecoding.com/unity/tutorials/rounded-cube/

unity3d shader bump-mapping
3个回答
3
投票

使用延迟着色,您可以访问G-buffer来定位和舍入边缘,就像在this paper中完成一样。虽然它是一种后处理技术,但它能够在某些像素的范围内模拟圆度。

简单平均法线(1像素宽度):

简单平均法线(2像素宽度):

简单平均法线(3像素宽度):


1
投票

我肯定会推荐一个以着色器为导向的答案,但特别是如果在给定的平台上没有必要的着色器,我会用一些“细节级别”模型(即LoD)来实现这一点。

  • 为这个对象提供GameObject,以获得一个6面盒子,一个略微弯曲的盒子和一个近距离弯曲的盒子。 (http://www.wings3d.com/是我的简单建模工具)
  • 为GameObject提供一个行为脚本,用于检查每个帧与相机的距离。
  • 根据距离激活相应的网格,并停用其他网格,这应该在玩家可用的最高分辨率无法检测到更改的距离处完成。

这种技术在3D游戏中被广泛使用,这是一种很好的方式来表示一旦相机近距离接近可以变得更加细致的远距离群体。


0
投票

我们能够为我们的游戏WorldToBuild完成斜面立方体,我在这里写了一篇关于它的文章:

https://www.linkedin.com/pulse/coding-resizable-beveled-cubes-unity-richard-christley

如果您只想了解该过程,请滚动到文章的底部。关键是你可以继续制作斜面模型,然后只需将组顶点移动。

简而言之,我所要做的就是:创建一个斜面立方体(我使用了搅拌机)。通过它们从中心的位置找出您将在每个方向上移动的顶点。计算斜边,并设置确切的大小。

© www.soinside.com 2019 - 2024. All rights reserved.