MML (Metaverse Markup Language)
Full compiled reference: /home/ubuntu/.openclaw/workspace/research/mml-reference.md
Source: mml.io + DashBODK Studio (dashbodk.vercel.app/docs). All elements, attrs, events, collision patterns.
MML is an HTML-like markup language for building 3D scenes. Documents are served via WebSocket and rendered by clients (Web/Three.js or Unreal Engine). MML supports scripting via inline <script> tags (standard DOM APIs).
Key Concepts
- - Units: Positions in meters, rotations in degrees, font sizes in centimeters
- Coordinate system: x (right), y (up), z (forward)
- Common attributes: All visible elements share INLINECODE2
- Collision system: Set
collision-interval (ms) on an element to receive collisionstart, collisionmove, collisionend events - Document time: Animations and media use document lifecycle time (ms since document start)
- Scripting: Standard DOM manipulation via
<script> tags. Use document.getElementById(), addEventListener(), setAttribute(), etc.
Elements Quick Reference
| Element | Purpose | Key Attrs |
|---|
| INLINECODE11 | Container, transforms children as unit | (transform only) |
| INLINECODE12 |
3D box |
width height depth color opacity |
|
m-sphere | 3D sphere |
radius color opacity |
|
m-cylinder | 3D cylinder |
radius height color opacity |
|
m-plane | Flat surface |
width height color opacity |
|
m-model | Load 3D model (GLTF/OBJ/FBX) |
src anim-src anim-loop anim-enabled start-time pause-time |
|
m-character | 3D character (composable with m-model children) |
src anim-src anim-loop anim-enabled start-time pause-time |
|
m-light | Point or spotlight |
type intensity distance angle enabled cast-shadows color |
|
m-image | Display image in 3D |
src width height emissive opacity |
|
m-video | Display video in 3D (supports WHEP streaming) |
src width height emissive loop enabled volume start-time pause-time |
|
m-audio | Spatial audio |
src loop loop-duration enabled volume cone-angle cone-falloff-angle start-time pause-time |
|
m-label | Text on a plane |
content width height font-size font-color padding alignment color emissive |
|
m-frame | Embed another MML document |
src min-x max-x min-y max-y min-z max-z load-range unload-range |
|
m-link | Clickable link (no visual) |
href target |
|
m-prompt | User text input on click |
message placeholder prefill onprompt |
|
m-interaction | Action at a point in space |
range in-focus line-of-sight priority prompt oninteract |
|
m-position-probe | Track user positions |
range interval onpositionenter onpositionmove onpositionleave |
|
m-chat-probe | Receive chat messages |
range onchat |
|
m-attr-anim | Keyframe animation (doc-time synced) |
attr start end start-time pause-time duration loop easing ping-pong ping-pong-delay |
|
m-attr-lerp | Smooth attribute transitions |
attr duration easing |
Common Patterns
Basic scene with transforms
CODEBLOCK0
Animation (looping rotation)
CODEBLOCK1
Smooth transitions on attribute changes
CODEBLOCK2
Click interaction
CODEBLOCK3
Collision detection
CODEBLOCK4
Position tracking
CODEBLOCK5
Load 3D model with animation
CODEBLOCK6
Composing documents with m-frame
CODEBLOCK7
Spatial audio
CODEBLOCK8
Chat-reactive elements
CODEBLOCK9
Easing Functions
Available for m-attr-anim and m-attr-lerp:
easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine, easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc, easeInElastic, easeOutElastic, easeInOutElastic, easeInBack, easeOutBack, easeInOutBack, easeInBounce, easeOutBounce, INLINECODE81
Omit easing for linear interpolation.
Events Reference
| Event | Source | Key Properties |
|---|
| INLINECODE82 | Any clickable element | INLINECODE83 , INLINECODE84 |
| INLINECODE85 |
Elements with
collision-interval |
detail.connectionId,
detail.position |
|
collisionmove | Elements with
collision-interval |
detail.connectionId,
detail.position |
|
collisionend | Elements with
collision-interval |
detail.connectionId |
|
positionenter |
m-position-probe |
detail.connectionId,
detail.position,
detail.rotation |
|
positionmove |
m-position-probe |
detail.connectionId,
detail.position,
detail.rotation |
|
positionleave |
m-position-probe |
detail.connectionId |
|
chat |
m-chat-probe |
detail.message,
detail.connectionId |
|
interact |
m-interaction |
detail.connectionId |
|
prompt |
m-prompt |
detail.value,
detail.connectionId |
|
connected /
disconnected | Document-level |
detail.connectionId |
Platform Support
Most elements work on both Web and Unreal. Notable exceptions:
- -
m-link: Web only - INLINECODE124 : Web only
- INLINECODE125 bounds/load-range: Web only
- INLINECODE126 attribute: Web only
Full Element Docs
For detailed attribute lists per element, see references/elements.md.
MML(元宇宙标记语言)
完整编译参考: /home/ubuntu/.openclaw/workspace/research/mml-reference.md
来源:mml.io + DashBODK Studio (dashbodk.vercel.app/docs)。包含所有元素、属性、事件、碰撞模式。
MML是一种类似HTML的标记语言,用于构建3D场景。文档通过WebSocket传输,并由客户端(Web/Three.js或Unreal Engine)渲染。MML支持通过内联
位置跟踪
html
加载带动画的3D模型
html
使用m-frame组合文档
html
空间音频
html
聊天响应式元素
html
缓动函数
适用于m-attr-anim和m-attr-lerp:
easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine, easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc, easeInElastic, easeOutElastic, easeInOutElastic, easeInBack, easeOutBack, easeInOutBack, easeInBounce, easeOutBounce, easeInOutBounce
省略缓动参数则使用线性插值。
事件参考
| 事件 | 来源 | 关键属性 |
|---|
| click | 任何可点击元素 | detail.connectionId, detail.position |
| collisionstart |
带有collision-interval的元素 | detail.connectionId, detail.position |
| collisionmove | 带有collision-interval的元素 | detail.connectionId, detail.position |
| collisionend | 带有collision-interval的元素 | detail.connectionId |
| positionenter | m-position-probe | detail.connection