3D 与可视化开发
Profy 的 3D 与可视化能力由三个正交插件提供:profy-visualize
统一的可视化插件,涵盖数据图表和 Three.js 3D 场景。工具
visualize — 内联可视化
生成 HTML/CSS/JS 可视化片段,通过 Inline Visualization 渲染面直接嵌入聊天区。
result.inline_vis → 聊天区 InlineVisualizationCard(沙箱 iframe)
inspect_3d — 场景诊断
注入 JavaScript 到目标页面,遍历 Three.js 场景图,返回结构化诊断数据。
scene_tree— 场景节点树(类型、名称、可见性、几何体信息)materials— 材质清单(类型、透明度、贴图数量)animations— 动画列表(名称、时长、轨道数)performance— 性能数据(draw calls、三角面数、纹理/几何体内存)warnings— 性能警告(超预算提醒)webgl_status— WebGL 上下文健康状态
技术栈
CDN 可用库:- Three.js — 3D 场景
- D3.js — 数据驱动文档
- Vega-Lite / Vega-Embed — 声明式图表
- Observable Plot — 快速统计图表
- @visx — React 数据可视化
双模式架构
Standalone 模式(快速 demo)
单文件 HTML,Three.js/D3 通过 CDN importmap 加载:- 通过
visualize工具即时渲染为 Inline Visualization - 或写入沙箱文件通过 Widget 展示
- 下载后在任何浏览器中直接打开
Integration 模式(R3F 集成)
在 Sites 项目中使用 React Three Fiber:@react-three/fiber+@react-three/drei+@react-three/postprocessing- 与 TanStack Start 框架深度集成
- 沙箱中已预烘焙所有依赖
Skills(18 个)
涵盖 D3、地理空间、统计图、Canvas 2D、Three.js 数据可视化、React 组件化图表、Vega-Lite 声明式、无障碍可视化、策略选型、UML 架构图、滚动叙事、甘特图、实时仪表盘、节点链接图、报告导出等。profy-game-studio
独立的游戏开发插件,支持 3D 和 2D 游戏。支持的引擎/框架
Skills(9 个)
游戏工作室路由、Three.js WebGL 游戏、React Three Fiber 游戏、Phaser 2D 游戏、3D 资产管线、游戏基础设施、游戏 UI、Playtest QA、Sprite 管线。沙箱预烘焙依赖
phaser— 2D 游戏引擎@dimforge/rapier3d-compat— 物理引擎(WASM)- Three.js 生态(与 visualize 共享)
AI 3D 生成(profy-creative 扩展)
通过腾讯混元 3D API 实现 AI 驱动的 3D 内容创作。generate_3d — 3D 模型生成
从文本描述、参考图片或草图生成 3D 模型。
- 文本描述(
prompt) - 参考图片(
image_url) - 线稿草图(
sketch_url)
postprocess_3d — 3D 后处理
对已有 3D 模型进行后处理操作。
retopology— 重新拓扑(减面)texture— 重新贴图rig— 自动骨骼绑定animate— 自动动画uv_unwrap— UV 展开convert— 格式转换
generate_world — 世界生成(HY-World 2.0)
生成可导航的 3D 世界(3D Gaussian Splatting)。
视觉验证协议(Vision in the Loop)
所有可视化/3D/游戏开发都遵循自动迭代验证协议:- 生成/修改代码
- 截图验证:
browser(action="screenshot", html=<HTML>)或browser(action="screenshot", url="localhost:5173") - 自我分析截图(空白?缺元素?布局错?)
- 有问题 → 修复 → 回到步骤 2
- 循环直到视觉正确,才呈现给用户
性能预算
Standalone 模板
关键约束
- 必须暴露场景:
window.__THREE_SCENE__ = scene和window.renderer = renderer,否则inspect_3d无法工作 - 必须处理 resize:所有 Standalone demo 必须响应窗口大小变化
- 必须有交互控制:OrbitControls 或 PresentationControls
- 限制像素比:
renderer.setPixelRatio(Math.min(devicePixelRatio, 2)) - Canvas 需要高度:R3F 的
<Canvas>父元素必须有明确的高度
MCP Bridge 插件(Desktop Only)
对于专业 3D 建模,Desktop 用户可通过 MCP Bridge 插件连接本地应用:
这些插件是声明式的(无运行时代码),通过
mcpServers 配置连接到本地 MCP 服务器(如 uvx blender-mcp)。
