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

相关推荐
Edision_li2 小时前
基于Mediapipe_Unity_Plugin实现手势识别
unity·游戏引擎·unity 手势识别
与火星的孩子对话3 小时前
Unity Shader编程完全入门指南:从零到实战 C# 实战案例
unity·c#·游戏引擎
谷宇.3 小时前
【Unity3D实例-功能-镜头】第三人称视觉
游戏·unity·unity3d·游戏开发·游戏编程·steam
深海潜水员19 小时前
【Unity】背包系统 + 物品管理窗口 (上)
开发语言·vscode·游戏·unity·c#·游戏引擎
伽蓝_游戏19 小时前
Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(6)
游戏·ui·unity·架构·c#·游戏引擎·.net
X_StarX1 天前
【Unity笔记04】数据持久化
笔记·unity·游戏引擎·数据存储·数据持久化·大学生
EngZegNgi2 天前
Unity —— Android 应用构建与发布
android·unity·自动化·游戏引擎·构建
向宇it2 天前
【unity实战】简易的车辆控制系统
游戏·unity·c#·游戏引擎
cheniie3 天前
Unity相机控制
unity·相机控制