You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

贝塞尔图形填充问题:交点测试中的根计算异常

贝塞尔曲线根计算导致Unity着色器填充异常问题

我将一款ShaderToy着色器适配为Unity着色器后,整体功能正常,但存在特定异常表现,已定位到问题与贝塞尔曲线的根计算相关。

以下是异常与正常效果的对比:

  • 异常的贝塞尔图形:
    异常的贝塞尔图形
  • 动画前期帧中显示正常的贝塞尔图形:
    正常的贝塞尔图形(前期帧)

具体情况:

  • 仅可视化图形轮廓时无异常,使用奇偶交点测试进行图形填充时会出现异常。
  • 贝塞尔图形处于动画状态:定义曲线的Vector2控制点随时间线性插值变化,多数帧表现正常,但特定帧(或位置)会触发异常。
  • 填充规则本质是统计贝塞尔曲线与当前uv.y坐标处水平线的交点,将该水平线作为贝塞尔函数的X轴,函数的根即为交点。我怀疑复数根是问题诱因,但根计算函数(从第74行开始)明确会丢弃复数根——该函数来自贝塞尔曲线权威资料,其中介绍了通过Cardano算法实现只保留实根的逻辑。

已尝试处理线段首尾重合导致的“近似遗漏”和重复计数问题,但并未解决异常。

请问有贝塞尔函数使用经验的开发者是否见过此类异常?希望能得到相关见解。

感谢!

内容的提问来源于stack exchange,提问作者mikemeyers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:45:04