【问题标题】:Viewer quality settings (for one viewer on the page)查看器质量设置(针对页面上的一位查看器)
【发布时间】:2020-04-26 10:25:07
【问题描述】:

我在同一页面上有两个查看者。我想使用以下代码仅为一个查看器设置性能设置:

this.viewer.setQualityLevel(false, false);
this.viewer.setGroundShadow(false);
this.viewer.setGroundReflection(false);
this.viewer.setProgressiveRendering(true);

由于某种原因,两个查看器都应用了 BUT (!) 设置。有什么方法可以只为页面上的一个查看者应用它们吗?

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    编辑

    还可以尝试使用Profile API 来保留设置 - 您可以通过以下方式获取当前配置文件:

    viewer.profile
    

    不幸的是,我无法重现该问题...查看您的代码是否将两个查看器分配给同一个句柄?你可以发布你的代码来初始化观众吗?顺便说一句,什么版本的查看器?

    【讨论】:

    • 我正在使用developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js。
    • 很难发布带有查看器初始化的代码,我使用我自己的 Angular 包装器,它是两个独立的组件,所以它绝对不是查看器的一个实例。实际上,我认为 Petr 关于本地存储的错误是正确的,在为第二个查看器应用设置后尝试刷新页面,两个查看器将具有相同的设置。我可以在运行时使用 NOP_VIEWER 变量重现它(似乎它处理页面上的最后一个查看器):(1)NOP_VIEWER.setGroundShadow(false)(2)页面上的最后一个查看器没有阴影(3)刷新页面(4)两者观众没有影子
    • 很抱歉我没有想到它是在页面重新加载时发生的,是的,Petr 的解决方法很棒 - 我们会让工程人员知道解决这个问题 - 你也可以使用 localStorage/cookie 来保存你自己的每个查看器的设置并在重新加载时以编程方式恢复它们。
    【解决方案2】:

    查看器设置保存在localStorage 中,因此使用viewer.setQualityLevel 等方法更改它们可能会将更新传播到其他查看器实例。让我与开发团队讨论这种行为,因为(我认为)它可能被视为错误。

    同时,如果您需要更改查看器的单个实例的设置,请考虑使用不使用本地存储的“较低级别”方法。例如,可以使用viewer.impl.togglePostProcess(useSAO, useFXAA) 代替viewer.setQualityLevel(useSAO, useFXAA),而可以使用viewer.impl.toggleGroundShadow(bool) 代替viewer.setGroundShadow(bool)

    【讨论】:

    • Petr,感谢您的解决方法!如果 Bryan 确认这是一个错误,我将使用这些方法等待修复
    猜你喜欢
    • 2018-08-22
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多