viewer.on('pick', function (args) { var id = args.id; viewer.setCameraTarget(id); pickedId = id; });
使用 setCameraPosition()方法設置攝像機位置也很容易。如下示例使用HTML輸入來設置值,但您確定會使用一些智能邏輯來實現直觀和流暢的用戶體驗。javascript
<input type="text" id="camX" value="-15000" /> <input type="text" id="camY" value="-15000" /> <input type="text" id="camZ" value="15000" /> <button onclick="SetCamera()">Set camera</button> <script type="text/javascript"> function SetCamera() { if (viewer) { var iX = document.getElementById('camX'); var iY = document.getElementById('camY'); var iZ = document.getElementById('camZ'); viewer.setCameraPosition([iX.value, iY.value, iZ.value]); } } </script>
可以向模型或其零件顯示默認軸對齊視圖始終很重要。這是xViewer的內置功能。它始終對setCameraTarget()方法設置的原點和距離進行操做。在示例中,每次用戶選擇上面列出的元素時,都會設置相機目標。html
<button onclick="if (viewer) viewer.show('front');">Front</button> <button onclick="if (viewer) viewer.show('back');">Back</button> <button onclick="if (viewer) viewer.show('top');">Top</button> <button onclick="if (viewer) viewer.show('bottom');">Bottom</button> <button onclick="if (viewer) viewer.show('left');">Left</button> <button onclick="if (viewer) viewer.show('right');">Right</button>
xViewer 只使用了瀏覽器的默認導航功能,這些功能在鼠標左鍵軌道上運行,在中間按鈕上平移並放大滾動按鈕。這應該是直觀的。請注意,瀏覽器的最佳作法是將其放在沒有垂直滾動條的單個頁面上。由於縮放模型並同時滾動網站,縮放很難。若是您但願這樣作,可使用如下代碼更改左按鈕的默認行爲:java
<button onclick="if (viewer) viewer.navigationMode = 'orbit';">Orbit</button> <button onclick="if (viewer) viewer.navigationMode = 'free-orbit';">Free orbit</button> <button onclick="if (viewer) viewer.navigationMode = 'pan';">Pan</button> <button onclick="if (viewer) viewer.navigationMode = 'zoom';">Zoom</button> <button onclick="if (viewer) viewer.navigationMode = 'none';">Disable default navigation completely</button>
當模型繞其Z軸旋轉時,默認軌道模式是固定軌道。您還可使用圍繞實際軸旋轉模型的自由軌道,所以更自由。您可使用它從不尋常的角度查看模型。就像一個提示 - 若是有必要的話,畫圓圈來調整水平線。您還能夠徹底禁用默認導航,如示例最後一行所示,並自行實現不一樣的導航。API如今沒有爲此作好準備,但計劃在下一個版本中進行。瀏覽器
<button onclick="if (viewer) viewer.clip();">Interactive clipping</button> <button onclick="if (viewer) viewer.unclip();">Unclip</button> <input type="text" id="clipOrigX" value="0" /> <input type="text" id="clipOrigY" value="0" /> <input type="text" id="clipOrigZ" value="0" /> <input type="text" id="clipNormX" value="-1" /> <input type="text" id="clipNormY" value="0" /> <input type="text" id="clipNormZ" value="0" /> <button onclick="Clip()">Clip</button> <script type="text/javascript"> function Clip() { var oX = document.getElementById('clipOrigX').value; var oY = document.getElementById('clipOrigY').value; var oZ = document.getElementById('clipOrigZ').value; var nX = document.getElementById('clipNormX').value; var nY = document.getElementById('clipNormY').value; var nZ = document.getElementById('clipNormZ').value; if (viewer) viewer.clip([oX, oY, oZ], [nX, nY, nZ]); } </script>
<select id="cmbHide"> <option value="noAction">No action</option> <option value="hideProduct">Hide product</option> <option value="hideType">Hide type</option> <option value="highlight">Highlight</option> </select> <button onclick="if (viewer) viewer.resetStates()">Show all</button> <script type="text/javascript"> function initHiding() { viewer.on('pick', function (args) { var cmb = document.getElementById('cmbHide'); var option = cmb.value; switch (option) { case 'hideProduct': viewer.setState(xState.HIDDEN, [args.id]); break; case 'hideType': var type = viewer.getProductType(args.id); viewer.setState(xState.HIDDEN, type); break; case 'highlight': viewer.setState(xState.HIGHLIGHTED, [args.id]); break; default: break; } }); }; </script>
xViewwe還有一個選項,那就是突出顯示。它內置於引擎的核心,若是您須要在視覺上突出顯示或隔離模型中的某些對象,它很是有用。它與X-Ray渲染模式結合使用時特別有用,其中全部內容都以半透明淺藍色呈現,除了具備狀態xState.HIGHLIGHTED或xState.XRAYVISIBLE的產品。要在普通和X射線渲染模式之間切換,只需設置xViewer的renderingMode屬性便可。ide
<div> Rendering mode <label> <input type="radio" name="rRenderingMode" checked="checked" onchange="if (viewer) viewer.renderingMode = 'normal';"/> Normal </label> <label> <input type="radio" name="rRenderingMode" onchange="if (viewer) viewer.renderingMode = 'x-ray';" /> X-Ray </label> </div>