
Graphite 如何用 graphene-cli 编译检查 .graphite 文档并打印 proto 网络【免费下载链接】GraphiteCommunity-built comprehensive 2D content creation appplication for graphic design, digital art, and interactive real-time motion graphics powered by a node-based procedural graphics engine项目地址: https://gitcode.com/GitHub_Trending/gr/Graphite在开发 Graphite 的节点图功能时你经常需要验证一份.graphite文档能否被 Graphene 编译器正确编译并查看编译产物——proto 网络ProtoNetwork即文档图NodeNetwork与运行时BorrowTree之间的中间表示。Graphite 仓库自带一个名为graphene-cli的命令行工具位于 node-graph/graphene-cli/src/main.rs它的compile子命令会真实地走一遍「读取文档 → 预处理 → 编译为 ProtoNetwork」的完整流程--print-proto参数可以把编译出的 proto 网络打印到终端。本文介绍如何从本地仓库运行该工具、检查一份文档、并读取输出结果。环境依赖按照志愿者指南 website/content/volunteer/guide/project-setup/_index.md构建 Graphite 需要Rust最新 stable 版本Node.js最新 LTS 版本Git任意较新版本将仓库克隆到本地后所有命令都在仓库根目录下执行。需要说明的一点compile命令在执行编译前会先创建一个 GPU 上下文源码中对应日志Creating GPU context而graphene-cli默认启用的 feature 就是wgpu见 node-graph/graphene-cli/Cargo.toml。因此编译检查依赖本机具备可用的 GPU 图形环境。运行 graphene-cli仓库根目录的cargo run并不是原生 cargo而是 Graphite 自带的开发构建系统实现在 tools/cargo-run/src/main.rs。它会先检查系统依赖版本再按目标分发。其用法说明中给出的形式是cargo run [command] [target] [profile] [-- [args]...]其中target取值为web默认、desktop或clicli对应的就是 Graphene CLI。用法文本中给出的示例是cargo run cli -- --help--之后的参数原样传给 CLI。第一次运行会先编译相关 crate耗时较长之后可复用构建缓存。运行--help可以看到compile、export等子命令确认工具链工作正常后进入下一步。如果你希望绕过这个包装器直接调用原生 cargo也可以用 workspace 成员名运行graphene-cli是 Cargo.toml 中声明的 workspace 成员cargo run -p graphene-cli -- 子命令及参数下文主路径统一使用cargo run cli -- ...形式。编译检查 .graphite 文档compile子命令接受一个位置参数.graphite文档路径以及一个可选的--print-proto缩写-p开关。仓库的 demo-artwork/ 目录自带若干示例文档例如demo-artwork/red-dress.graphite可以直接拿来验证流程。只做编译检查、不打印 proto 网络cargo run cli -- compile demo-artwork/red-dress.graphite这里的文档路径替换为你自己编写的.graphite文件路径。该命令会读取文档、用 preprocessor 展开网络、再调用Compiler编译为ProtoNetwork对应 node-graph/graphene-cli/src/main.rs 中的compile_graph函数。如何判断检查通过进程正常退出、无错误输出。不带-v时日志级别为 Error只有出错才会打印内容。文档加载按扩展名区分源码中的逻辑见 node-graph/graphene-cli/src/main.rs.gdd扩展名按新的归档格式打开资源从其自带 registry 解析资源哈希其余扩展名包括.graphite按旧版legacy文档处理在空 registry 上预处理。也就是说compile同时接受.gdd与 legacy.graphite两种文档。用 --print-proto 打印 proto 网络加上--print-proto后编译出的ProtoNetwork会通过Display实现打印到标准输出cargo run cli -- compile --print-proto demo-artwork/red-dress.graphite-p是等价的短形式。输出的格式由 node-graph/graph-craft/src/proto.rs 中ProtoNetwork的Display实现决定输出以Proto Network with nodes:开头随后逐节点展开每个节点给出Node: 节点标识符、Input: Call Argument (type ...)调用参数类型以及构造参数取值型、子节点引用或内联 Rust 代码三种形式之一网络中的output节点会作为入口被优先展示。因此看到以Proto Network with nodes:开头的结构化输出即可确认文档已成功编译为 proto 网络对照其中列出的节点标识符和构造参数可以核对节点展开preprocess 阶段是否符合预期。用 -v 控制日志级别-v--verbose是全局参数可以重复指定。源码中的映射为-v次数日志级别0默认Error1Info2Debug3 及以上Trace例如加上单个-v可以看到Creating GPU context等信息级日志帮助确认编译流程走到了哪一步cargo run cli -- compile -v demo-artwork/red-dress.graphite判断失败与常见报错失败时进程以非零状态退出并打印错误说明通过cargo run cli包装器运行时包装器还会在终端追加一行Error: 错误信息见 tools/cargo-run/src/main.rs。源码中可见的报错文本包括Failed to read document 路径: error—— 文档文件读取失败通常是路径错误或文件不存在Failed to open document: error——.gdd归档格式打开失败编译阶段则由GraphErrorType的格式化输出描述类型错误例如Input node id is not present in the typing context输入节点不存在于类型上下文中、No implementations found、This input type is incompatible:并列出 found/expected 类型等见 node-graph/graph-craft/src/proto.rs。看到上述任一错误时可对照node_path与节点标识符回到文档中定位问题节点。限制与说明compile子命令在没有--print-proto时不产生任何 stdout 输出它的价值就是把「加载 预处理 编译」当作一次校验跑通proto 网络打印的是编译后的中间表示节点数量会因预处理展开如子网络拍平而多于文档中的原始节点这与 node-graph/README.md 描述的NodeNetwork::flatten和 proto 图转换流程一致本文只覆盖compile子命令graphene-cli的export导出 SVG/PNG/JPG/GIF与extract-legacy-doc是独立任务不在本文范围内。确认文档可以编译、proto 网络结构符合预期之后就可以在 Graphite 编辑器的节点图中继续调整该文档了。【免费下载链接】GraphiteCommunity-built comprehensive 2D content creation appplication for graphic design, digital art, and interactive real-time motion graphics powered by a node-based procedural graphics engine项目地址: https://gitcode.com/GitHub_Trending/gr/Graphite创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考