Unity3D,包围盒子的边缘,立方体?

Unity3D,包围盒子的边缘,立方体?,unity3d,shader,bump-mapping,Unity3d,Shader,Bump Mapping,将立方体(如示例中的矩形对象)上的边圆化的常用方法是什么 理想的结果与这些图像非常相似 (当然,您可以使用具有仔细圆角的网格,但这需要许多Tri才能实现。) 注意,当然对于非着色器方法 添加两个小的扁平框,只需使新的法线位于两侧之间的一半,即45度: 那会画得非常圆 下面的GDG提供了一篇文章,其中有人断言,如果不使用着色器方法,这确实是最好的方法 我真的很想知道如何使用着色器来实现这一点 注意-关于非着色器方法的非常详细的教程 我当然会遵从面向着色器的答案,但特别是如果给定平台上没有

将立方体(如示例中的矩形对象)上的边圆化的常用方法是什么

理想的结果与这些图像非常相似

(当然,您可以使用具有仔细圆角的网格,但这需要许多Tri才能实现。)


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

添加两个小的扁平框,只需使新的法线位于两侧之间的一半,即45度:

那会画得非常圆

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

我真的很想知道如何使用着色器来实现这一点


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


我当然会遵从面向着色器的答案,但特别是如果给定平台上没有必要的着色器,我会使用一些“细节级别”模型(又称LoD)来实现这一点

  • 给这个对象的游戏对象一个6边的盒子,一个稍微弯曲的盒子和一个近距离非常弯曲的盒子。(是我的go to simple建模工具)
  • 给游戏对象一个行为脚本,检查每一帧与摄像机的距离

  • 根据距离激活相应的网格,并停用其他网格,这应在玩家无法以最高分辨率检测到变化的距离处进行


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

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

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

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

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


我们能够为我们的游戏WorldToBuild完成斜切立方体。关键是,您可以继续创建倒角模型,然后只需成组移动顶点

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

  • 创建一个有斜面的立方体(我用搅拌器)
  • 根据顶点的中心位置,找出每个方向上要移动的顶点
  • 计算出斜边,并设置准确的尺寸
我在这里写了一篇关于它的文章。如果您只想了解流程,请滚动至文章底部:


对于着色器来说,这并不是真正可行的(嗯,可能是,但似乎没有必要)。任何3D建模软件包都会有一些类似于斜面修改器的东西。是的,我有。每天。你要求的是“通常”。据我所知,这是通过简单地创建网格来完成的。我不知道你是否有特别的理由不想那样做?不用担心。很高兴它有帮助,不是你要求的100%,而是一个很好的选择。@Catwood,这是一个非常详细而且非常棒的教程。完全是史诗!嗨,Peter,LOD完全内置于所有现代3D引擎中,并且是全自动的。这真的与手头的问题无关。嗯。。。有点——Unity3d特别允许使用专业版的LOD功能设置多个LOD网格:我想看看是否可以为您保存一些tris,或者没有Unity Pro的人。我很好奇是否有一个基于着色器的解决方案。是的,这项技术(至少是实时方法)只有2年的历史,所以要为移动平台制定一个适用的解决方案是相当困难的,如果不是不可能的话。虽然我认为可以找到某种简化的技术。首先,您可以开始试验G-buffer的着色器。实际上,我相信只要在曲面法线G缓冲区中平均法线,你就可以得到与上面非常相似的图片。当然,如果你想使用法线贴图,那么为了排除假边,你需要另一个没有法线贴图的G缓冲区。老实说,这不是一门火箭科学。你只需要一段时间来试验。不久前,我看到一篇关于使用额外的几何特征来制作圆角(以及许多其他技巧)的excellet文章。不幸的是,我忘了在哪里见过它。但核心思想和你的一样。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。Hi@BhargavRao。答案确实包括了答案的关键部分。