这个问题与使用着色器有关(可能在Unity3D环境中,但是Metal或OpenGL很好),
在网格最小的立方体上实现圆角。
我希望只使用12个三角形的极简主义网格立方体,
然后通过着色器
实现每个块的边缘(/角)略微倾斜。
事实上,这可以通过着色器 >来完成吗?
谢谢,着色大师!
答案 0 :(得分:3)
一般情况下,Relief Mapping可以像this图片一样修改对象轮廓。您需要准备一个在边界处降低的高度图。但是我认为使用这样的着色器可能对这种简单的效果来说太过分了,所以在你的几何体中制作它可能会更好。
答案 1 :(得分:1)
我最近完成了这样的着色器。它可以工作的唯一方法是为每个顶点提供4个法向量而不是一个(平滑,清晰,给定顶点的三角形每个边缘一个)。您还需要一个float3来检测边缘。
要在网格中添加此类数据,我制作了自定义网格编辑器,附带来自Unity Asset Store的Playtime Painter资产。将使用下一次更新发布着色器。也将发布到公共GitHub。
你可以看到一些暗线,因为它开始插入到远离光源的法线向量,但由于没有额外的三角形,结果在面对的三角形上可见相机。
更新(2/12/2018) 实现了通过剪切最终具有远离相机的法线背面的像素,可以平滑轮廓形状。它没有针对所有可能的场景进行测试,但对于简单的形状非常有用:
目前,Playtime Painter有一个简化版本的着色器,它在2个法线向量之间进行插值,并在某些边上给出了正确的结果。
写了article。