我們正在使客戶端在頁面加載時檢索對象狀態(這會導致模型中的「待定」對象變成不同的顏色)。然後,我們會調查更新以更新着色(首先:掛載對象在查看器加載時變爲着色,然後我們繼續輪詢以再次檢查和更改狀態,以使Forge以不同的顏色呈現這些顏色並存儲其舊顏色/材質。當輪詢接收的改變一個對象不再是彩色的,它告訴僞造再次使用舊的顏色/材質在Forge中更換材質
問題: 我們發現了什麼問題,但我們無法將不知道如何解決這個問題,問題是Forge中的材料更換後不再起作用,它只能在大約3秒左右的時間內工作(材料用於顯示顏色)
但是,設置o即使在第一〜3秒之後,它仍然可以工作(顯示覆蓋層而不是顯示顏色的材質)。 這不是我們想要實現的。這看起來沒有優化,因爲疊加層將通過一切來顯示。
然而,這些材料似乎是「鎖定」的,因爲在第一〜3秒之後它們不能再被改變。看起來他們沒有刷新或者什麼東西
在這些例子中,我們發現他們使用viewer.impl.invalidate(true)來刷新Forge查看器,但是這在〜3秒後沒有做任何事情。
我們還嘗試了viewer.impl.invalidate(true,true,true)的每種組合,並將material.needsUpdate設置爲true,並嘗試重新渲染整個場景。
我們也發現這個:https://github.com/mrdoob/three.js/issues/790,但我們無法在Forge中找到這樣做的好方法,我們嘗試了viewer.requestSilentRender(),但它也沒有做任何事情。
無論如何,我們已經嘗試了所有我們可以想出的,並可以在網上找到材料的工作,但沒有什麼區別。 我們正在尋找能夠看到Forge作品如何看到材料代碼做錯了什麼的經驗豐富的人。
至於內容,這裏是所有你需要明白髮生了什麼代碼: DROPBOX LINK
這裏是「的index.html」文件的一小部分,設置顏色:
try
{
viewer.restoreAllColorOverlays(); //for materials instead of overlays: viewer.restoreAllColorMaterials();
$.each(colors, function(color, selectionIds)
{
viewer.setColorOverlay(selectionIds, color); //for materials instead of overlays: viewer.setColorMaterial(selectionIds, color);
});
}
catch(error)
{
console.error(error);
}
.Hi,非常感謝您的回覆。我們已經採取了您的回覆第2部分中所述的步驟。可悲的是,它並沒有導致這些材料的工作,但它使覆蓋層現在看起來好多了。我們非常有興趣通過[email protected]與我們分享我們的項目 – artobii