Target: PlayCanvas Engine (open-source JS). Reference impl Week 2 alongside Three.js (shared JS ecosystem).
import { parseXrai, buildScene } from '@xrai/playcanvas';
const graph = await parseXrai(jsonText);
const entity = buildScene(app, graph); // pc.Application, XraiGraph -> pc.Entity
app.root.addChild(entity);
| XRAI | PlayCanvas |
|---|---|
entity.type = object.primitive, model_id = 0..5 |
new pc.Entity() + entity.addComponent('model', {type: 'box/sphere/...'}) |
entity.type = object.glb + url |
Load as asset → entity.addComponent('model', {type: 'asset', asset}) |
entity.type = object.light |
entity.addComponent('light', {type: 'point/spot/...'}) |
entity.transform.position |
entity.setPosition(x, y, z) |
entity.transform.rotation (quat) |
entity.setRotation(new pc.Quat(x, y, z, w)) |
entity.transform.scale |
entity.setLocalScale(x, y, z) |
entity.material.color |
new pc.StandardMaterial() + .diffuse = new pc.Color(...) |
relation.type = parent-of |
parent.addChild(child) |
graph.origin.handedness hint)npm i @xrai/playcanvas
Or CDN:
<script src="https://cdn.jsdelivr.net/npm/@xrai/playcanvas/dist/xrai-playcanvas.min.js"></script>