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可视化更加强大

相关文章
|
开发框架 前端开发 API
LayUI的使用
LayUI的使用
633 0
|
JavaScript
【JS用法】js判断字符串是否包含某个字符串
【JS用法】js判断字符串是否包含某个字符串
1138 0
|
10月前
|
人工智能 前端开发 API
智能体来了:从0到1:真正的第一步,不是调用API
本文厘清智能体本质:它不是大模型本身,而是以LLM为中枢、具备感知、规划、记忆与工具调用的闭环系统。强调“真正第一步”是构建可失败、可反馈的任务工作流,而非堆砌提示词;主张从垂直场景出发,以业务逻辑为核心,借力平台化工具落地。
482 0
|
存储 小程序 Python
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
1527 86
|
机器学习/深度学习 人工智能 并行计算
Unsloth:学生党福音!开源神器让大模型训练提速10倍:单GPU跑Llama3,5小时变30分钟
Unsloth 是一款开源的大语言模型微调工具,支持 Llama-3、Mistral、Phi-4 等主流 LLM,通过优化计算步骤和手写 GPU 内核,显著提升训练速度并减少内存使用。
2454 3
Unsloth:学生党福音!开源神器让大模型训练提速10倍:单GPU跑Llama3,5小时变30分钟
|
机器学习/深度学习 人工智能 监控
基于AI视觉的泳池安全监控系统技术解析
本方案针对泳池安全管理的技术挑战,提出基于边缘计算与云平台的混合架构系统。通过改进YOLOv8模型实现92.7%溺水检测精度,结合LSTM分析异常姿态,多特征融合提升水面静止及呼吸检测能力。同时,安全员行为识别、图像增强模块有效应对环境干扰和监管盲区问题。系统采用DeepSORT优化多目标追踪,硬件配置支持实时视频流分析,实际应用中平均溺水识别时间仅2.3秒,显著优于人工检测。未来将探索多模态感知融合与自适应学习机制,进一步提升系统性能。
1032 0
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
2879 2
|
机器学习/深度学习 人工智能 自然语言处理
|
存储 人工智能 缓存
[AI Kimi] Context Caching 正式公测,推动长文本模型降本 90%
Kimi 的上下文缓存(Context Caching)技术正式公测。该技术通过预先存储数据,显著降低了计算成本和延迟,适用于长文本模型,帮助节省高达 90% 的费用,并将首 Token 延迟降低 83%。
1560 1