问题:z方向也就是从上向下看的时候,纹理是正常的。而x、y的方向上纹理出现了拉伸。
一、需要通过Triplanar Projection来解决,先来实现z轴方向的效果。
Shader中下边红框为Mask的部分对应红绿蓝三色图,绿框部分Texture对应带有拉伸Texture图,两部分的结果就是最左侧的图。
Mask部分,先使用VertexNormal取绝对值然后Power得到红绿蓝三色间隔黑色部分,然后使用divide去掉黑色部分,得到下图左侧的结果,然后Split得到B方向也就是z轴方向的结果。
Texture部分,采用世界坐标,multiply转为米单位,mask只取z轴方向。
二、三个方向都加上效果
在场景上添加两个球体,左侧是使用Triplanar Projection,右侧是没有使用的。右侧的在水平方向是上有拉伸现象,顶部还有聚集缩小的现象。
右侧的Material为下面的内容。
三、Unity的版本
Swizze节点与Unreal的中的Mask节点的作用是相同的。
Unity中提供了Triplanar节点实现了以上所有功能,very cool。