請問要如何透過 Viewer 的 API 來產生剖切面嗎?
像這截圖這樣:
可以的,你可以透過 viewer.setCutPlanes() 這個函數來設定剖切面,它接受的是 THREE.Vector4 的陣列 (array),也就是剖切面的陣列。 每個THREE.Vector4 都代表一個高等數學的面方程式ax + by + cz + d = 0 ,這個面方程式的法向為(a,b,c) 且與距離座標原點d 單位。此外, Forge Viewer 也以 THREE.Vector4 的 (x, y, z) 來表示面的法向 (a, b, c),w 代表與原點的距離 w。呼叫範例如下:
viewer.setCutPlanes()
THREE.Vector4
ax + by + cz + d = 0
(a,b,c)
d
(x, y, z)
(a, b, c)
w
var cutplanes = [ new THREE.Vector4( 0, 0, -1, -17 ), new THREE.Vector4( 0, 0, 1, 0 ), ]; veiwer.setCutPlanes( cutplanes );
結果截圖:
如果要取消剖切的話,只要再調用一次 viewer.setCutPlanes() 且不傳入任何參數即可,取消後房子就回復原狀了:
康工您好,我是小趙,在上海就同問過您的名氣,現在想請教您,模型剖切後是否可以默認選中顯示的部分(觸發that.viewer.getSelection()事件)。我對於forge只是入門,這個問題也困擾我好一陣子了。
可以的,你可以透過
viewer.setCutPlanes()
這個函數來設定剖切面,它接受的是THREE.Vector4
的陣列 (array),也就是剖切面的陣列。 每個THREE.Vector4
都代表一個高等數學的面方程式ax + by + cz + d = 0
,這個面方程式的法向為(a,b,c)
且與距離座標原點d
單位。此外, Forge Viewer 也以THREE.Vector4
的(x, y, z)
來表示面的法向(a, b, c)
,w
代表與原點的距離w
。呼叫範例如下:結果截圖:
如果要取消剖切的話,只要再調用一次
viewer.setCutPlanes()
且不傳入任何參數即可,取消後房子就回復原狀了:康工您好,我是小趙,在上海就同問過您的名氣,現在想請教您,模型剖切後是否可以默認選中顯示的部分(觸發that.viewer.getSelection()事件)。我對於forge只是入門,這個問題也困擾我好一陣子了。