ThingJS如何完成第一人称视角的场景巡检功能

简介: 在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生。

在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生。ThingJS如何完成第一人称视角的场景巡检功能?
目前 ThingJS 内置了「第一人称行走」控件,实现第一人称人物动作:走、跑、跳、移动视角,可供开发者使用。
“第一人称行走”交互模式会让人想到游戏射击游戏,给玩家一定的空间来让他们来真正感受处于每个位置的感觉。而实现人物动画,例如行走步伐,就需要一定的交互,包括周围的环境、重力或撞击影响。
ThingJS实现第一人称控制移动,主要通过js脚本让鼠标控制任务或者摄像机的旋转。官方添加「第一人称行走」控件后,鼠标按住左键拖拽方向,默认的交互为键盘按键来控制行走方向:
• A:左移
• D:右移
• W:前进
• S:后退
• 空格:跳跃(当开启重力时生效)
• 鼠标:按下左键旋转场景

用于物体移动的控制器支持js开发,提供GUI(图形用户界面)手动调整参数。不懂开发?动动手也可以调整空间参数啦!
1.jpg

视角移动的起始位置是摄像机位置,实时代码示例如下:

var app = new THING.App({
    url: 'https://www.thingjs.com/static/models/storehouse'
});

// 加载场景后执行
app.on('load', function () {
    // 创建按钮
    new THING.widget.Button('添加控件', add_control);
    new THING.widget.Button('删除控件', remove_control);
});

// 添加控件
var ctrl = null;
var gui = null;
function add_control() {
    if (ctrl) {
        return;
    }

    app.camera.position = [0, 10, 0];// 起始位置 就是摄像机位置, 不设置就会在摄像机位置直接开始
    ctrl = app.addControl(
        new THING.WalkControl({ // 参数可以动态修改
            walkSpeed: 0.02, // 行走速度
            turnSpeed: 0.25, // 右键旋转速度
            gravity: 29.8, // 物体重量
            eyeHeight: 1.6, // 人高度
            jumpSpeed: 10, // 按空格键 跳跃的速度
            enableKeyRotate: false, // 默认不开启键盘控制旋转
            useCollision: false, // 默认不开启碰撞检测
            useGravity: true // 默认开启重力
        })
    );
    // GUI
    gui = new THING.widget.Panel({ 'titleText': '第一人称行走', 'hasTitle': true });

    gui.position = [10, 200];

    gui.addBoolean(ctrl, 'enableKeyRotate').caption('键盘控制旋转');
    gui.addBoolean(ctrl, 'useCollision').caption('碰撞检测');
    gui.addBoolean(ctrl, 'useGravity').caption('重力检测');

    gui.addNumberSlider(ctrl, 'gravity').caption('重力').step(1).min(0).max(50).isChangeValue(true);
    gui.addNumberSlider(ctrl, 'jumpSpeed').caption('跳起速度').step(1).min(0).max(30).isChangeValue(true);
}

// 删除控件
function remove_control() {
    if (ctrl) {
        app.removeControl(ctrl);
        ctrl = null;
        gui.destroy();
    }
}

ThingJS,让场景巡检3D可视化更加强大

相关文章
|
5月前
|
机器学习/深度学习 人工智能 运维
基于图的智能可观察性
基于图的智能可观察性
|
8月前
|
运维 监控 持续交付
基于应用视角的智能运维
基于应用视角的智能运维
101 0
|
12月前
|
运维 安全 fastjson
【干货】自动化批量挖洞流程 之 四工具联动
【干货】自动化批量挖洞流程 之 四工具联动
386 0
|
20天前
|
监控 前端开发 关系型数据库
企业级业务系统的360度立体监控
介绍如何使用ARMS实现对部署在阿里云上的业务系统的360度立体监控。
51 0
企业级业务系统的360度立体监控
|
运维 安全 数据安全/隐私保护
BIM在设计、施工和运维的细分应用点(中英文对照)
BIM在设计、施工和运维的细分应用点(中英文对照)
BIM在设计、施工和运维的细分应用点(中英文对照)
|
监控
构建三维一体立体化监控,看这一篇就够了!
如果你需要搭建一套能够立体化监控你的应用及业务,出现问题及时告警的监控体系,这篇文章应该是你所需要的!
462 0
构建三维一体立体化监控,看这一篇就够了!
|
人工智能 运维 Prometheus
搞定监控!我全靠这个超牛逼的告警管理平台
你可能也遇到过这样的场景: 在一个惬意的周六夜里,运维郭哥正在梦里神游,正美着呢,然而领导突然一通电话打过来,说服务器崩了,给你5分钟时间马上恢复! 毫无疑问,服务器出问题了,但郭哥没收到告警,错过了黄金抢救时间!还被领导先发现了问题! 于是郭哥背了锅,开始修复问题,时间一点一滴地逝去,领导时不时催一下进度,一个愉快的周末就这样没了! 试想一下,如果郭哥及时收到告警会怎么样?也许可以把故障影响降到最低,甚至可以在故障没发生前把服务器重启一下,神不知鬼不觉,然后悠闲地度过周末!
|
敏捷开发 数据可视化 测试技术
照亮问题——效能提升从可视化交付过程开始| 学习笔记
快速学习照亮问题——效能提升从可视化交付过程开始
207 0
照亮问题——效能提升从可视化交付过程开始| 学习笔记
|
数据可视化 大数据 定位技术
重点人员动态管控系统开发,合成作战平台建设方案
重点人员动态管控系统提供重点人员基于GIS的一系列应用,根据重点人员在网吧、酒店登记信息获取轨迹信息。从现有社会网点中抽取重点人员的登记信息,实现重点人员区域分布展示,在地图上提供重点人员信息空间和属性查询、统计分析和历史轨迹查询展示、及同轨重点人员分析。
169 0
|
机器学习/深度学习 存储 SQL
如何将“智能巡检”嵌入“业务系统”中?
智能巡检借助强大的SLS“告警2.0”消息系统,可以很好的桥接很多内部和外部的系统(EventBridge、FC等),也可以借助SLS的SDK和自定义的函数去解决针对“告警结果”的下一步“分析任务”,从而更好的实现对于问题的排查和解决。
317 0