6

将立方体上的边缘变圆的常用方法是什么,例如示例中的矩形对象?

在此处输入图像描述 在此处输入图像描述

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

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


请注意,当然对于NON着色器方法...

在此处输入图像描述

添加两个小的扁平盒子,然后在两侧之间简单地将新的法线设为中间,即 45 度:

在此处输入图像描述

那将被完美地绘制成圆形......

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

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


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

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

4

3 回答 3

3

使用延迟着色,您可以访问 G-buffer 来定位和圆化边缘,就像在本文中所做的那样。虽然它是一种后处理技术,但它能够在某些像素的限制内模拟圆度。

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

于 2014-08-04T07:33:44.150 回答
1

我当然会遵循面向着色器的答案,但特别是如果在给定平台上没有必要的着色器,我会使用一些“细节级别”模型(即 LoD)来完成此任务。

  • 为这个物体的 GameObject 提供一个 6 边形盒子、一个略微弯曲的盒子和一个近距离的非常弯曲的盒子。(http://www.wings3d.com/是我的首选简单建模工具)
  • 给游戏对象一个行为脚本,检查每一帧与相机的距离。

  • 根据距离激活适当的网格,并停用其他网格,这应该在玩家可用的最高分辨率下无法检测到变化的距离处完成。

这种技术在 3d 游戏中得到了广泛的应用,这是一种很好的方式来表示远处的物体群,一旦相机靠近,这些物体就会变得更加详细。

于 2014-08-01T22:58:47.417 回答
0

我们能够为我们的游戏 WorldToBuild 完成斜角立方体。关键是您可以继续制作斜面模型,然后将顶点分组移动。

所以简而言之,为了达到这个效果,我所要做的就是:

  • 创建一个斜角立方体(我使用了 Blender)。
  • 通过从中心的位置找出您要在每个方向上移动的顶点。
  • 计算出斜边,并设置确切的尺寸。

我在这里写了一篇关于它的文章。如果您只想了解流程,请滚动至文章底部:

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

于 2019-03-24T03:21:57.050 回答