THREEjs BufferGeometry網格擴散

閱讀時間約 2 分鐘

網格擴散可以做什麼?

網格擴散可以想剪紙一樣,把紙上想要的部分剪下來。

許多3D的算法,如裁切、干涉深度偵測等都會用到。

網格擴散的本質是什麼?

本質是通過模型的一個點,找到周圍相鄰的點;其他點又能找到周圍相鄰的點,就像水波一樣擴散出去。

通常會框定一個封閉邊界來找出邊界內所有點;或者只擴散一點點來加大選定的範圍。

如何做到網格擴散?

  • 轉換positionAttribute結構,bufferGeometry的positionAttribute資訊無法直接得知任意一點周圍的點,我們需要事先手動轉換:
const buildPointMap = (geometry) => {
const index = geometry.getIndex();
const posAttr = geometry.getAttribute("position");

const tempPoint = new THREE.Vector3();
const points = {};
for (let i = 0; i < index.count; i++) { //按順序遍歷所有的三角形的所有點
const triIndex = Math.floor(i / 3); //獲得該點所在的三角形的索引
const posIndex = index.getX(i);//獲得該點的索引

const point = tempPoint.fromBufferAttribute(posAttr, posIndex);//獲得點坐標
const key = vec2PosKey(point);//把點坐標轉成字串,後續作為key來對應資訊

//每個坐標的key,對應用到這個坐標的點索引和三角形索引
if (points[key]) {
points[key].triIndices.push(triIndex);
points[key].posIndices.push(posIndex);
continue;
}

points[key] = { triIndices: [triIndex], posIndices: [posIndex] };
}

return points;
};
  • 視需求擬定擴散邊界
  • 擬定種子點

demo鏈接:

BufferGeometry網格擴散 - StackBlitz

參考資料:

javascript - ThreeJS: Find neighbor faces in PlaneBufferGeometry - Stack Overflow

avatar-img
4會員
9內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
s_SoNg的沙龍 的其他內容
在THREE r125版本開始,THREE.Geometry就被棄用。 自己的職位是IT前端,由於套件安全性的原因,需要對THREE套件進行升級,但自己所在公司的程式內還有大量的Geometry。 因為前輩們開發了一些複雜強大的算法,如果用Threejs官方建議的正規方法,自己必須要看懂並且改寫算法
在THREE r125版本開始,THREE.Geometry就被棄用。 自己的職位是IT前端,由於套件安全性的原因,需要對THREE套件進行升級,但自己所在公司的程式內還有大量的Geometry。 因為前輩們開發了一些複雜強大的算法,如果用Threejs官方建議的正規方法,自己必須要看懂並且改寫算法
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
視覺層級並不侷限於平面設計,在用戶體驗及介面上更是一個重要的核心之一。視覺層級除了讓畫面的視覺編排更加精緻好看,更重要的功能是能讓畫面有效地被組織,讓觀者更容易理解。
Thumbnail
盤勢觀點跟昨天差不多,不刻意更新,盤整的就是多空拉鋸,但目前空方的條件稍微偏多一些。基本上弱一點就是持續藍色盤整區間,強一點就是稍微擴大盤整區間,只要在兩個區間內都還是維持盤整。下周藍色狹幅盤整有機會就會分出勝負,那時候操作方向會比較明朗。
Thumbnail
▪︎咒語描述: 繪製一個由許多大小一樣的圓點組成的布料,這些圓點排列成網格狀,背景為深色。圓點的顏色有綠色。
在3ds Max中,「Edit Mesh」是一種編輯模式,用於編輯三維模型的網格結構。進入Edit Mesh模式後,你可以對模型的頂點、邊和面進行各種編輯操作,比如移動、旋轉、縮放、切割等,從而修改模型的形狀和結構。 在Edit Mesh模式下,你可以選擇頂點、邊或面,並對它們進行編輯。你可以
Thumbnail
在上一篇中,我們在模型探討隨機截距交叉延宕模式加入為預測或結果變量。而在Extension 2中,可以使用的分類變量進行Multiple group分析。這種方法常用在探討調節效果是否成立,本文將簡介其意義和語法。
Thumbnail
Grid Post這個App是為了IG排版而存在的,我很喜歡裡面的「全景剪裁」功能,讓讀者透過滑動把整張照片看完,帶來不一樣的視覺變化。
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
網格(Grid)是一個既普遍又隱形的存在,它以規則的排列方式存在於我們生活的各個角落。無論是在城市建築中的街區規劃,還是在數字化的屏幕上的像素點,網格都在無聲地將空間分割成方形或矩形的區域,為我們的生活和工作提供組織和結構。 除了實際的建築和數位設計,生活中還有各種各樣的網格存在。櫃子就是一個簡單
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
視覺層級並不侷限於平面設計,在用戶體驗及介面上更是一個重要的核心之一。視覺層級除了讓畫面的視覺編排更加精緻好看,更重要的功能是能讓畫面有效地被組織,讓觀者更容易理解。
Thumbnail
盤勢觀點跟昨天差不多,不刻意更新,盤整的就是多空拉鋸,但目前空方的條件稍微偏多一些。基本上弱一點就是持續藍色盤整區間,強一點就是稍微擴大盤整區間,只要在兩個區間內都還是維持盤整。下周藍色狹幅盤整有機會就會分出勝負,那時候操作方向會比較明朗。
Thumbnail
▪︎咒語描述: 繪製一個由許多大小一樣的圓點組成的布料,這些圓點排列成網格狀,背景為深色。圓點的顏色有綠色。
在3ds Max中,「Edit Mesh」是一種編輯模式,用於編輯三維模型的網格結構。進入Edit Mesh模式後,你可以對模型的頂點、邊和面進行各種編輯操作,比如移動、旋轉、縮放、切割等,從而修改模型的形狀和結構。 在Edit Mesh模式下,你可以選擇頂點、邊或面,並對它們進行編輯。你可以
Thumbnail
在上一篇中,我們在模型探討隨機截距交叉延宕模式加入為預測或結果變量。而在Extension 2中,可以使用的分類變量進行Multiple group分析。這種方法常用在探討調節效果是否成立,本文將簡介其意義和語法。
Thumbnail
Grid Post這個App是為了IG排版而存在的,我很喜歡裡面的「全景剪裁」功能,讓讀者透過滑動把整張照片看完,帶來不一樣的視覺變化。
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
網格(Grid)是一個既普遍又隱形的存在,它以規則的排列方式存在於我們生活的各個角落。無論是在城市建築中的街區規劃,還是在數字化的屏幕上的像素點,網格都在無聲地將空間分割成方形或矩形的區域,為我們的生活和工作提供組織和結構。 除了實際的建築和數位設計,生活中還有各種各樣的網格存在。櫃子就是一個簡單