2024-01-23 03:58:27 +08:00
|
|
|
# iFactory 切削应用仿真
|
2024-01-23 02:53:57 +08:00
|
|
|
|
2024-01-23 03:58:27 +08:00
|
|
|

|
|
|
|
|
2024-03-05 15:27:29 +08:00
|
|
|

|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
通过直接在模型上绘制,对平面甚至任意表面进行切削仿真
|
|
|
|
|
|
|
|
支持多种笔刷,可通过Mod自定义笔刷
|
2024-01-23 04:14:54 +08:00
|
|
|
|
|
|
|
支持多种模型,可通过Mod自定义模型
|
|
|
|
|
2024-01-23 03:58:27 +08:00
|
|
|
**原生支持Mod**,可以实现任何功能,例如:
|
|
|
|
* 接入真实切削机
|
|
|
|
* 模拟切削过程
|
|
|
|
* 导出切削命令数据
|
|
|
|
|
|
|
|
## 操作方式
|
|
|
|
* 按住`鼠标中键`进行视角旋转
|
|
|
|
* 按住`鼠标中键`和`Shift`进行视角移动
|
|
|
|
* 滑动`鼠标滚轮`进行视角缩放
|
|
|
|
* 选择笔刷后按住`鼠标左键`进行绘制,不按下则为预览
|
|
|
|
几乎所有操作都为命令,可在用户界面右侧撤销和重做命令
|
|
|
|
|
|
|
|
|
|
|
|
支持线上创意工坊,用于可通过Web浏览Mod并订阅,该应用会自动下载并安装Mod
|
|
|
|
|
|
|
|
## 类库:[iFactory-Cutting](http://server.bitfall.icu:3000/root/iFactory.Cutting.git)
|
|
|
|
|
2024-01-23 04:14:54 +08:00
|
|
|
仅Windows平台应用支持
|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|
- [X] Windows
|
|
|
|
- [ ] Android
|
|
|
|
- [ ] IOS (花钱买IOS开发者才行)
|
|
|
|
- [ ] Linux(我想没有支持的需要)
|
|
|
|
|
|
|
|
## 当前需求
|
|
|
|
上面提出了一个需求:**我们需要一个仿真切削应用,用于快速模拟并展示切削结果和过程**
|
|
|
|
|
|
|
|
不仅需要切削,还需要对成品材料进行反推,即**通过切削结果反推切削过程**
|
|
|
|
|
|
|
|
很明显,这个问题一开始涉及到了各种几何和计算机图形的问题,再经过各种尝试后,我们得到了相对最佳的解决方案:
|
|
|
|
|
|
|
|
基于自定义着色器`Alpha Clip`对绘制部分进行裁剪(指创建遮罩)实现模拟切削的效果
|
2024-01-23 04:14:54 +08:00
|
|
|
|
|
|
|
通过对模型材质直接绘制,计算出绘制的点,并通过`Alpha Clip`着色器对模型进行裁剪,实现切削效果
|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|
不仅仅需要出厂自带的模型和笔刷,我们还需要支持自定义笔刷和自定义模型,这就是`Mod支持`
|
|
|
|
|
|
|
|
我们的客户可能会有各种各样的需求
|
|
|
|
* 当客户无法自行实现时
|
|
|
|
* 或我们有新想法时
|
|
|
|
* 或有用户想分享创意时
|
|
|
|
|
|
|
|
客户就需要创建工单,我们对工单进行处理,并发布到线上,这就是`创意工坊`
|
|
|
|
|
|
|
|
为什么需要`Mod`和`创意工坊`?
|
|
|
|
|
|
|
|
你也不想<font color=red>每次有更新都要重新下载安装</font>吧,而且我们也不想每次都要重新发布吧
|
|
|
|
|
|
|
|
你也不想<font color=red>每次都下几个G的资源</font>吧,而且我们也不想每个小更改都需要打包吧
|
|
|
|
|
|
|
|
## 当前问题
|
|
|
|
|
2024-03-04 18:45:21 +08:00
|
|
|
~~### 编译后,加载不了Mod,没有物料板
|
|
|
|
目前编译后未收到报错,功能也无法使用,正在解决中~~
|
|
|
|
|
2024-01-23 04:14:54 +08:00
|
|
|
|
2024-01-23 03:58:27 +08:00
|
|
|
### 在平面上绘制的一个圆,中间的部分不会被裁剪
|
2024-01-23 04:14:54 +08:00
|
|
|
这不会涉及到物理,这相对来说只是画画
|
|
|
|
|
|
|
|
所以会出现一些与物理不符的情况,因为这是一个切削仿真,而不是物理仿真
|
|
|
|
|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|
#### 为什么?
|
|
|
|
因为本质上就是画了一个圆环而不是圆圈,要圆圈得用`点笔刷`绘制一个半径足够的圆
|
|
|
|
|
2024-01-23 04:14:54 +08:00
|
|
|
实时洪水填充和扫描线填充相对于至少`1024 x 1024`px的图像来说性能<font color=yellow>消耗巨高</font>
|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|
#### 如何解决?
|
|
|
|
使用`Void笔刷`绘制圆,将应该裁剪的部分手动填充,`Void笔刷`不会被记录到导出的切削数据中
|
|
|
|
|
|
|
|
### 为什么还没实现反推?
|
|
|
|
这个需要`AI`,需要`GPT`,需要`GPT4`,需要`DALL·E`
|
|
|
|
|
|
|
|
这个要💰,很多的💰,一个月25$的哪种
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## 运行配置
|
2024-01-23 04:14:54 +08:00
|
|
|
**CPU:** `Intel 10400F`及以上
|
2024-01-23 03:58:27 +08:00
|
|
|
|
|
|
|
**GPU:** `GTX1050`及以上
|
|
|
|
|
|
|
|
**RAM:** `16G DDR4`及以上
|
|
|
|
|
|
|
|
**剩余储存空间:** `2GB`或以上
|
|
|
|
|
|
|
|
**操作系统:** 仅限于64位`Windows 10`,`Windows 11`或以上
|
|
|
|
## 更新日志
|
2024-04-16 04:15:06 +08:00
|
|
|
### 2024年3月12日
|
|
|
|
- 添加了`IUXWaiting`,现在遇到动态加载时会显示加载的项目
|
|
|
|
|
|
|
|
现在可以看到卡住是因为什么原因(例如加载)了
|
|
|
|
|
|
|
|
同样可以通过该方式验证许可证,该接口会禁用用户操作,提供动态验证许可证的功能
|
|
|
|
- ### 2024年3月11日
|
2024-03-11 02:20:13 +08:00
|
|
|
- 添加了`印花`笔刷,可以预览贴纸或者打印的效果,例如`logo`,`文字`或者`图案`
|
2024-03-11 02:16:25 +08:00
|
|
|
- 调整命令与功能面板从`右侧中心`移动到`右侧顶部`
|
|
|
|
- 在左下角添加了遥测信息,包括`FPS`,`Ping`和`帧率限制`
|
|
|
|
- 添加了左下角的`logo`
|
2024-03-11 02:20:13 +08:00
|
|
|
- 添加了自动加载Dll,现在`dll`会自动从`package.json`所在的目录自动搜索
|
|
|
|
- 添加了`自动填充`的笔刷,用于裁剪已经切下来的面,将会在准备好时可用(占位符)
|
2024-03-05 15:27:29 +08:00
|
|
|
### 2024年3月5日
|
|
|
|
- 更改动态编译器从`MCS`更改为`Roslyn`
|
|
|
|
- 添加了在左下角的`按键提示`
|
|
|
|
- 添加了位于菜单右侧的`辅助功能`
|
|
|
|
- 添加了基于世界空间的辅助3D参考
|
|
|
|
- 添加了基于屏幕空间的辅助2D参考
|
|
|
|
- 添加了位于上方的`创意工坊`快速访问按钮
|
|
|
|
- Mod管理器添加了`卸载`按钮,在列表中右键点击Mod可以卸载
|
|
|
|
- Mod管理器添加了`重载`按钮,可以快速重载Mod,用于快速调试
|
|
|
|
- 更改默认Mod图标
|
2024-03-04 18:45:21 +08:00
|
|
|
### 2024年1月25日
|
|
|
|
- 添加了运行时`MonoBleedingEdge`支持,可以在运行时动态编译`.cs`
|
|
|
|
- 添加了运行时安装`MonoBleedingEdge`支持
|
|
|
|
- 添加了基本用户设置
|
|
|
|
- 添加了初始化载入进度
|
2024-01-23 03:58:27 +08:00
|
|
|
### 2024年1月23日 提交0.0.3版本至`Gitea`,并更新版本号为`Eclair`
|
|
|
|
- 添加了`3`款内置笔刷
|
|
|
|
- 添加了`2`款内置模型
|
|
|
|
- 添加了`运行时检查器`,可以查看和编辑笔刷或其他数据的值
|
|
|
|
- 添加了文件系统,可以`保存`,`加载`和`另存为`
|
|
|
|
- 添加了相片模式,可以`隐藏UI`,渲染功能正在进行中
|
|
|
|
- 添加了命令模式,支持`撤销`和`重做`到指定步骤
|
|
|
|
- 添加了导出数据,直接`复制到剪贴板`,对于太长的数据不会显示在用户界面上
|
|
|
|
- 添加了Mod管理,可以`动态编译脚本`和`加载笔刷`或模型等资产
|
|
|
|
- 增强了Mod管理,可以`动态安装`,`启用`与`禁用`Mod,支持卸载资源,但卸载`插件类Mod`出于于C#本身的`AppDomain`限制,暂时无法实现
|
|
|
|
### 2023年12月3日及以前
|
|
|
|
尝试基于`Godot`创建基于`CSG`的切削应用,但是
|
|
|
|
- 性能非常拉,10G笔刷就能卡爆,移动端直接一个步骤卡死
|
|
|
|
- 不支持热更新和资源管理,一个发布就是几个G,一个小补丁都需要重新下载
|
|
|
|
- 非常复杂的图形API,需要自己实现各种各样的图形API
|
|
|
|
- 非常模糊的文档,例如对模型表面进行绘制需要自己实现太多的底层
|
2024-01-23 04:14:54 +08:00
|
|
|
- pia,突然就卡死了
|
|
|
|
- pia,突然又丢失绑定了
|
2024-01-23 03:58:27 +08:00
|
|
|
- 甚至连基本的`UI动态缩放`都没有,适配1080P就是1080P,适配2160P就是2160P,模糊得很
|
|
|
|
- 没有`UI Toolkit`这种现成的UI库,自带的UI库是上个世纪的产物
|
|
|
|
- 一个小改动都需要重新绑定,几乎等于重新配置`Rig`
|
|
|
|
- too more `issue` and `bug`
|
|
|
|
## 下载地址
|
|
|
|
### Unity版 [下载](http://server.bitfall.icu:3000/root/iFactory.Cutting.Unity/releases)
|
|
|
|
## 功能清单
|
|
|
|
- [x] 命令模式
|
|
|
|
- [x] 显示步骤
|
|
|
|
- [x] 撤销
|
|
|
|
- [x] 重做
|
|
|
|
- [x] 多笔刷
|
|
|
|
- [x] 空笔刷,用于查看模型
|
|
|
|
- [x] 点笔刷(圆),用于绘制点或自由绘制
|
|
|
|
- [x] 线笔刷,用于绘制线段,支持snap点以实现grid
|
|
|
|
- [ ] 文字笔刷,用于绘制文字
|
|
|
|
- [x] 程序点笔刷,可进行采样和手动输入点的坐标和半径
|
|
|
|
- [ ] 程序线笔刷,手动属于半径,线段组进行绘制
|
2024-03-11 02:20:13 +08:00
|
|
|
- [ ] 印花笔刷,用于预览贴纸或者打印的效果
|
2024-01-23 03:58:27 +08:00
|
|
|
- [x] 所有笔刷可预览
|
2024-03-11 02:20:13 +08:00
|
|
|
- [ ] 自定形状切削面板生成器
|
|
|
|
- [ ] 矩形
|
|
|
|
- [ ] 圆形
|
|
|
|
- [ ] 多边形
|
2024-01-23 03:58:27 +08:00
|
|
|
- [x] 运行时检查器
|
|
|
|
- [x] 查看数据
|
|
|
|
- [x] 编辑数据
|
|
|
|
- [x] 支持多种数据类型
|
|
|
|
- [x] int
|
|
|
|
- [x] float
|
|
|
|
- [x] float3
|
|
|
|
- [x] 支持动态调用`MethodInfo`
|
|
|
|
- [x] Mod支持
|
|
|
|
- [x] 启动时从`Mods`文件夹加载
|
|
|
|
- [x] 外部加载
|
|
|
|
- [x] 启用与禁用
|
|
|
|
- [ ] 依赖管理
|
2024-03-04 18:45:21 +08:00
|
|
|
- [x] 运行时编译环境
|
|
|
|
- [x] 运行时编译
|
|
|
|
- [x] 卸载编译器
|
2024-01-23 03:58:27 +08:00
|
|
|
- [ ] 创意工坊
|
|
|
|
- [ ] 上传Mod
|
|
|
|
- [ ] 下载Mod
|
|
|
|
- [ ] 订阅Mod
|
|
|
|
- [ ] 自动更新
|
|
|
|
## Bug清单
|
|
|
|
- [ ] 绘制圆环后,中间的部分不会被裁剪
|
2024-03-04 18:45:21 +08:00
|
|
|
- [x] 通过各种方式更改Mod后可能会阻塞Mod线程
|
|
|
|
- [x] 编译后功能丢失,例如无物料板和无法加载Mod
|
2024-01-23 03:58:27 +08:00
|
|
|
## 安装方式与相关依赖
|
|
|
|
直接解压下载好的`zip`并运行`iFactory-Cutting.exe`即可
|
|
|
|
## 如何自行编译
|
|
|
|
外部依赖库挺多的,功能可以用Mod添加,不建议直接更改并编译源码
|
2024-03-04 18:45:21 +08:00
|
|
|
|
2024-01-23 03:58:27 +08:00
|
|
|

