每次更新时线框扩展卸载线
Wireframes extension unload lines on every update
我正在使用这个线框扩展 https://autodeskviewer.com/viewers/latest/extensions/Wireframes/Wireframes.js
我稍微修改了它的颜色。
如果我稍微移动相机,所有线条都会消失,并且由于我们的应用不断从传感器获取输入,所以线条总是不显示。
我找不到使这些线条消失的原因。我怎样才能使它们始终可见?
在您可以重现的这个示例中也会发生这种情况:
经过我的研究,另一种避免这个问题的方法。除了使用 impl.scene
和 impl.sceneAfter
,您还可以将这些线框几何图形添加到查看器叠加层中。以下是解决方法的片段:
//!-- 1. Add this two line in the `load` function.
if( this.viewer.impl.overlayScenes[this.overlayName] === undefined )
this.viewer.impl.createOverlayScene( this.overlayName );
//!-- 2. Modified `addWireframes` with overlay functions
function addWireframes(viewer, overlayName, groups) {
var groupsCount = groups.length;
for (var i = 0; i < groupsCount; ++i) {
viewer.impl.addOverlay( overlayName, groups[i] );
}
viewer.impl.invalidate(false, true, true);
}
//!-- 3. Modified `revertWireframes` with overlay functions
function revertWireframes(viewer, overlayName, groups) {
var groupsCount = groups.length;
for (var i = 0; i < groupsCount; ++i) {
viewer.impl.removeOverlay( overlayName, groups[i] );
}
viewer.impl.invalidate(false, true, true);
}
//!-- 4 Update `impl.invalidate` function calls
viewer.impl.invalidate(false, true, true);
//!-- 5. Update function calls of both `addWireframes` and `revertWireframes`, for example:
addWireframes(this.viewer, this.overlayName, this.groups);
revertWireframes(this.viewer, this.overlayName, this.groups);
P.S。由于这只是一种解决方法,而不是正式的解决方案。您必须自行承担使用它的风险。
=== 旧答案
这可能是由渐进式渲染引起的,您可以通过viewer.setProgressiveRendering( false )
将其关闭。但在 Forge Viewer 中查看大型模型时会影响性能。
渐进式渲染是查看器渲染大型模型的方式。不幸的是,现在无法预防和修复。
这是我这边的样子:
我正在使用这个线框扩展 https://autodeskviewer.com/viewers/latest/extensions/Wireframes/Wireframes.js 我稍微修改了它的颜色。
如果我稍微移动相机,所有线条都会消失,并且由于我们的应用不断从传感器获取输入,所以线条总是不显示。
我找不到使这些线条消失的原因。我怎样才能使它们始终可见?
在您可以重现的这个示例中也会发生这种情况:
经过我的研究,另一种避免这个问题的方法。除了使用 impl.scene
和 impl.sceneAfter
,您还可以将这些线框几何图形添加到查看器叠加层中。以下是解决方法的片段:
//!-- 1. Add this two line in the `load` function.
if( this.viewer.impl.overlayScenes[this.overlayName] === undefined )
this.viewer.impl.createOverlayScene( this.overlayName );
//!-- 2. Modified `addWireframes` with overlay functions
function addWireframes(viewer, overlayName, groups) {
var groupsCount = groups.length;
for (var i = 0; i < groupsCount; ++i) {
viewer.impl.addOverlay( overlayName, groups[i] );
}
viewer.impl.invalidate(false, true, true);
}
//!-- 3. Modified `revertWireframes` with overlay functions
function revertWireframes(viewer, overlayName, groups) {
var groupsCount = groups.length;
for (var i = 0; i < groupsCount; ++i) {
viewer.impl.removeOverlay( overlayName, groups[i] );
}
viewer.impl.invalidate(false, true, true);
}
//!-- 4 Update `impl.invalidate` function calls
viewer.impl.invalidate(false, true, true);
//!-- 5. Update function calls of both `addWireframes` and `revertWireframes`, for example:
addWireframes(this.viewer, this.overlayName, this.groups);
revertWireframes(this.viewer, this.overlayName, this.groups);
P.S。由于这只是一种解决方法,而不是正式的解决方案。您必须自行承担使用它的风险。
=== 旧答案
这可能是由渐进式渲染引起的,您可以通过viewer.setProgressiveRendering( false )
将其关闭。但在 Forge Viewer 中查看大型模型时会影响性能。
渐进式渲染是查看器渲染大型模型的方式。不幸的是,现在无法预防和修复。
这是我这边的样子: