ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TiXL Graph 窗口完全指南:节点画布、磁力吸附连线与复制/断开工作流

TiXL Graph 窗口完全指南:节点画布、磁力吸附连线与复制/断开工作流 TiXL Graph 窗口完全指南节点画布、磁力吸附连线与复制/断开工作流【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3TiXLtooll3的Graph 窗口是整个项目搭建的核心画布你在其中放置算子Operator、把输入与输出接线成实时渲染的节点网络。本文以官方参考文档 Graph.md 为主线结合编辑器源码深入剖析画布交互的底层实现读完你将掌握 Graph 窗口的完整操作方式——从磁力吸附的连线习惯、CtrlD系列复制技巧到抖动断开与断开节点零渲染开销的实战策略。Graph 窗口TiXL 项目构建的主画布Graph 窗口的角色在文档中被一句话点明you build a project by placing operators and wiring their inputs and outputs together——放置算子、接线这就是 TiXL 项目构建的全部基础动作。它对应编辑器中负责节点图渲染与交互的MagGraph子系统Editor/Gui/MagGraph其核心画布实现为MagGraphView。进入/深入一个算子的图有两条最常用的路径打开算子钻入子图文档所说的 Open an operator to dive into its graph 即导航进入某个算子的内部构图。在源码的默认键位中选中节点后按IOpenOperator、退出用UCloseOperator见 FactoryKeyMap.cs同时支持基于导航历史的后退/前进对应Alt←/Alt→NavigateBackwards/NavigateForward。双击空白处浏览并添加新算子文档指出 double-click empty space to browse and add new ones。其背后是 SymbolBrowsing.cs 绘制的符号浏览器——按类别与命名空间组织、经UpdateLibPage()生成的精选符号总览再配合右键上下文菜单GraphContextMenu.cs完成放置。这两条路径构成了 Graph 窗口的纵向钻取深入子图与横向扩展新增节点双向工作流。磁力吸附垂直堆栈与水平对齐AltA垂直堆栈自上而下可读的算子链文档强调算子之间会磁力吸附Operators snap together magnetically因此一条算子链自上而下排布读起来就像一份栈结构。这个行为在源码中有精确实现MagItemMovement内部的Snapping类在拖拽过程中持续测试节点对的吸附可能性MagItemMovement.Snapping.cs垂直吸附当输出项的 0 号输出线与输入项的 0 号输入线主出→主入对准时触发形成文档所述的像栈一样的纵向链条水平吸附任何类型兼容的输出线对输入线触发用于把相关算子横向并排吸附阈值IsSnapped BestDistance MagGraphItem.LineHeight * (IsInsertion ? 0.35 : 0.5f)——即两条线锚点距离小于半行高即吸住插入场景在既有连线中间插入算子的阈值更严格0.35 行高。拖拽过程的完整调用链位于 MagItemMovement.csUpdateDragging()先检测抖动再HandleSnappedDragging()处理吸附吸附成立后走TryCreateNewConnectionFromSnap()新建连线或TrySplitInsert()插入式拆分既有连线。水平对齐AltA 整理连线垂直堆栈读起来像栈但如果关联算子都纵向堆叠连线会拉得很长。文档给出的习惯是用水平吸附AltA对齐相关算子让连接线保持整洁。这里的 AltA 在源码中对应UserActions.AlignSelectionLeftFactoryKeyMap.cs当选中节点数大于 1 且处于默认交互状态时触发Modifications.AlignSelectionToLeft()KeyboardActions.cs把选中算子统一左对齐。复制CtrlD 与 CtrlShiftD 的差异文档点出的两个高频复制习惯在键位表FactoryKeyMap.cs与处理逻辑KeyboardActions.cs中一一对应快捷键动作行为要点CtrlDDuplicate在鼠标位置复制所选节点实现为复制到剪贴板 粘贴且仅在确有复制内容时才粘贴——源码注释明确说明这是为了避免复制输入节点时粘贴到过期的剪贴板残留CtrlShiftDDuplicateWithConnections复制并保留外部接线关系在鼠标位置粘贴且不触碰剪贴板CtrlShiftD的接线保留逻辑值得细看它实现在 Modifications.cs 的DuplicateWithConnections()中规则非常考究外部输入 → 被复制的目标外部源连入所选集合的连线会在副本上重建并保留原有多输入槽位索引被复制的源 → 外部多输入副本的输出会追加到原连接之后multiInputIndex 1把吸附在原输入线下方的节点顺势向下推效果类似一次交互式插入连线外部单输入故意跳过注释明确说明adding the duplicates output there would replace (steal) the originals connection——单输入会被新连接顶替所以DuplicateWithConnections特意不抢原节点的连接最终粘贴位置取当前鼠标位置ImGui.GetMousePos()反变换到画布坐标。抖动断开与兼容重连文档描述了一个独特的交互抖动shaking算子使其断开同时重连兼容的输入。这个抖一抖就断开在源码中的实现链路是MagItemMovement.cs拖拽过程中_shakeDetector.TestDragForShake(ImGui.GetMousePos())检测到抖动若拖拽项存在连线_connectionsToDraggedItems.Count 0调用HandleShakeDisconnect()最终执行NodeActions.DisconnectNodes(...)断开所选节点的所有连接。拖拽松手unsnap时还有一整套断线与收拢处理HandleUnsnapAndCollapse()删除拖拽过程中脱开的连线并通过TryCollapseDisconnectedInputs()/DisconnectedInputWouldCollapseLine()判断某条输入线断开后是否应折叠隐藏MagItemMovement.cs——这正是断开后画布自动整理的底层机制。除抖动外还有两种等效断开方式快捷键AltDDisconnectFactoryKeyMap.cs以及选中节点后右键菜单中的 Disconnect 项GraphContextMenu.cs。断开节点零渲染开销放心保留备用节点文档给出的重要结论A disconnected operator costs nothing at render time, so its safe to keep spare copies around until you wire them in.从源码结构看TiXL 的求值以连接关系为驱动算子实例仅在构图求值遍历中被更新未连入有效链路的算子不会参与渲染期计算相关求值机制见 Core/Operator/EvaluationContext.cs 与 Instance.OperatorHelpers.cs。因此把暂时用不到的算子留在画布上作为备用零件、之后接线启用不会带来渲染开销也省去反复新建算子的成本。与之配套的还有ShiftD禁用与ShiftB旁路切换可用于临时停用而不必删除连线。Graph 窗口快捷键速查表以下键位均来自编辑器出厂键位表 FactoryKeyMap.cs可在快捷键编辑器中重映射动作枚举见 UserAction.cs快捷键动作用途CtrlD/CtrlShiftDDuplicate / DuplicateWithConnections在鼠标处复制后者保留外部接线AltAAlignSelectionLeft水平对齐所选算子整理连线AltDDisconnect断开所选算子ShiftD/ShiftBToggleDisabled / ToggleBypassed禁用 / 旁路所选算子I/UOpenOperator / CloseOperator钻入 / 退出算子子图Alt←/Alt→NavigateBackwards / NavigateForward沿导航历史前进/后退CtrlFSearchGraph在图内搜索FFocusSelection聚焦到所选内容EnterRenameChild重命名所选子节点Delete/BackspaceDeleteSelection删除所选CtrlC/CtrlV/CtrlShiftVCopy / Paste / PasteValues复制、粘贴、仅粘贴数值CtrlZ/CtrlShiftZUndo / Redo撤销 / 重做GLayoutSelection自动布局所选节点的输入相关源码索引官方参考文档.help/references/topics/ui/Graph.mdGraph 画布与交互核心Editor/Gui/MagGraph/Ui/MagGraphView.cs、Editor/Gui/MagGraph/Interaction/MagItemMovement.cs磁力吸附算法Editor/Gui/MagGraph/Interaction/MagItemMovement.Snapping.cs键盘动作分发Editor/Gui/MagGraph/Interaction/KeyboardActions.cs保留接线的复制实现Editor/Gui/MagGraph/Interaction/Modifications.cs符号浏览与放置Editor/Gui/MagGraph/Interaction/SymbolBrowsing.cs、Editor/Gui/MagGraph/Interaction/GraphContextMenu.cs出厂键位表与动作枚举Editor/Gui/Interaction/Keyboard/FactoryKeyMap.cs、Editor/Gui/Interaction/UserAction.cs实践建议新建项目后先熟悉三条核心路径——双击空白处浏览放置算子建立纵向主链AltA横向对齐相关节点收拢连线CtrlShiftD带着接线关系复制模块暂时用不到的算子放心留在画布上断开状态下不会产生任何渲染开销。【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表