editor - 在 Unreal、Blender、Alteryx 等中实现基于节点的工作流的一般原则?

标签 editor nodes graph-theory

这个话题对谷歌来说很难,因为“node”(不是 node.js)和“graph”(不,我不是要制作图表)。

尽管我是一个非常全面且经验丰富的开发人员,但我无法拼凑出一个心智模型,说明这些编辑器如何以合理的方式、以合理的顺序从一个节点到另一个节点获取数据。尤其是在 Alteryx 示例中,因为排序模块,例如,在继续之前需要其整个上游数据集。并且一些节点可以将单个输出发送给多个下游消费者。

我能够理解树和以前的数据结构类(class)中没有的东西,并且成功地理解和适应了 https://www.python.org/doc/essays/graphs/ 中的基本图概念。在一个真实的项目中。但那是一个静态结构,数据没有从一个节点传递到另一个节点。

我应该从哪里开始和/或我错过了什么概念,我可以使用实现这样的东西?让用户将一些框链接在一起,通过一些基本操作(如排序和连接)对文本文件或数据记录进行切片和切 block ?我正在使用 C#,但答案应该与语言无关。

最佳答案

这种范式称为 Dataflow Programming ,它适用于从指令传递到要处理的指令的数据流。

数据流程序可以以文本或可视形式进行编程,除了您提到的软件之外,还有很多程序包含某种数据流语言。

要创建自己的数据流语言,您必须:

  • 创建代表处理节点的程序模块或对象,实现不同类型的数据处理。处理节点通常有一个或多个数据输入和一个或多个数据输出,并在它们内部实现一些数据处理算法。节点也可能具有控制给定节点如何处理数据的控制输入。典型的数据流算法从一个或多个输入数据流值计算输出数据样本,例如 FIR filters做。然而,处理算法也可以有数据值反馈(输出值以某种方式与输入值混合),如 IIR filters ,或以某种方式累加值来计算输出值
  • 创建用于在处理节点之间传递数据的标准 API。对于不同种类的数据和控制信号,它可以是不同的,但它必须是标准的,因为处理节点应该相互“理解”。数据通常作为纯值传递。控制信号可以是简单的值、事件或更高级的控制语言 - 取决于您的需要。
  • 创建安排以链接您的节点并在它们之间传递数据。您可以创建自己的程序机制或使用一些标准的东西,如 pipes , message queues等。例如,此功能可以实现为树状结构,其节点是您的处理节点,并具有对下一个节点及其适当输入的引用,该输入处理来自当前节点输出的数据。
  • 创建某种节点迭代器,从数据流图的开头开始并迭代它所在的每个处理节点:
  • 提供下一个数据输入值
  • 调用节点数据处理方法
  • 更新数据输出值
  • 将更新的数据输出值传递给下游处理节点的输入
  • 创建用于配置节点参数和它们之间的链接的工具。它可以是使用文本编辑器编辑的简单文本文件,也可以是使用 GUI 进行编辑的复杂可视化编辑器。绘制数据流图。

  • 关于您关于 Sort 的注释Alteryx 中的模块- 也许数据值只是在这个模块内累积然后排序。

    here你可以找到更详细的描述Dataflow编程语言。

    关于editor - 在 Unreal、Blender、Alteryx 等中实现基于节点的工作流的一般原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49375288/

    相关文章:

    c++ - 如何快速测试 C 或 C++ 片段?

    c# - 如何仅列出位于根节点正下方的 XML 节点

    swift - Spritekit 禁用特定 View 区域的触摸

    css - sass 去声明

    editor - Visual Studio Code - 自定义单词分隔符

    sql - 节点集上的 XPath 查询像 SQL 一样工作

    algorithm - 所有可能的井字游戏获胜组合

    python - 二分图所有可能的最大匹配

    python - 从 networkx 中的有向图中删除节点,同时保留子节点并重新映射它们的边

    excel - 如何在 VBA (Excel 2010) 中将默认情况恢复为变量?