【问题标题】:Find angle face under mouse pointer in Unity 3d在Unity 3d中找到鼠标指针下的角面
【发布时间】:2016-11-18 01:00:33
【问题描述】:

我有一个投影仪组件,我需要找到投影纹理所在的角度以排除垂直面上的投影。

我的投影仪在鼠标指针下方,当它在水平面上时可以正常工作:

我希望投影仪在垂直面上关闭以避免这种不良影响:

如果可能的话,我想在着色器代码中这样做以避免垂直投影图像,即使光标位于水平面的角上并且部分“出去”在垂直面上。

我在 C# 中找到了这个解决方案:

if (Physics.Raycast(MouseRay,out hitInfo)){

    if(hitInfo.normal.y>0) {
        // draw
    } else {
        // not draw
    }
}

但它只适用于曲面,而不适用于例如面立方体。

我怎样才能正确地做到这一点?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    通常他们会使用 TGA 透明度在四边形上使用图像,它会自行旋转到对象中间对齐的面,使用射线找到顶点并使其绝对法线。

    其他方法会很棘手,也许使用贴花...如果您使用着色器进行此操作,则需要花费很多时间...这是解决问题的情况,没有按重要性排序快速发展。从技术上讲,您可以在您正在使用的任何对象上投影体积纹理......这样您就可以添加从空间中的一点投影到对象的禁止圆,作为一个数学公式,这需要一段时间,请查看体积纹理,我已经写了一些,在你的情况下,它需要将鼠标位置发送到纹理和数学以将透明区域和红色区域添加到纹理。需要一整天。

    当您将指针更改为不同的面时,可以有一个可以翻转的平面圆圈,它看起来就像一张实体卡,并且更容易编码,10 分钟而不是数小时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多