NodeFLow驱动说明
NodeFLow驱动说明
(TODO 部分设计未实现)
节点流驱动分类,及选用策略
是否自动
- 自动运行
- 手动运行
这里选择手动运行。理由:
- 自动运行更适用于所有节点均耗时较少的情况,如简单的计算节点。而手动运行更适用于应对复杂和高耗时的任务
- 编辑过程中,会出现不完整代码、不完整url等。此时运行容易出错
- 手动运行也可以模拟自动运行,自动加一个定时器或监控变换的开始板机,就行了
- 仅显示版。最简单的版本是仅显示,得益于以
节点项
为中心的构建策略,用户可以无需编程自定义各种自定义节点,用于显示各种结构。这种节点流用于显示,并不要求运行和实现运行代码
驱动方式
- 数据节点驱动
- 多用于材质流程等
- 例如:各种三维软件的材质编辑都是这种、Comfyui也是这种
- 驱动:节点X有多个上游数据流时,等所有上游数据流完成后,该节点X开始运行
- 特点:数据socket的输入往往只有一个,一个节点可以有多个输入的数据socket。
本质上也能看成是特殊的流程socket。开始节点会自动判断 - 实现:节点的状态分为:未运行过、运行中、运行结束 (数据准备就续)
- 流程节点驱动
- 多用于流程控制等
- 例如:这种比较少像UE
- 驱动:节点X上的输入的流程socket被激发后,立即运行该节点
- 特点:流程socket的输入可以有多个,一个节点往往只有一个输入的流程socket
- 混合节点驱动
- 例如:像UE就是这样
- 驱动:首先,没有流程socket的节点先自动触发并完成工作。然后,有流程socekt的节点从头开始进行触发。
节点X上的输入流程socket被激发后,此时其也应该会满足另一个条件:其输入的数据socket均为就续状态。
即该节点X同时满足数据节点和流程节点的触发条件,此时会自动触发 - 特点:将socket分为数据socket和流程socket,各自沿用各自的特性
数据一致性问题
数据源
- 源数据 (可能是非Json,可能是非规范数据)
- 自维护数据 (json,直接与源数据互相序列化和反序列化。带嵌套结构)
- 库维护数据 (包含库默认信息。无嵌套结构。通常包含自维护数据的对象)
一致性
- 第一和第二通常不用关心一致性,都是用手动序列化和反序列化直接关联的。这里说一致性主要是第二和第三个数据之间的一致性
- 节点内data的数据一致性也不用担心,因为这部分是第三个包含第二个的
- 主要需要关注的有:
- 一是数据驱动,需要 updateNodeData 激发 (如
isRunning
状态) - 二是增删、id、位置。这种不在节点里的data数据所包含的内容
- 一是数据驱动,需要 updateNodeData 激发 (如
多重类型
- itemType (node、socket、edge)
- refType (socketType/handleType)
- valueType (string、enum、color、……)
值
- defaultValue (value)
- cacheValue
链接到当前文件 1