iClient3D for WebGL ViewCube控件

作者:Emil

目录

一、前言

二、软件版本

三、效果展示

3.1 场景视角变化,同步给ViewCube

3.2 推拽ViewCube ,同步修改场景视角

3.3 点击ViewCube,调整场景固定视角

五、完整示例


一、前言

在三维数字孪生场景中,用户常因场景复杂、视角多变而难以快速定位与高效导航。为应对这一挑战,iClient3D for WebGL ViewCube控件 深度融合BIM领域成熟的ViewCube导航交互逻辑,为全域空间数据可视化提供一体化方向定位与场景操控解决方案。该控件帮助用户以直觉化的方式驾驭三维空间,大幅提升操作效率,是数字孪生及BIM+GIS融合应用中的关键交互支撑。

二、软件版本

supermap-iclient3d-for-webgl_webgpu-12.0.1-251225-49063.zip
链接: https://pan.baidu.com/s/1Evl9Kmm5YnxiL9uBhDVTrQ?pwd=syd9

ViewCube1.0.zip
链接: https://pan.baidu.com/s/1GEGgjPcYZ8e3HY6Z7Go9QA?pwd=kpi8 提取码: kpi8
下载后解压,使用vs code 打开文件夹,选中Model_Viewcube.html文件右键“Open in Live Server”

三、效果展示

3.1 场景视角变化,同步给ViewCube

在场景中调整视角,viewcube 会根据场景相机得方位角,俯仰角,同步修改Viewcube的显示

3.2 推拽ViewCube ,同步修改场景视角

在ViewCube中按住鼠标左键移动,会看到ViewCube在旋转,同时旋转时ViewCube的方位角和俯仰角会同步给场景进行视角调整。

注意事项:

场景调整方位角和俯仰角时,是以屏幕中心拾取到场景中的坐标点为中心。若拾取不到时(例如屏幕中心点为天空)已视角前方100米作为旋转中心点。

3.3 点击ViewCube,调整场景固定视角

在ViewCube中,鼠标移动到立方体上会有对应的高亮块,点击后高亮块后,会调整ViewCube到对应的方位。同时方位值会同步给场景。

注意事项:

若为ViewCube 字段 home 和 distance 赋值,这Viewcube 点击高亮块时,场景视角调整到以home为中心,distance为距离。
若未对ViewCube 字段 home 和 distance 赋值,则与3.2中拖拽ViewCube时中心点计算逻辑一致。

