这个问题涉及使用着色器(可能在 Unity3D 环境中,但 Metal 或 OpenGL 都可以),以在网格最小立方体上实现圆角边缘。
-
我希望只使用 12 个三角形的简约网格立方体,
-
然后通过着色器,
-
使每个块的边缘(/角)稍微倾斜。
其实这样可以吗带着色器?
我最近完成了这样的着色器的创建。它可以工作的唯一方法是提供 4 个法向量,而不是为每个顶点提供一个法向量(平滑向量、锐向量以及给定顶点的三角形的每条边各一个)。您还需要一个 float3 来检测边缘。
为了在网格中添加此类数据,我制作了一个自定义网格编辑器,它附带了 Unity Asset Store 中的 Playtime Painter Asset。将在下次更新时发布着色器。还将发布到公共 GitHub。
您可以看到一些暗线,这是因为它开始插值到背对光源的法线向量,但由于没有额外的三角形,因此结果在面向相机的三角形上可见。
Update (2/12/2018)
Realised that by clipping pixels that end up having a normal facing away from the camera, it is possible to smooth the outline shape. It wasn't tested for all possible scenarios but works great for simple shapes:
As per request added a comparison cube:
现在,游戏时间画家 https://assetstore.unity.com/packages/tools/painting/playtime-painter-91528有该着色器的简化版本,它在 2 个法线向量之间进行插值,并在某些边缘上给出良好的结果。
写了一篇article https://www.quizcanners.com/single-post/2018/02/08/Mobile---friendly-Bevel-Shader-Unity.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)