【Unity3D】Shader圆形弧度裁剪

片元着色器:

cs 复制代码
float3 _Center = float3(0, 0, 0);
float3 modelPos = i.modelPos;

// float angle = atan2(modelPos.y - _Center.y, modelPos.x - _Center.x); // 计算角度,范围-π到π
float angle = atan2(modelPos.y - _Center.y, modelPos.z - _Center.z); // 计算角度,范围-π到π
angle = (angle + PI) / (2 * PI); // 将角度归一化到0到1之间(如果需要)
if (angle > _AnimProcess)
    discard;

其中modelPos是模型坐标点,利用atan函数,计算出中心点与像素点的弧度,转[0,1]范围,再进行判定是否需要裁剪。

注意事项:若模型是基于YX轴平面的则需要改用

float angle = atan2(modelPos.y - _Center.y, modelPos.x - _Center.x); // 计算角度,范围-π到π

ZX轴则是 float angle = atan2(modelPos.z - _Center.z, modelPos.x - _Center.x); 其他类似同理。

如果发现不对说明modelPos不正常,或者模型坐标系的中心点并没有在(0,0,0)居中,需要调整模型坐标系对齐模型中心。

相关推荐
90后小陈老师1 天前
Unity教学 项目2 2D闯关游戏
游戏·unity·游戏引擎
噗噗夹的TA之旅1 天前
Unity Shader 学习20:URP LitForwardPass PBR 解析
学习·unity·游戏引擎·图形渲染·技术美术
nnsix1 天前
Unity ReferenceFinder插件 多选资源查找bug解决
unity·游戏引擎·bug
gzroy1 天前
Unity Shader Graph实现全息瞄准器
unity·游戏引擎
90后小陈老师1 天前
Unity教学 基础介绍
unity·游戏引擎
90后小陈老师1 天前
Unity教学 项目3 3D坦克大战
3d·unity·游戏引擎
秦奈1 天前
Unity复习学习随笔(五):Unity基础
学习·unity·游戏引擎
nnsix1 天前
Unity ReferenceFinder插件 窗口中选择资源时 同步选择Assets下的资源
java·unity·游戏引擎
麷飞花1 天前
unity3d scene窗口选中物体, 在 hierarchy高光显示
unity·editor·unity3d·u3d·hierarchy
ۓ明哲ڪ2 天前
Unity功能——关闭脚本自动编译(Unity2021.3)
unity·游戏引擎