摘要:對于大多數(shù)的模型文檔都可以透過服務(wù)提取轉(zhuǎn)換在里渲染構(gòu)件外觀時所需的材質(zhì)及貼圖。所以我們可以透過它遍歷所有材質(zhì),找出我們想隱藏貼圖的那些材質(zhì),將它的顏色設(shè)置為灰色,同時也可以透過它將隱藏貼圖的材質(zhì)回復(fù)。
這篇文章來自 Autodesk ADN 的梁曉冬,以下以我簡稱。
對于大多數(shù)的模型文檔都可以透過 Autodesk Forge Model Derivative 服務(wù)提取、轉(zhuǎn)換在 Viewer 里渲染(Render)構(gòu)件外觀時所需的材質(zhì)(Material)及貼圖(Texture)。在 Viewer 里渲染這些材質(zhì)是會耗損計算機內(nèi)存(Memory)的,但有時候我們觀注的是構(gòu)件的幾何信息,貼圖(Texture)反倒是可以被忽略的,但這要怎么做到呢?
在 Viewer API 里有一個函數(shù)matman()可以獲取 Viewer 的材質(zhì)管理員,透過它可以取得所有 Viewer 自帶和自訂的材質(zhì)。所以我們可以透過它遍歷所有材質(zhì),找出我們想隱藏貼圖的那些材質(zhì),將它的顏色設(shè)置為灰色,同時也可以透過它將隱藏貼圖的材質(zhì)回復(fù)。
注:這個例子沒辦法在沒貼圖的材質(zhì)上有作用;這范例在瀏覽器 Console 測試過,且使用默認的 Viewer 實例 NOP_VIEWER。
//store textures data var oldTextures = new Array(); //store color data var oldColors = new Array(); //remove texture function hideTexture() { //get materials list var mats = NOP_VIEWER.impl.matman()._materials; //define a grey color var grey = new THREE.Color(0.5, 0.5, 0.5); //iterate materials for (index in mats) { //index is the material name (unique string in the list) m = mats[index]; //store texture info oldTextures[index] = m.map; oldColors[index] = m.color; //set the material without texture and the grey color m.map = null; m.color = grey; //mark the material dirty. The viewer will refresh m.needsUpdate = true; } //refresh the scene NOP_VIEWER.impl.invalidate(true, true, false); } //show texture function showTexture() { //get materials list var mats = NOP_VIEWER.impl.matman()._materials; //iterate materials for (index in mats) { //index is the material name (unique string in the list) m = mats[index]; //restore m.map = oldTextures[index]; m.color = oldColors[index];; m.needsUpdate = true; } //refresh the scene NOP_VIEWER.impl.invalidate(true, true, false); }
在隱藏貼圖前的樣子:
在移除貼圖后的樣子:
上述的例子我沒有在 Shader Material 上測試,或許有更有的辦法可行,我建議各位朋友們可以參考我同事發(fā)布的其他博客:
Using Shaders to Generate Dynamic Textures in the Viewer API
Ace Editor for Three.js ShaderMaterials in the Forge Viewer
Forge Viewer Custom Shaders - Part 1
Forge Viewer Custom Shaders - Part 2
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88904.html
摘要:現(xiàn)在讓我們修改這個示例讓他可以展示兩個同項目但不同版號的模型及。示例執(zhí)行結(jié)果如下這邊是這個比較模型的括展代碼英文原文 showImg(https://segmentfault.com/img/bVOmjp?w=1542&h=925); 熟悉 BIM360 Team 的朋友可能知道他有一個很牛的模型文檔版本比較的功能,但如果模型是放在 Google 云盤或是百度云盤上有可能做到嗎? Au...
摘要:可能有許多原因你想在里加入自訂義的線型,例如顯示線框幾何視覺化包圍箱或者其他你想帶給使用者的視覺回饋。下面是我傳寫的一個例子,他可以在選重構(gòu)件后在場景里用自定義線型描繪它的包圍箱,在線示例可以參考這里 showImg(https://segmentfault.com/img/bVVaUx?w=1794&h=930); 這篇文章的原著是 Autodesk AND 的 Philippe L...
摘要:前陣子有些圈的朋友們都在詢問同一個問題要怎么在的自帶右鍵菜單上添加自定義項目或是只顯示自訂義項目以下將針對在自帶右鍵菜單上添加自定義項目和只顯示自訂義項目的右鍵菜單進行說明。 前陣子有些 Autodesk Forge 圈的朋友們都在詢問同一個問題『要怎么在 Viewer 的自帶右鍵菜單上添加自定義項目或是只顯示自訂義項目』~ 以下將針對『在自帶右鍵菜單上添加自定義項目』和『只顯示自訂義...
摘要:默認情況下,是英文環(huán)境,調(diào)取的是的資源其實無需翻譯。但是,如前面提到的,語言包只是包含了部分常規(guī)字串的翻譯,如果遇到?jīng)]有包含的常規(guī)字串怎么辦呢例如,本例中的語言包并沒有對,進行翻譯,所以即使切換了語言,它們?nèi)耘f是英文。 注:本文是個人調(diào)試分析所得,非官方文檔,請酌情選用參考。文中分析的數(shù)據(jù)由https://extract.autodesk.io轉(zhuǎn)換下載而來。 談到信息本地化,個人覺得包...
摘要:需要知道的攝像頭是不是已經(jīng)不再移動或轉(zhuǎn)動了的朋友有福了,自此版號開始開始引入一個叫的事件,當(dāng)攝像頭的完成后就會被觸發(fā),它的使用方法如下注冊事件調(diào)用攝像頭聚焦的目前已知適用的情境回到默認視角相關(guān)的變動使攝像頭聚焦在構(gòu)件上怖滿檢視整個模型透過回 需要知道 Forge Viewer 的攝像頭是不是已經(jīng)不再移動或轉(zhuǎn)動了的朋友有福了,自此版號 3.2開始 Viewer 開始引入一個叫 Autod...
閱讀 3546·2021-10-09 09:41
閱讀 2751·2021-10-08 10:18
閱讀 2188·2021-09-10 10:51
閱讀 2686·2021-09-10 10:50
閱讀 779·2021-09-09 09:33
閱讀 3386·2021-09-06 15:14
閱讀 3021·2019-08-30 11:06
閱讀 3251·2019-08-29 14:04