Go to file
CortexCore c1f51826b3 1 2024-04-22 03:48:37 +08:00
Assets 1 2024-04-22 03:48:37 +08:00
Mods/ifactory.cutting.mod.auto_save_images 1 2024-04-16 04:15:06 +08:00
MonoBleedingEdge/lib/mono breakpoint 2024-03-04 18:45:21 +08:00
ProjectSettings 1 2024-04-16 04:15:06 +08:00
ReadMe
UIElementsSchema
.gitignore
README.md 1 2024-04-16 04:15:06 +08:00

README.md

iFactory 切削应用仿真

Clip_20240123_030034.png

通过直接在模型上绘制,对平面甚至任意表面进行切削仿真

支持多种笔刷,可通过Mod自定义笔刷

支持多种模型,可通过Mod自定义模型

原生支持Mod,可以实现任何功能,例如:

  • 接入真实切削机
  • 模拟切削过程
  • 导出切削命令数据

操作方式

  • 按住鼠标中键进行视角旋转
  • 按住鼠标中键Shift进行视角移动
  • 滑动鼠标滚轮进行视角缩放
  • 选择笔刷后按住鼠标左键进行绘制,不按下则为预览 几乎所有操作都为命令,可在用户界面右侧撤销和重做命令

支持线上创意工坊,用于可通过Web浏览Mod并订阅,该应用会自动下载并安装Mod

类库:iFactory-Cutting

仅Windows平台应用支持

  • Windows
  • Android
  • IOS (花钱买IOS开发者才行)
  • Linux(我想没有支持的需要)

当前需求

上面提出了一个需求:我们需要一个仿真切削应用,用于快速模拟并展示切削结果和过程

不仅需要切削,还需要对成品材料进行反推,即通过切削结果反推切削过程

很明显,这个问题一开始涉及到了各种几何和计算机图形的问题,再经过各种尝试后,我们得到了相对最佳的解决方案:

基于自定义着色器Alpha Clip对绘制部分进行裁剪(指创建遮罩)实现模拟切削的效果

通过对模型材质直接绘制,计算出绘制的点,并通过Alpha Clip着色器对模型进行裁剪,实现切削效果

不仅仅需要出厂自带的模型和笔刷,我们还需要支持自定义笔刷和自定义模型,这就是Mod支持

我们的客户可能会有各种各样的需求

  • 当客户无法自行实现时
  • 或我们有新想法时
  • 或有用户想分享创意时

客户就需要创建工单,我们对工单进行处理,并发布到线上,这就是创意工坊

为什么需要Mod创意工坊?

你也不想每次有更新都要重新下载安装吧,而且我们也不想每次都要重新发布吧

你也不想每次都下几个G的资源吧,而且我们也不想每个小更改都需要打包吧

当前问题

### 编译后,加载不了Mod,没有物料板 目前编译后未收到报错,功能也无法使用,正在解决中

在平面上绘制的一个圆,中间的部分不会被裁剪

这不会涉及到物理,这相对来说只是画画

所以会出现一些与物理不符的情况,因为这是一个切削仿真,而不是物理仿真

为什么?

因为本质上就是画了一个圆环而不是圆圈,要圆圈得用点笔刷绘制一个半径足够的圆

实时洪水填充和扫描线填充相对于至少1024 x 1024px的图像来说性能消耗巨高

如何解决?

使用Void笔刷绘制圆,将应该裁剪的部分手动填充,Void笔刷不会被记录到导出的切削数据中

为什么还没实现反推?

这个需要AI,需要GPT,需要GPT4,需要DALL·E

这个要💰,很多的💰,一个月25$的哪种

Clip_20240123_031845.png

运行配置

CPU: Intel 10400F及以上

GPU: GTX1050及以上

RAM: 16G DDR4及以上

剩余储存空间: 2GB或以上

操作系统: 仅限于64位Windows 10,Windows 11或以上

更新日志

