是否可以投射來自相機的光線並知道它是否與模型相交?Ray與模型相交
在同樣的筆記中,是否可以通過這種方式計算到交點的距離?
我想要這個,所以我將能夠以編程方式知道牆壁是否有窗戶或是否平坦,如果它有窗戶,那麼交叉路口的距離將會跳躍。
是否可以投射來自相機的光線並知道它是否與模型相交?Ray與模型相交
在同樣的筆記中,是否可以通過這種方式計算到交點的距離?
我想要這個,所以我將能夠以編程方式知道牆壁是否有窗戶或是否平坦,如果它有窗戶,那麼交叉路口的距離將會跳躍。
是否有可能從攝像機投射的光線,並且知道如果它與模型相交? 有幾個選項可以使用:
如果你想交什麼,你可以使用瀏覽器內置API let posClientCoords = new THREE.Vector3(x, y, 1.0) let result =this.viewer.utilities.viewerImpl.hitTestViewport(posClientCoords , false); if (result !== null && result.fragId >= 0) { // here you go }
如果你喜歡光線投射選擇的對象,你可以使用three.js所raycaster let vray =new THREE.Vector3(ptarget.x - psource.x, ptarget.y - psource.y, ptarget.z - psource.z) vray.normalize() let ray =new THREE.Raycaster(psource, vray, 0, max_dist) let intersectResults = ray.intersectObjects (wallMeshes, true)
wallMeshes是代理圖形數組,你從觀衆得到 viewer.impl.getRenderProxy(viewer.model, fragId), null, null, null)
在同一張紙上,是否可以通過這種方式計算到交點的距離? 每個API的返回
一個例子公佈here
它絕對是。下面是一個例子,ForgeFader,正是證明你問什麼:
http://thebuildingcoder.typepad.com/blog/2017/04/work-half-aks-opener-rvtfader-and-forgefader.html#9
來源GitHub上:
是此保持在存儲器中的模型的所有網格(光線與物體之間的交叉點)的目標點? https://github.com/Autodesk-Forge/forge-rcdb.nodejs/blob/master/src/client/viewer.components/Viewer.Extensions/Viewing.Extension.Fader/Viewing.Extension.Fader.Core.js# L309有沒有辦法在沒有這樣的情況下獲得距離? – shinzou
什麼是「posClientCoords」?射線的方向? – shinzou
另外,如何在不點擊節點的情況下獲得'viewer.impl.getRenderProxy'的相關fragid? – shinzou
看看[這裏](https://github.com/Autodesk-Forge/forge-rcdb.nodejs/blob/master/src/client/viewer.components/Viewer.Extensions/Viewing.Extension.Fader/Viewing。 Extension.Fader.Core.js#L201) - posClientCoords是畫布鼠標位置,hitTest會爲您提供dbId和fragId。 – cyrille