godot做仪表hmi

godot是一个开源引擎,除了做游戏,也可以做一些应用,本次探究在仪表hmi上一些使用技术。

1. 集成c++

godot GDExtension插件-实现c++接口

2. 状态机

godot没有kanzi那么好用的状态机组件

2.1 用脚本实现

简单的说就是一个节点下建立多个子节点,每个子节点代表一个状态,纯脚本实现状态迁移

2.2 封装状态机

封装原理,借助godot独有的资源+脚本方案,可视化配置状态属性

3. gd动态加载pck

运行时挂载只做一件事:把 pck 的文件索引塞进 PackedData,之后 res:// 就能按路径读到里面的资源。

project settings / autoload / 输入映射 / 语言翻译都不会生效,需要你在脚本里自己处理

4. 修改引擎支持多窗口

  • win上只需要关闭项目设置-嵌入式子窗口,就可以实现多窗口
  • linux weston上需要修改引擎源码,然后就可以在脚本里面使用
    win.ivi_surface_id = xxxx

一个进程 / 一个 SceneTree

一个 RenderingServer、一个 EGLContext、一条 Wayland 连接

│

├─ 主窗口 Window ── 自己的 Viewport RID + 自己的渲染目标 ── wl_surface + EGLSurface ── IVI xxxx

│ └─ 场景内容(各自独立的 Viewport 树)

│

└─ 副窗口 Window ── 自己的 Viewport RID + 自己的渲染目标 ── wl_surface + EGLSurface ── IVI xxxx

└─ 场景内容(各自独立的 Viewport 树)

共享的是进程、SceneTree、RenderingServer、GL 上下文、Wayland 连接;

不共享的是渲染树、渲染目标、surface。

5. 同一场景,多屏显示

SubViewport实现了渲染一次,多窗口共用同一份渲染结果

在4基础上

win.get_node("TextureRect").texture =$SubViewport.get_texture()

相关推荐
郝学胜-神的一滴8 小时前
AI 编程智能体 22:解析器赋能与实战落地全指南
人工智能·程序人生·游戏·unity·游戏引擎
Solange__1 天前
在线3D预览器、Blender和游戏引擎怎么选?按5类任务比较格式、隐私与编辑性
人工智能·游戏·3d·游戏引擎·blender·1024程序员节·关卡设计
郝学胜-神的一滴2 天前
游戏设计:原型与开发 18:Unity入门的第一课
人工智能·程序人生·游戏·ui·unity·游戏引擎
淡海水2 天前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
Solange__3 天前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
呆呆敲代码的小Y3 天前
【实战精选面试题】Unity精选面试题详细解答,按模块整理汇总
人工智能·游戏·unity·游戏引擎
地狱为王3 天前
Unity使用VoxLock实现语音隔离
unity·游戏引擎·音频处理·voxlock
解决小子3 天前
【虚幻引擎】【GAS】模块详解
游戏引擎·虚幻·gas
一只大鸽子4 天前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot