图形学游戏开发3D渲染【免费下载链接】Babylon.jsBabylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.项目地址https://gitcode.com/gh_mirrors/ba/Babylon.js点击查看免费下载导读tools/nge-mcp-server是 Babylon.js 官方仓库中面向 AI Agent 的 MCPModel Context Protocol服务它把 Babylon.js 的 Node Geometry节点几何创作能力封装成一组标准化的 MCP 工具让 AI 或任意 MCP 客户端可以通过创建图 → 加节点 → 连线 → 设属性 → 校验 → 导出的方式纯文本地构建可在运行时解析的程序化几何体。读完本文你将掌握该服务的全部工具与资源清单、典型工作流、如何构建运行、导出 JSON 如何被 Scene MCP 消费以及底层图管理器GeometryGraphManager的序列化与校验原理。该服务属于 Babylon.js 官方 MCP 生态的一部分与 Scene MCP、Node Geometry Editor 协作覆盖AI 自动生成几何图 → 图数据序列化为 NGE JSON → 编辑器或运行时消费的完整链路。服务定位为 AI 代理提供的 Node Geometry 创作入口在 Babylon.js 中Node GeometryNGE是一种基于图的可视化程序化几何构建器不再用代码逐个创建 Mesh而是连接一个个带类型的块Block图在运行时求值生成网格顶点数据。而nge-mcp-server正是把这一套能力以 MCP 协议暴露给 AI 的桥梁。从 src/index.ts 的实现看该服务基于官方 MCP SDK 构建McpServer注册名为babylonjs-node-geometry版本1.0.0传输层使用标准StdioServerTransportstdio 是本地工具服务器的标准 MCP 传输方式全部几何数据托管在一个单例GeometryGraphManager中见 ngeMcpCommon/src/geometryGraph.ts同时挂载一个基于 SSE 的编辑器会话服务器McpEditorSessionController默认端口 3001用于把图的变更实时推送给 Node Geometry Editor 的 MCP 会话面板。服务暴露的能力在 README.md 中概括为六类能力说明创建与管理内存中的 Node Geometry 图多张图可共存以名称区分添加块、连接端口、设置块属性覆盖增删改查与连线全操作检查图结构并校验几何图输出可读描述与校验问题清单导出与导入 NGE JSON与编辑器 / 运行时格式互通从 Babylon.js Snippet 导入通过 Snippet ID 拉取在线示例保存到 Babylon.js Snippet把图存为可分享的 Snippet典型工作流一次完整的程序化几何创作管线README 给出了最核心的调用链create_geometry - add_block - connect_blocks - set_block_properties - validate_geometry - export_geometry_json服务端在注册时把这条工作流固化进了 MCP 的instructions字段见 src/index.ts并附加两条铁律每个几何图必须有一个GeometryOutputBlock唯一输出节点否则几何体无法构建连线之前先用get_block_type_info查询端口的类型避免接错。服务内置的提示模板create-box-geometrysrc/index.ts给出了最小可运行示例的逐步指令翻译为实际工具调用序列如下1. create_geometry with name MyBox 2. Add BoxBlock named box 3. Add GeometryOutputBlock named output 4. Connect box.geometry → output.geometry 5. validate_geometry, then export_geometry_json这一序列对应的内存图就是一个BoxBlock直连输出节点导出的 JSON 与仓库自带的示例 examples/SimpleBox.json 完全一致customType为BABYLON.NodeGeometry两个 blockBoxBlockid1、GeometryOutputBlockid2outputNodeId指向 2连接关系记录在目标块输入的targetBlockId/targetConnectionName字段中并附带编辑器布局数据editorData.locations。构建与运行README 指定了包管理命令与可执行二进制名二进制名全局可执行文件babylonjs-node-geometry构建与启动npm run build -w tools/nge-mcp-server npm run start -w tools/nge-mcp-server对应 package.json 中的脚本build执行rollup -c打包start执行node dist/index.js启动另有devtsc --watch与cleanrimraf dist脚本。该包是私有包private: true版本1.0.0依赖包括modelcontextprotocol/sdkMCP 协议 SDKtools/mcp-server-core通用 MCP 编辑器会话控制器会话管理、SSE 通知、文件读写 schema 等tools/nge-mcp-common共享的浏览器安全的图管理器与块目录tools/snippet-loaderSnippet 服务加载/保存zod工具输入参数的运行时校验 schema。启动时服务监听 stdioAI Agent或任何 MCP 客户端通过标准输入输出与之通信若调用create_geometry、get_session_url等工具还会在本机起一个 SSE 会话服务默认端口 3001返回可在 Node Geometry Editor 的 MCP 会话面板中粘贴的 URL。工具集深度剖析在 src/index.ts 中共注册了 20 余个工具可按下表分类使用分类工具几何生命周期create_geometry、delete_geometry、clear_all、list_geometries块操作add_block、add_blocks_batch、remove_block、set_block_properties连线connect_blocks、connect_blocks_batch、disconnect_input查询describe_geometry、describe_block、list_block_types、get_block_type_info校验validate_geometry导出/导入export_geometry_json、import_geometry_json、import_from_snippet在线编辑器get_snippet_url、save_snippet实时会话get_session_url、start_session、close_session、stop_session_server属性设置add_block/set_block_properties的 properties 契约add_block的properties参数是键值对不同块类型的合法键由 blockRegistry.ts 中的propertyMetadata约束非法键会直接返回错误。常见类型GeometryInputBlocktypeInt/Float/Vector2/Vector3/Vector4/Matrix、contextualValueNone/Positions/Normals/UV/VertexID/FaceID 等、value常量值、min/maxInspector 滑杆范围MathBlockoperationMathBlockOperations0Add、1Subtract、2Multiply、3Divide、4Max、5MinBooleanGeometryBlockoperationBooleanGeometryOperations0Intersect、1Subtract、2UnionGeometryTrigonometryBlockoperationGeometryTrigonometryBlockOperations0Cos、1Sin、2Abs、3Exp、4Round … 20Exp2ConditionBlocktestConditionBlockTests0Equal、1NotEqual、2LessThan …许多块支持evaluateContextboolean用于开启逐顶点求值Set 类块默认开启。连线connect_blocks的规则connect_blocks需要四个参数sourceBlockId、outputName、targetBlockId、inputName数据从源输出流向目标输入。底层的GeometryGraphManager.connectBlocksngeMcpCommon/src/geometryGraph.ts在建立连接前会做三重防护端口存在性检查输出/输入名不存在时报错并列出可用端口类型兼容性检查通过_getConnectionTypeError解析两端类型不兼容则拒绝例如 Vector3 不能接到只收 Float 的端口除非端口声明了acceptedConnectionPointTypes环检测通过_wouldCreateCycle做 BFS若连接会形成回路则拒绝。一个输入端口只能有一条连接新连接会覆盖旧连接。disconnect_input则通过清除inputName/targetBlockId/targetConnectionName三个字段断开。GeometryInputBlock 的两种模式这是最容易出错也最关键的块。根据 referenceData.ts 中的NgeConceptsMarkdown模式一上下文源Contextual Source。contextualValue取Positions、Normals、UV、VertexID等枚举值块的输出类型由ContextualSourceToType映射自动推导上下文源自动推导的输出类型Positions / Normals / Tangents / LatticeControlVector3UV / UV2 / UV3 / UV4 / UV5 / UV6Vector2ColorsVector4VertexID / FaceID / GeometryID / CollectionID / LoopID / InstanceID / LatticeIDInt模式二常量值Constant Value。设置type为 Int/Float/Vector2/Vector3/Vector4/Matrix再设value。值会被规范化标量直接存为 number 且valueTypenumber{x,y}对象转为[x,y]Vector2、{x,y,z}转为[x,y,z]Vector3、{x,y,z,w}转为[x,y,z,w]Vector4Matrix 类型的 number 会被替换为 16 元素单位矩阵。这些转换逻辑见_normaliseInputBlockValue/_ensureDefaultValuengeMcpCommon/src/geometryGraph.ts。如果既没设contextualValue或为 None也没设value管理器会给出警告该输入块不提供任何数据。源块的尺寸端口输入端口而非标量属性一个高频陷阱BoxBlock、SphereBlock、PlaneBlock等源块的尺寸参数size、width、diameter、subdivisions等都是可选的输入端口不是标量属性。要覆盖默认值必须新增一个GeometryInputBlock并连线GeometryInputBlock(Float, value10) → PlaneBlock.size GeometryInputBlock(Float, value0.5) → SphereBlock.diameter GeometryInputBlock(Int, value64) → GridBlock.subdivisions不需要自定义的尺寸端口可以完全不接保留默认值。服务内置提示create-scattered-instancessrc/index.ts演示了完整用法用PlaneBlock做底面、SphereBlock做实例、InstantiateOnFacesBlock做散布并用三个GeometryInputBlock分别喂入面大小Float 10、球直径Float 0.2和实例数Int 100。尾随空格陷阱VectorConverterBlock / IntFloatConverterBlockVectorConverterBlock的输入端口名带尾随空格用于与同名输出区分连线时必须原样保留输入xyzw Vector4、xyz Vector3、xy /zw Vector2、x /y /z /w Float输出xyzw、xyz、xy、zw、x、y、z、w无空格。connect_blocks(sourceId, output, vectorConverterId, x ) # 输入带空格 connect_blocks(vectorConverterId, xyz, targetId, ...) # 输出不带空格IntFloatConverterBlock遵循同样的模式输入float 、int 输出float、int。内置提示create-deformed-terrainsrc/index.ts综合展示了这些块的组合GridBlockSetPositionsBlockNoiseSampleBlockVectorConverterBlockCreateVector3BlockAddBlockComputeNormalsBlock构建噪声地形。底层原理GeometryGraphManager 如何工作所有工具都落在一个无 Babylon.js 运行时依赖的纯 JSON 数据模型上ngeMcpCommon/src/geometryGraph.ts。其设计目标在文件头部注释中明确说明MCP 服务必须保持轻量独立进程因此直接操作与NodeGeometry.serialize()输出格式一致的 JSON 结构。序列化格式ISerializedGeometry顶层字段为customType固定BABYLON.NodeGeometry导入校验的硬性条件见ValidateNodeGeometryAttachmentPayloadoutputNodeId唯一的输出块 IDblocks块数组每个块含customType、id、name、inputs、outputs及块私有属性editorData.locations编辑器布局坐标每块{blockId, x, y}comment可选描述。导出前的自动修复exportJSONngeMcpCommon/src/geometryGraph.ts在序列化前做最后一遍安全化对GeometryInputBlock再次规范化值与默认值从注册表补齐defaultSerializedProperties如evaluateContext这些字段是 Babylon 反序列化器所必需的缺失可能导致构建期崩溃把残余的字符串枚举值转成数字。随后执行_layoutGraph从输出节点出发做最长路径 BFS 分层再按列用重心barycenter启发式排序最终写入editorData.locations列宽 340px、行高 180px保证导出的图在编辑器中打开时排布美观输入在左、输出在右。校验规则validateGeometryngeMcpCommon/src/geometryGraph.ts输出的问题以ERROR/WARNING前缀标记缺少GeometryOutputBlock或多个输出块 → ERRORoutputNodeId未设置、指向不存在块或非输出块 → ERROR必需输入未连接 → WARNING如SetPositionsBlock.positions、GeometryOutputBlock.geometry悬空引用target 块或输出名不存在→ ERROR / WARNING无上下文源也无常量值的GeometryInputBlock→ WARNING无任何连接的孤儿块 → WARNING。isError标志由问题中是否存在ERROR决定供 MCP 客户端判断调用是否失败。资源Resources与提示Prompts除工具外服务还注册了三个只读 Markdown 资源供 Agent 按需拉取参考数据nge://block-catalog由GetBlockCatalogSummary()生成的块目录摘要ngeMcpCommon/src/blockRegistry.tsnge://enumsGetNgeEnumsReference()生成的完整枚举参考覆盖NodeGeometryBlockConnectionPointTypesInt0x0001、Float0x0002、Vector20x0004、Vector30x0008、Vector40x0010、Matrix0x0020、Geometry0x0040、Texture0x0080、AutoDetect0x0400、BasedOnInput0x0800、Undefined0x1000、NodeGeometryContextualSources、MathBlockOperations、GeometryTrigonometryBlockOperations、ConditionBlockTests、BooleanGeometryOperations、RandomBlockLocks、Aggregations、GeometryEaseBlockTypes、MappingTypes详见 referenceData.tsnge://conceptsNgeConceptsMarkdown一页式概念手册图结构、两种输入模式、源块、变换/合并/布尔/实例化/逐顶点修改、常见错误清单。三个内置提示模板则分别对应三档复杂度create-box-geometry最小盒子、create-scattered-instances面散布实例、create-deformed-terrain噪声地形。与 Scene MCP 的集成README 明确指出导出 JSON 的消费路径Scene MCP 服务通过add_node_geometry_mesh消费导出的 NGE JSON既可以内联传入也可以通过ngeJsonFile传入文件路径。nge-mcp-server 导出 NGE JSON │ ▼ Scene MCP add_node_geometry_meshinline 或 ngeJsonFile │ ▼ 运行时创建 MeshNodeGeometry.parseSerializedObject / Parse此外还有两条在线协作路径get_snippet_url把 JSON base64 编码进 URL 片段生成https://nge.babylonjs.com/#...的编辑器直达链接大图建议改用 Snippet 服务save_snippet把图保存到 Babylon.js Snippet Server返回Snippet ID与版本号之后可在编辑器中用 ID 加载或通过import_from_snippet拉回内存继续编辑import_from_snippet会校验 Snippet 类型必须是nodeGeometryID 格式形如ABC123或ABC123#2带版本。示例与测试验证仓库在 examples 下提供了五个可直接导入的 NGE JSON 示例覆盖不同复杂度SimpleBox.json单 BoxBlock 直连输出最小图BooleanCSG.json布尔CSG运算图MathPipeline.json数学管线图NoiseTerrain.json噪声地形图ScatteredInstances.json散布实例图。单元测试位于 test/unit其中 graphManager.test.ts 验证了创建/导出盒子图后 JSON 结构合法customType为BABYLON.NodeGeometry、所有连接引用存在的块 ID、生命周期操作create/list/delete、contextualValue: Positions自动推导为数值 1 且类型推导为 Vector30x0008、常量值规范化等行为。registryDrift.test.ts则检查块目录与真实 NGE 块实现的同步性generateExamples.test.ts保证 examples 目录的示例可由图管理器重新生成。相关文件索引文件作用README.md服务概述、工作流、构建运行、集成说明src/index.tsMCP 工具/资源/提示注册与服务启动src/geometryGraph.tsGeometryGraphManager兼容性再导出src/blockRegistry.tsBlockRegistry兼容性再导出ngeMcpCommon/src/geometryGraph.ts浏览器安全的图管理器与序列化逻辑核心实现ngeMcpCommon/src/blockRegistry.ts共享的 NGE 块目录ngeMcpCommon/src/referenceData.ts共享的枚举与概念参考数据package.json构建脚本与依赖test/unit/graphManager.test.ts图管理器行为验证测试examples/可导入的示例 NGE JSON从源码结构可以推断src/geometryGraph.ts与src/blockRegistry.ts是薄兼容层re-export真正的实现集中在tools/nge-mcp-common包中这样图管理与块目录逻辑可以被 MCP 服务端与其他工具如编辑器共享同时保持零 Babylon.js 运行时依赖的轻量特性。实际投入使用时建议让 AI Agent 先调用list_block_types/get_block_type_info建立对端口与属性的认知再沿 README 给出的工作流逐步构建、反复validate_geometry最后导出 JSON 交给 Scene MCP 落地为运行时网格。赞分享图形学游戏开发3D渲染【免费下载链接】Babylon.jsBabylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.项目地址https://gitcode.com/gh_mirrors/ba/Babylon.js点击查看免费下载相关推荐Babylon.js GUI MCP Server 实战指南用 AI Agent 驱动 2D GUI 布局创作Babylon.js GUI MCP Server 实战指南用 AI Agent 驱动 2D GUI 布局创作 导读 tools/gui mcp serve图形学游戏开发3D渲染使用 flow-graph-mcp-server 以 AI 驱动方式构建 Babylon.js Flow Graph使用 flow graph mcp server 以 AI 驱动方式构建 Babylon.js Flow Graph 本文围绕 Babylon.js 仓库中的图形学游戏开发3D渲染用 MCP 驱动 Babylon.js 节点粒子创作npe-mcp-server 从入门到原理用 MCP 驱动 Babylon.js 节点粒子创作npe mcp server 从入门到原理 导读 本文围绕 Babylon.js 官方仓库中的 packa图形学游戏开发3D渲染上一篇spectacle-code-slide进阶应用多媒体集成与交互式代码演示下一篇深入理解libphenom网络编程高性能socket与异步I/O实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考