这些只是对此事的一些想法,我认为需要一些计划。我不知道任何解释如何构建节点编辑器的教程,但由于存在如此多的节点编辑器,也许你最好的灵感来源可能是其他人的代码库。
我认为您可以查看现有技术:
https://architecture.mit.edu/computation/project/visual-programming-three-dimensions-visual-representations-computational-mental
另外,我认为您可以这样计划:
- 弄清楚它会是什么样子(也许你可以先在搅拌机上做一个模型)
- 想想将允许什么样的交互,鼠标将如何工作?
- 考虑使用现有的 3d 框架,如 openframeworks 或 unity
- 设计一个命令面板或键盘快捷键列表
- 研究现有的 2d 笔记编辑器,考虑评估 John Paul Morrison 的工作(基于流的编程)以及 NoFlo 或 PyFlow 之类的东西,你可以研究那些有实际用户的东西,比如 Unreal Node Editor,或者最近我认为 Unity也有一个。
- 设计一个执行引擎(代码将如何实际运行,输入端口,输出端口等)。
- 考虑您将用于保存/加载网络的格式,是 sqlite 吗?json?您是否需要存储节点的坐标和维度以及节点之间的连接?
- 如果要定位一个新节点,它会放在哪里?您是否需要指示 3d 空间中的任意点,还是让新节点位置相对于现有对象更好?
- 组件属性编辑器可能很重要,每个节点可能都有自己的一组属性,每个节点是否都是自定义的,带有用于编辑的自定义 ui?还是所有节点都有一个通用属性编辑器?应该做出这些决定。
自定义节点属性可用于使用户界面更容易,但全局属性编辑器将允许您相对便宜地创建许多组件。
需要支持哪些操作?你需要自动布局算法,比如graphviz的点吗?
运行时是否允许逐步执行?节点统计?实时可视化?
考虑一下你的目标市场是谁,以及为什么这个工具会在现有工具之外有用,是音乐艺术家使用下一个 vvvvv 吗?或者是图形艺术家制作下一个着色器?对Web开发有用吗?还是针对特定的利基市场?
我希望您会发现这些想法和想法在您的过程中很有用,我期待您将构建的东西。