2024年3月12日

  • 添加了IUXWaiting,现在遇到动态加载时会显示加载的项目

现在可以看到卡住是因为什么原因(例如加载)了

同样可以通过该方式验证许可证,该接口会禁用用户操作,提供动态验证许可证的功能

  • 2024年3月11日

  • 添加了印花笔刷,可以预览贴纸或者打印的效果,例如logo,文字或者图案
  • 调整命令与功能面板从右侧中心移动到右侧顶部
  • 在左下角添加了遥测信息,包括FPS,Ping帧率限制
  • 添加了左下角的logo
  • 添加了自动加载Dll,现在dll会自动从package.json所在的目录自动搜索
  • 添加了自动填充的笔刷,用于裁剪已经切下来的面,将会在准备好时可用(占位符)

2024年3月5日

  • 更改动态编译器从MCS更改为Roslyn
  • 添加了在左下角的按键提示
  • 添加了位于菜单右侧的辅助功能
  • 添加了基于世界空间的辅助3D参考
  • 添加了基于屏幕空间的辅助2D参考
  • 添加了位于上方的创意工坊快速访问按钮
  • Mod管理器添加了卸载按钮,在列表中右键点击Mod可以卸载
  • Mod管理器添加了重载按钮,可以快速重载Mod,用于快速调试
  • 更改默认Mod图标

2024年1月25日

  • 添加了运行时MonoBleedingEdge支持,可以在运行时动态编译.cs
  • 添加了运行时安装MonoBleedingEdge支持
  • 添加了基本用户设置
  • 添加了初始化载入进度

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
  • 非常模糊的文档,例如对模型表面进行绘制需要自己实现太多的底层
  • pia,突然就卡死了
  • pia,突然又丢失绑定了
  • 甚至连基本的UI动态缩放都没有,适配1080P就是1080P,适配2160P就是2160P,模糊得很
  • 没有UI Toolkit这种现成的UI库,自带的UI库是上个世纪的产物
  • 一个小改动都需要重新绑定,几乎等于重新配置Rig
  • too more issue and bug

下载地址

Unity版 下载

功能清单

  • 命令模式
    • 显示步骤
    • 撤销
    • 重做
  • 多笔刷
    • 空笔刷,用于查看模型
    • 点笔刷(圆),用于绘制点或自由绘制
    • 线笔刷,用于绘制线段,支持snap点以实现grid
    • 文字笔刷,用于绘制文字
    • 程序点笔刷,可进行采样和手动输入点的坐标和半径
    • 程序线笔刷,手动属于半径,线段组进行绘制
    • 印花笔刷,用于预览贴纸或者打印的效果
  • 所有笔刷可预览
  • 自定形状切削面板生成器
    • 矩形
    • 圆形
    • 多边形
  • 运行时检查器
    • 查看数据
    • 编辑数据
    • 支持多种数据类型
      • int
      • float
      • float3
    • 支持动态调用MethodInfo
  • Mod支持
    • 启动时从Mods文件夹加载
    • 外部加载
    • 启用与禁用
    • 依赖管理
    • 运行时编译环境
      • 运行时编译
      • 卸载编译器
  • 创意工坊
    • 上传Mod
    • 下载Mod
    • 订阅Mod
    • 自动更新

Bug清单

  • 绘制圆环后,中间的部分不会被裁剪
  • 通过各种方式更改Mod后可能会阻塞Mod线程
  • 编译后功能丢失,例如无物料板和无法加载Mod

安装方式与相关依赖

直接解压下载好的zip并运行iFactory-Cutting.exe即可

如何自行编译

外部依赖库挺多的,功能可以用Mod添加,不建议直接更改并编译源码

Clip_20240123_034839.png

如何创建Mod

参考类库:iFactory-Cutting.Mod.Examples

Api文档:等待创建gitbook

脚本类Mod

  1. 创建一个C#类库项目
  2. 引用BITKit
  3. 引用iFactory-Cutting
  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依赖

等待更新中...