xBIM 基础12 WeXplorer xViewer的导航、相机、剖切、隐藏等操作
viewer.on('pick', function (args) {
var id = args.id;
viewer.setCameraTarget(id);
pickedId = id;
});
使用 setCameraPosition()方法设置摄像机位置也很容易。以下示例使用HTML输入来设置值,但您肯定会使用一些智能逻辑来实现直观和流畅的用户体验。
<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()方法设置的原点和距离进行操作。在示例中,每次用户选择上面列出的元素时,都会设置相机目标。
<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 只使用了浏览器的默认导航功能,这些功能在鼠标左键轨道上运行,在中间按钮上平移并放大滚动按钮。这应该是直观的。请注意,浏览器的最佳做法是将其放在没有垂直滚动条的单个页面上。因为缩放模型并同时滚动网站,缩放很难。如果您希望这样做,可以使用以下代码更改左按钮的默认行为:
<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属性即可。
<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>
xBIM 基础12 WeXplorer xViewer的导航、相机、剖切、隐藏等操作的更多相关文章
- xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- xBIM 基础10 WeXplorer 浏览器检查
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇 <xBIM基础 09 WeXplorer 基本应用> 已经提到,查看器不会在所有浏览器的所有设备上运行.为了操作效率和简单 ...
- xBIM 基础08 WeXplorer 简介
系列目录 [已更新最新开发文章,点击查看详细] 一.WeXplorer 简介 WeXplorer 是 XBIM 工具包的可视化部分,它使用预处理的 WexBIM 文件在 Web 上处理 IFC ...
- xBIM 基础09 WeXplorer 基本应用
系列目录 [已更新最新开发文章,点击查看详细] 在本教程中,将学习如何创建最基本和最直接的查看器. 除了展示建筑模型外,不做其他任何操作.它将只使用内置导航,但是不会对按钮做出事件响应. &l ...
- xBIM 基础11 WeXplorer 常用事件
系列目录 [已更新最新开发文章,点击查看详细] 本篇将介绍查看器在不同场合触发的事件.所有这些都记录在xViewer中. 如果您从Web服务器运行本教程,可以在此处查看完整的实例.并且确保您的 ...
- xBIM 基础13 WeXplorer 设置模型颜色
系列目录 [已更新最新开发文章,点击查看详细] 默认情况下模型具有合理的图形表示.这是从IFC模型中获取的,它应该在所有工具中看起来相同,它应该与您或您的用户的创作环境中的相同.但有时候能够改 ...
- xBIM WeXplorer xViewer 基本应用
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- xBIM WeXplorer xViewer 浏览器检查
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- Bootstrap <基础十八>面包屑导航(Breadcrumbs)
面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式.以博客为例,面包屑导航可以显示发布日期.类别或标签.它们表示当前页面在导航层次结构内的位置. Bootstrap 中的面包屑导航( ...
随机推荐
- ES failed to notify ClusterStateListener java.lang.IllegalStateException: environment is not locked
ES出现异常: failed to notify ClusterStateListenerjava.lang.IllegalStateException: environment is not loc ...
- Java-SpringCloud:目录
ylbtech-Java-SpringCloud:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:htt ...
- 杂项-建模:BIM
ylbtech-杂项-建模:BIM 建筑信息模型是建筑学.工程学及土木工程的新工具.建筑信息模型或建筑资讯模型一词由Autodesk所创的.它是来形容那些以三维图形为主.物件导向.建筑学有关的电脑辅助 ...
- 7.gcc的使用
什么是gcc gcc编译器(GNU C Compiler) 现在我们所说的 gcc 是 GUN Compiler Collection的缩写,可以支持多种语言编译,比如 C,C++,Java, pas ...
- 分布式memcache
使用多台memchache服务器,形成memchache集群.目的是为了提升memchache所能使用的硬件资源数量.多台memcached服务器之间不相互通讯.分布式算法由客户端实现,(php来说, ...
- Activity-任务栈和启动模式
为什么需要了解关于Activity的任务栈,其实最直接的体现就是提高用户交互友好性. 举个例子,当我们去浏览一个新闻客户端的时候,我们进入了新闻详情页,在这个页面有相隔两条的新闻标题,当我们去点击这个 ...
- 快速搭建golden gate环境
准备操作系统用户和文件系统 准备安装和运行用户(操作系统用户) 建议使用Oracle用户 也可使用新建用户,但需做以下配置 该用户必须加入到oinstall组 该用户使用与oracle相同的profi ...
- 手机号获取省份,城市api的使用
function get_mobile_area($mobile){ header('Content-Type:text/html;charset=gbk'); $url = 'http://life ...
- Simula-Virtual function
Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the ...
- 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
今天运行程序是出现了this application has requested the runtime to terminate it in an unusual way. 的异常报告,以前也经常 ...