|
|
|
|
|
|
|
|
## 如何创建Mod
|
|
|
|
参考类库:[iFactory-Cutting.Mod.Examples](http://server.bitfall.icu:3000/root/iFactory.Cutting.Mod.Examples.git)
|
|
|
|
|
|
|
|
Api文档:<font color=grey>等待创建gitbook</font>
|
|
|
|
### 脚本类Mod
|
|
|
|
1. 创建一个`C#`类库项目
|
|
|
|
2. 引用[BITKit](http://server.bitfall.icu:3000/root/BITKit.git)
|
|
|
|
3. 引用[iFactory-Cutting](http://server.bitfall.icu:3000/root/iFactory.Cutting.git)
|
|
|
|
4. 创建一个类并继承`MyMod`
|
|
|
|
5. 根据基类的注释,重写对应的方法
|
|
|
|
6. 在软件中点击屏幕左上角的`Mod`按钮,选择`加载`,选择`.cs`文件并加载
|
|
|
|
### 资源类Mod
|
|
|
|
这个需要用到编辑器,需要了解`YooAsset`的原理
|
|
|
|
1. 点击最上面工具栏菜单的`YooAsset/AssetBundle Collector`
|
|
|
|
2. 在左侧创建新的`Package`,然后收集需要的资源
|
|
|
|
3. 这里面的步骤需要自行了解`YooAsset`的收集与打包
|
|
|
|
4. 在打包完成后,同样的,创建一个`脚本类Mod`
|
|
|
|
5. 重写`PackageName`方法,值为`Package`的名字
|
|
|
|
6. 在软件中点击屏幕左上角的`Mod`按钮,选择`加载`,选择`.cs`文件并加载
|
|
|
|
### 解决Mod依赖
|
|
|
|
等待更新中...
|