【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)居中,需要调整模型坐标系对齐模型中心。

相关推荐
警醒与鞭策2 小时前
Cursor Agent Skill 原理及LLM , Agent, MCP ,Skill区别
android·unity·ai·cursor
tealcwu19 小时前
【Unity资源】Unity MCP 介绍
unity·游戏引擎
Thomas_YXQ1 天前
Unity3D中提升AssetBundle加载速度的详细指南
java·spring boot·spring·unity·性能优化·游戏引擎·游戏开发
Miss_SQ1 天前
Unity接入AI—Deepseek,数据流式传输
unity·ai
chillxiaohan1 天前
unity 批量修改场景内字体工具
unity
ellis19702 天前
Unity中ScriptableObject用法整理
unity
千里马-horse2 天前
Multithreading with Vulkan
shader·rendering·vulkan·vertex·multithreaded
玉梅小洋2 天前
Unity Muse 完整使用文档:Sprite+Texture专项
unity·ai·游戏引擎
weixin_409383122 天前
cocos shader消失
shader·cocos