五、完整示例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <title>模型视图</title> <link href="./SuperMap3D/Widgets/widgets.css" rel="stylesheet"> <script src="./SuperMap3D/SuperMap3D.js"></script> <script type="text/javascript" src="./viewcube/viewcube.js"></script> </head> <body> <div id="Container"></div> <div class="loading-container"> <div class="circle"></div> </div> <script type="module"> /** * 页面加载完成后的初始化函数 * @param {Object} SuperMap3D - SuperMap3D库对象 */ function onload(SuperMap3D) { // 创建三维场景视图器,配置模型视图功能相关参数 const viewer = new SuperMap3D.Viewer('Container', { contextOptions: { contextType: Number(2), // Webgl2:2 ; WebGPU:3 - 设置渲染引擎类型 msaaLevel: 2, // 多重采样抗锯齿级别 }, timeline: true, // 启用时间轴控件 useSuperMapOIT: true, // 启用SuperMap顺序无关透明度 navigation: false }); // 等待场景初始化完成后执行初始化函数 viewer.scenePromise.then(function (scene) { init(SuperMap3D, scene, viewer); }); } /** * 场景初始化函数,设置模型视图功能 * @param {Object} SuperMap3D - SuperMap3D库对象 * @param {Object} scene - 三维场景对象 * @param {Object} viewer - 视图器对象 */ function init(SuperMap3D, scene, viewer) { // 设置分辨率缩放比例,提高渲染质量 viewer.resolutionScale = window.devicePixelRatio; // 打开动画场景,禁用自动设置视图 const promise = scene.open("http://www.supermapol.com/realspace/services/3D-BIM-new/rest/realspace", undefined, { autoSetView: false }); SuperMap3D.when(promise, function (layers) { document.querySelector('.loading-container').style.display = 'none'; initViewcube(scene, viewer); }) } function initViewcube(scene, viewer) { // 配置场景显示设置 scene.sun.show = true; // 显示太阳 scene.globe.show = false; // 隐藏地球 scene.globe.baseColor = SuperMap3D.Color.BLACK; // 没有影像图层时地球的底色设为黑色 scene.skyAtmosphere.show = false; // 隐藏大气效果 // 获取第一个图层和相关参数 const layer = viewer.scene.layers.layerQueue[0]; // 计算图层包围球,用于确定相机距离 const boundingSphere = layer.boundingSphere || SuperMap3D.BoundingSphere.fromRectangle3D(layer.layerBounds); const distanceScale = 3; // 距离缩放因子 const distance = boundingSphere.radius * distanceScale; // 相机到模型的距离 const matModel = layer._matModel; // 模型变换矩阵 let hprange = new SuperMap3D.HeadingPitchRange(0, -0.1, distance); // 设置相机位置和朝向 viewer.camera.lookAtTransform(matModel, hprange); // 取消相机锁定,恢复自由控制 viewer.camera.lookAtTransform(SuperMap3D.Matrix4.IDENTITY); var viewcube = new ViewCube(viewer, { language: "zh", width: 300, height: 300, home: matModel, distance: distance, }); } // 检查SuperMap3D库是否已加载,如果已加载则启动应用 if (typeof SuperMap3D !== 'undefined') { window.startupCalled = true; onload(SuperMap3D); } </script> </body> </html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5(十一)如何打包成exe

1、在pycharm的终端输入pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple然后输入pyinstaller -F -w main.py在文件夹的dist中就会出现main.exe&#xff0c;打开速度看电脑配置。

OddAgent:一个通用的意图、指令识别框架

想自己动手来手搓一个完全属于你自己的“小爱同学”、“小艺”吗&#xff1f;如果有你这么一个想法&#xff0c;而又不知道该如何开始的话&#xff0c;那么OddAgent项目可以成为你非常容易上手的开源项目。 本来这个功能是小落同学在2024年初就已经支持&#xff0c;由于前阵子…

基于Java的宗教人才培养智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 宗教人才培养智慧管理系统主要功能模块涵盖会员管理、课程资源管理及考核体系等&#xff0c;旨在提升宗教人才的培养效率与质量。系统采用SpringMVC开发框架和MySQL数据库&#xff0c;确保数据安全高效处理。该系统设计清晰合理&#xff…

XGBoost早停稳住医疗分类

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 XGBoost早停策略&#xff1a;医疗分类模型的稳健性基石目录XGBoost早停策略&#xff1a;医疗分类模型的稳健性基石 引言&#xff1a;医疗AI的隐性危机与早停的崛起 医疗数据特性&#xff1a;过拟合的温床 早停机制&#…

一文读懂多模态大模型:5大模态!

“多模态”中的“模态”&#xff08;modality&#xff09;&#xff0c;即指各类数据形式或信息来源。在多模态大模型中&#xff0c;典型模态涵盖以下类别&#xff1a;文本模态‌&#xff1a; 涵盖自然语言文本、经语音识别转换的文本内容等。 图像模态‌&#xff1a; 指视觉图像…

基于Java的安装生产智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安装生产智慧管理系统旨在革新传统管理方式&#xff0c;通过集成丰富功能模块实现智能化、高效化操作。系统涵盖会员操作管理、角色权限管理、客户及供应商管理等多个领域&#xff0c;并引入BOM管理和销售订单处理等功能&#xff0c;满足多…

基于Java的安规检测智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安规检测智慧管理系统基于Java技术开发&#xff0c;涵盖会员管理、客户管理等24个功能模块。系统采用SpringMVC框架和MySQL数据库实现高效数据处理与展示&#xff0c;适用于设备管理和维护、订单及报告跟踪等多个场景。相较于传统选题&…

吐血推荐自考必备AI论文写作软件TOP10

吐血推荐自考必备AI论文写作软件TOP10 自考论文写作工具测评&#xff1a;2026年TOP10榜单出炉 在自考学习过程中&#xff0c;论文写作往往是考生们最头疼的环节之一。从选题构思到资料收集&#xff0c;再到成文修改&#xff0c;每一个步骤都可能成为阻碍进度的“拦路虎”。而随…

AI模型开发的核心技术:预训练与微调,揭秘大模型进步的关键驱动力!

预训练和微调是现代AI模型的核心技术&#xff0c;通过两者的结合&#xff0c;机器能够在处理复杂任务时表现得更为高效和精准。 预训练为模型提供了广泛的语言能力&#xff0c;而微调则确保了模型能够根据特定任务进行细化和优化。 什么是预训练&#xff1f; 1.1 预训练的关键点…

吐血推荐8个AI论文软件,专科生毕业论文轻松搞定!

吐血推荐8个AI论文软件&#xff0c;专科生毕业论文轻松搞定&#xff01; 专科生论文写作的救星&#xff0c;AI 工具如何改变你的学习方式 对于很多专科生来说&#xff0c;毕业论文不仅是一项学术任务&#xff0c;更是一次心理挑战。从选题到开题&#xff0c;从初稿到修改&#…

全新UI简易漂流瓶系统源码

源码介绍&#xff1a;全新UI简易漂流瓶系统源码 更新日志&#xff1a; ✔ 功能优化&#xff1a;新增「自己不能捡到自己瓶子」的防误触机制 ✔ 交互升级&#xff1a;优化页面细节&#xff0c;操作体验更流畅下载地址&#xff08;无套路&#xff0c;无须解压密码&#xff09;htt…

基于Java的安防监控综合智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安防监控综合智慧管理系统致力于为传统选题带来创新性提升&#xff0c;其主要功能模块化设计使得系统易于理解和操作。该系统不仅涵盖了设备管理、摄像头及录像记录等基本功能&#xff0c;还进一步扩展至环境监测数据管理与人员进出记录管理…

Java程序员大模型开发转型宝典:五大步骤助你轻松入门,七大热门岗位高薪详解!

文章为Java程序员提供了转型大模型开发的完整指南&#xff0c;包括大模型概念理解、五大转型步骤&#xff0c;以及Java程序员在此过程中的优势。文章介绍了AI大模型时代七大热门技术岗位&#xff0c;详细列出AI工程师所需知识&#xff0c;强调掌握大模型技术带来的高薪机会&…

大数据领域分布式存储中的数据迁移方法

大数据领域分布式存储中的数据迁移方法:从"搬书"到"搬家"的技术解密 关键词:分布式存储、数据迁移、一致性保障、负载均衡、迁移策略 摘要:在大数据时代,分布式存储系统(如HDFS、Ceph)就像数字世界的"超级图书馆",但随着业务增长,我们常…

基于springboot的仁和机构的体检预约系统的设计与实现(源码+论文+部署+安装)

感兴趣的可以先收藏起来&#xff0c;还有在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望可以帮到大家。1. 程序背景你开发的仁和机构体检预约系统&#xff0c;核心背景是传统体检预约与管理模式存在显著弊端&am…

亲测有效,86W+!北航硕士亲授大模型学习路线图:从原理到开发!

本文展示了大模型领域的高薪前景(86-94W)&#xff0c;专业人才稀缺。课程涵盖Flash Attention、RAG、LoRA、多模态模型等技术&#xff0c;帮助系统掌握大模型原理与应用开发&#xff0c;提升科研与就业竞争力。北航计算机硕士&#xff0c;收到3份大模型offer&#xff0c;薪资86…

【免费源码】扣扣网易音乐解析UI模版 自适应双端

源码介绍&#xff1a;扣扣网易音乐解析UI模版 自适应双端 试了下&#xff0c;仅html模板&#xff0c;放进去链接解析后提示报错&#xff0c;下载地址&#xff08;无套路&#xff0c;无须解压密码&#xff09;https://pan.quark.cn/s/9c364815a0d4源码截图&#xff1a;

MTools v0.0.8:Windows 媒体人工具箱

作为面向媒体人及相关从业者的高效桌面工具集&#xff0c;媒体人工具箱 MTools v0.0.8 专为 Windows 用户打造&#xff0c;集成图片处理、音视频编辑、AI 智能工具与开发辅助功能&#xff0c;支持跨平台 GPU 加速&#xff0c;凭借精美界面与强大实用性&#xff0c;成为媒体创作…

LocalAI:无需GPU即可运行的大模型平台!

LocalAI是开源的本地AI大模型运行平台&#xff0c;无需GPU即可使用。它完全兼容OpenAI API&#xff0c;支持多模态模型&#xff0c;采用GoC架构&#xff0c;提供P2P分布式推理功能。解决了隐私保护、成本控制、网络依赖和硬件门槛等痛点&#xff0c;适合企业知识库、边缘设备AI…

Fiddler 模拟弱网环境测试

为什么要进行弱网环境测试&#xff1f; 由于用户自身的网络环境波动&#xff0c;或者是本身网络环境就较为恶劣&#xff0c;导致会出现一些意想不到的非功能性bug&#xff0c;影响用户体检。比如 利用Fiddler&#xff0c;Charles等具有代理服务器功能的网络流量分析软件来实现…