微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 SVF 更新到 SVF2

如何解决从 SVF 更新到 SVF2

您好,最近在我们的 Forge Autodesk 查看器中,我们通过将查看器初始化选项更改为使用 SVF2,从使用 SVF 切换到使用 SVF2

{
    env: "MD20ProdUS",api: "D3S",}

正如您的团队向我们建议的那样。然而,这导致我们的自定义着色器放错了法线。我们怀疑是不同打包的问题,​​因为在我们的着色器中,我们使用一个方便的函数来解包法线值。

const float PI = 3.141592;
vec3 Decodenormal (vec2 enc)
{
    vec2 ang = enc * 2.0 - 1.0;
    vec2 scth = vec2(sin(ang.x * PI),cos(ang.x * PI));
    vec2 scphi = vec2(sqrt(1.0 - ang.y * ang.y),ang.y);
    return vec3(scth.y * scphi.x,scth.x * scphi.x,scphi.y);
}

这个函数的输入只是normal.xy

我们有一个自定义着色器,它显示颜色渐变中的法线,当使用相同的着色器应用于同一模型时,我们会得到不同的结果,具体取决于我们使用的查看器版本(SVF 或 SVF2) SVF SVF2 我希望图像是可见的,并且您能够解决我们的问题。当我们第一次实现我们的自定义着色器时,我们遇到了同样的问题,但是法线解包功能最初解决了这个问题,这就是为什么我们怀疑这是我们头疼的原因。

解决方法

我们需要与观众团队联系以了解更多详情,但与此同时:

SVF2 格式可以通过几种不同的方式对法线进行编码(使用两个 shortushort,如您所见 here),并且观看者很可能会保留即使将普通数据发送到 GPU,它也保持原样,这意味着您需要修改 WebGL 着色器以解决这些问题。我建议您更新 DecodeNormal 辅助函数以遵循链接中使用的逻辑,并查看法线是否正确输入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。