摘要:對(duì)于大多數(shù)的模型文檔都可以透過(guò)服務(wù)提取轉(zhuǎn)換在里渲染構(gòu)件外觀時(shí)所需的材質(zhì)及貼圖。所以我們可以透過(guò)它遍歷所有材質(zhì),找出我們想隱藏貼圖的那些材質(zhì),將它的顏色設(shè)置為灰色,同時(shí)也可以透過(guò)它將隱藏貼圖的材質(zhì)回復(fù)。
這篇文章來(lái)自 Autodesk ADN 的梁曉冬,以下以我簡(jiǎn)稱。
對(duì)于大多數(shù)的模型文檔都可以透過(guò) Autodesk Forge Model Derivative 服務(wù)提取、轉(zhuǎn)換在 Viewer 里渲染(Render)構(gòu)件外觀時(shí)所需的材質(zhì)(Material)及貼圖(Texture)。在 Viewer 里渲染這些材質(zhì)是會(huì)耗損計(jì)算機(jī)內(nèi)存(Memory)的,但有時(shí)候我們觀注的是構(gòu)件的幾何信息,貼圖(Texture)反倒是可以被忽略的,但這要怎么做到呢?
在 Viewer API 里有一個(gè)函數(shù)matman()可以獲取 Viewer 的材質(zhì)管理員,透過(guò)它可以取得所有 Viewer 自帶和自訂的材質(zhì)。所以我們可以透過(guò)它遍歷所有材質(zhì),找出我們想隱藏貼圖的那些材質(zhì),將它的顏色設(shè)置為灰色,同時(shí)也可以透過(guò)它將隱藏貼圖的材質(zhì)回復(fù)。
注:這個(gè)例子沒(méi)辦法在沒(méi)貼圖的材質(zhì)上有作用;這范例在瀏覽器 Console 測(cè)試過(guò),且使用默認(rèn)的 Viewer 實(shí)例 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); }
在隱藏貼圖前的樣子:
在移除貼圖后的樣子:
上述的例子我沒(méi)有在 Shader Material 上測(cè)試,或許有更有的辦法可行,我建議各位朋友們可以參考我同事發(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88904.html
摘要:現(xiàn)在讓我們修改這個(gè)示例讓他可以展示兩個(gè)同項(xiàng)目但不同版號(hào)的模型及。示例執(zhí)行結(jié)果如下這邊是這個(gè)比較模型的括展代碼英文原文 showImg(https://segmentfault.com/img/bVOmjp?w=1542&h=925); 熟悉 BIM360 Team 的朋友可能知道他有一個(gè)很牛的模型文檔版本比較的功能,但如果模型是放在 Google 云盤或是百度云盤上有可能做到嗎? Au...
摘要:可能有許多原因你想在里加入自訂義的線型,例如顯示線框幾何視覺(jué)化包圍箱或者其他你想帶給使用者的視覺(jué)回饋。下面是我傳寫的一個(gè)例子,他可以在選重構(gòu)件后在場(chǎng)景里用自定義線型描繪它的包圍箱,在線示例可以參考這里 showImg(https://segmentfault.com/img/bVVaUx?w=1794&h=930); 這篇文章的原著是 Autodesk AND 的 Philippe L...
摘要:前陣子有些圈的朋友們都在詢問(wèn)同一個(gè)問(wèn)題要怎么在的自帶右鍵菜單上添加自定義項(xiàng)目或是只顯示自訂義項(xiàng)目以下將針對(duì)在自帶右鍵菜單上添加自定義項(xiàng)目和只顯示自訂義項(xiàng)目的右鍵菜單進(jìn)行說(shuō)明。 前陣子有些 Autodesk Forge 圈的朋友們都在詢問(wèn)同一個(gè)問(wèn)題『要怎么在 Viewer 的自帶右鍵菜單上添加自定義項(xiàng)目或是只顯示自訂義項(xiàng)目』~ 以下將針對(duì)『在自帶右鍵菜單上添加自定義項(xiàng)目』和『只顯示自訂義...
摘要:默認(rèn)情況下,是英文環(huán)境,調(diào)取的是的資源其實(shí)無(wú)需翻譯。但是,如前面提到的,語(yǔ)言包只是包含了部分常規(guī)字串的翻譯,如果遇到?jīng)]有包含的常規(guī)字串怎么辦呢例如,本例中的語(yǔ)言包并沒(méi)有對(duì),進(jìn)行翻譯,所以即使切換了語(yǔ)言,它們?nèi)耘f是英文。 注:本文是個(gè)人調(diào)試分析所得,非官方文檔,請(qǐng)酌情選用參考。文中分析的數(shù)據(jù)由https://extract.autodesk.io轉(zhuǎn)換下載而來(lái)。 談到信息本地化,個(gè)人覺(jué)得包...
摘要:需要知道的攝像頭是不是已經(jīng)不再移動(dòng)或轉(zhuǎn)動(dòng)了的朋友有福了,自此版號(hào)開(kāi)始開(kāi)始引入一個(gè)叫的事件,當(dāng)攝像頭的完成后就會(huì)被觸發(fā),它的使用方法如下注冊(cè)事件調(diào)用攝像頭聚焦的目前已知適用的情境回到默認(rèn)視角相關(guān)的變動(dòng)使攝像頭聚焦在構(gòu)件上怖滿檢視整個(gè)模型透過(guò)回 需要知道 Forge Viewer 的攝像頭是不是已經(jīng)不再移動(dòng)或轉(zhuǎn)動(dòng)了的朋友有福了,自此版號(hào) 3.2開(kāi)始 Viewer 開(kāi)始引入一個(gè)叫 Autod...
閱讀 3607·2021-10-09 09:41
閱讀 2799·2021-10-08 10:18
閱讀 2252·2021-09-10 10:51
閱讀 2737·2021-09-10 10:50
閱讀 853·2021-09-09 09:33
閱讀 3467·2021-09-06 15:14
閱讀 3091·2019-08-30 11:06
閱讀 3313·2019-08-29 14:04