# iFactory.Godot

![](https://img.shields.io/badge/Dev-0.32-green)

基于Godot的iFactory客户端(网络服务和服务端已定义接口,预计使用[KCP](https://github.com/skywind3000/kcp)实现)

正在从Unity版[内网链接](http://192.168.1.50:3000/cn-intelli/iFactory.git)一步一步移植到Godot中

该项目主要使用[ECS](https://zhuanlan.zhihu.com/p/30538626)架构，[BITKit](http://server.bitfall.icu:3000/root/BITKit.git)作为基本的dotnet框架


## Installation 安装过程
1.首先你需要安装 **Godot4.0.3 Net** 👉[GodotEngine.Net](https://godotengine.org/download/windows/)

2.通过Git Clone两个仓库到与该仓库相同路径的文件夹,文件结构看起来像这样:

> GitHub (你的项目文件夹的上一级)
> >iFactory.Godot [外网仓库链接](http://server.bitfall.icu:3000/root/iFactory.Godot.git)
> 
> >BITKit   [外网仓库链接](http://server.bitfall.icu:3000/root/BITKit.git)
> 
> >AGV_System   [内网仓库链接](http://192.168.1.50:3000/cn-intelli/AGV_System.git)

3.最后在**Godot**中导入**iFactory.Godot**

4.⭐ 安装完成

## Features 功能与模块
### 功能介绍
#### 机位同步
* 超炫酷`零延迟`机位同步(可能需要一些硬件支持)
* 基于角度的`Loopback`算法,解决了同步角度和位置时0>1>0的值被线性插值解析为0>0.7414>0的问题
* 基于物理`PBR`的三维模型,确保和现实中的设备看起来几乎一致
* 基于`Lancer.SCADA`返回数据的物料同步(例如`SR7C1L`夹着物料`多功能笔记本`放进`交付气缸夹`)
#### 数据回放
* 录制生产时的数据，可离线播放生产过程
* 支持数据追溯，收集和录制重要数据，可对数据进行加工、提炼和分析，找到可能存在的重要数据
#### 布局规划
* 拖放`模型库`/`预制件`到场景中，快速完成场景的基础规划
* 选中`实体`并编辑数值或节点，可快速定制`模型`，例如
  * 自定义围墙，围栏，输送带的尺寸，如 长`4096mm`，宽`256mm`
  * 编辑贝塞尔曲线，标记`AGV`或其他可运动设备的`路线`
  * 快速替换预览设备的型号,例如将`KUKA.AGV`替换为`Intelli.AGV`
#### 多终端实时同步场景
* `PC客户端`进行布局规划，`Mixed Reality`客户端(例如`AR`)可直接在现场看到设备规划的位置和生产路线
* 虚拟化生产过程，用户可通过`手机AR`或者`AR眼睛`在现场预览生产过程并对过程进行评估
  * `AGV`夹起`物料`放入`装配单元`
  * `AGV`向`装配单元`提供`物料`
  * `装配单元`进行虚拟化装配
  * `AGV`从`装配单元`取走产品，并放入`交付单元`
* `所有客户端`可对现实坐标进行标记(`文字消息` `图像消息`)
  * 标记需要改进的工序或移动的位置
  * 标记用户希望的生产路线 
#### 智能诊断
* 基于`Lancer.SCADA`提供的数据，自动分析重要数据的值并返回异常和诊断数据
* 可通过`WebAPI`接口下发异常
* 与`微信`紧密绑定
### 功能清单

- [x] 基于`Lancer.SCADA`的基本数据请求服务`WebApi/GetInfos`——请求json,处理json嵌套,向内部提交数据
- [x] 基于`Lancer.SCADA`基本的角度和位置同步
- [ ] 基于`AI`算法的零延迟同步
- [ ] 基于`硬件本身的api`提供的零延迟同步
- [ ] 全平台通用网络通讯接口(基于KCP的基本网络服务)`NetProvider` `NetClient` `NetServer`
- [ ] 基于`Camera3D`的虚拟相机服务`观察场景` 例如`移动视角` `拖动视角` `缩放视角` `保存与加载预设视角`
- [ ] `Android`支持
- [ ] `WebGL` 支持
- [ ] 回放录制器——录制`Lancer.SCADA`返回的数据，
- [ ] 场景编辑器——拖动预制件到场景中，完成组合场景,可用于对现场规划进行三维浏览和布局评估
- [ ] 网络场景——多个平台和客户端同步场景，例如在PC上更改场景，在`Mixed Reality`中可实时看到场景的更改
- [ ] 自诊断服务——通过解析数据，找到`空值`或`null`的数据并向指定接口(例如`微信推送` `数据库日志`)提交异常

## Getting Started 使用指南