核心用法
MML(Metaverse Markup Language)是一种 HTML 风格的标记语言,专为构建 3D 交互场景而设计。开发者通过编写 .html 格式的 MML 文档,利用 WebSocket 传输,由客户端(Web/Three.js 或 Unreal Engine)实时渲染。文档支持标准 DOM 脚本,可通过 <script> 标签实现动态交互。
核心元素体系:
- 几何体:
m-cube、m-sphere、m-cylinder、m-plane用于基础 3D 形状 - 资源加载:
m-model(GLTF/OBJ/FBX)、m-character用于复杂模型与角色 - 媒体呈现:
m-image、m-video(支持 WHEP 流)、m-audio实现空间音视频 - 交互组件:
m-interaction、m-prompt、m-link处理点击与输入 - 探测系统:
m-position-probe、m-chat-probe实现用户位置追踪与聊天监听 - 动画系统:
m-attr-anim(关键帧动画)、m-attr-lerp(平滑过渡) - 容器与嵌入:
m-group(变换容器)、m-frame(嵌套文档)
典型开发模式:
- 使用
collision-interval属性启用碰撞事件(collisionstart/move/end) - 通过
m-position-probe追踪用户进入/移动/离开指定范围 - 利用标准 DOM API(
getElementById、addEventListener、setAttribute)编写交互逻辑
显著优点
1. 低门槛 Web 技术栈:采用类 HTML 语法与标准 JavaScript,前端开发者无需学习复杂游戏引擎即可构建 3D 场景
2. 实时协作能力:WebSocket 传输支持多用户同步,内置 connectionId 机制便于识别不同用户
3. 跨平台渲染:同一文档可在 Web(Three.js)与 Unreal Engine 双端运行(部分特性有差异)
4. 丰富的动画系统:30+ 种缓动函数,支持循环、往返、延迟等高级动画控制
5. 空间化媒体:音频支持锥形衰减、视频支持 WHEP 流媒体,适合沉浸式体验
6. 模块化架构:m-frame 支持文档嵌套,m-group 实现层级变换,便于团队协作与代码复用
潜在局限
1. 平台兼容性差异:m-link、m-attr-lerp、m-frame 边界控制等特性仅限 Web 端,跨平台项目需条件适配
2. 性能依赖网络:WebSocket 实时传输对延迟敏感,复杂场景可能出现同步延迟
3. 脚本能力边界:虽支持标准 DOM,但无法直接调用底层图形 API,高级着色器或物理模拟需外部方案
4. 生态成熟度:相比 Unity/Unreal 等成熟引擎,第三方工具链与社区资源相对有限
5. 文档时间系统:动画基于文档生命周期时间(非真实时间),长时运行场景需考虑时间累积精度
适合人群
- 前端开发者:熟悉 HTML/CSS/JS,希望快速进入 3D/WebXR 领域
- 元宇宙内容创作者:需要在 Otherside 等平台构建可交互虚拟空间
- 原型验证团队:快速迭代 3D 交互概念,无需重型引擎部署流程
- 教育/展览场景:空间音频、位置触发、聊天互动等功能契合导览与展示需求
常规风险
- XSS 风险:MML 支持内联脚本与外部文档嵌入(
m-frame),需验证src来源可信性 - 资源加载安全:远程模型/媒体 URL 可能被劫持,建议配置 CSP 与 HTTPS 强制
- 用户隐私:
m-position-probe与m-chat-probe可追踪用户位置与聊天内容,需明确告知并获得同意 - DoS 隐患:高频
collision-interval或position-probe配置可能导致服务端计算过载 - 供应链风险:依赖 mml.io 官方运行时与 DashBODK Studio 工具链,需关注更新与安全通告