目前 Geometry 是通过 Scene.createGeometry 动态创建的,之后,尝试通过以下方法设置,均无效:
尝试动态设置:
const mesh = scene.getElementById("mesh").getComponent(xrFrameSystem.Mesh);
mesh.setDataOne("geometry", geometry); // 无效
mesh.geometry = geometry; // readonly
尝试动态创建节点并绑定到 shadow 下:
const node = scene.createElement(xrFrameSystem.XRMesh);
node.addComponent(xrFrameSystem.Mesh, { geometry, material });
const shadow = scene.getElementById('shadow');
shadow.addChild(node);
通过 `xrFrameSystem.registerGeometry` 注册后使用没有问题。
这么写是可以的,看看是不是你geometry创建错了:
const xrFrameSystem = wx.getXrFrameSystem(); const mesh = xrScene.getElementById("cube").getComponent(xrFrameSystem.Mesh); const geometry = xrScene.assets.getAsset('geometry', 'sphere'); mesh.setDataOne("geometry", geometry);
目前默认的背景似乎是黑色的,`xr-camera`的`clear-color`设置为透明无效。
可以回答在 https://developers.weixin.qq.com/community/develop/doc/0008644376c8b883d65f0f2a15b400 这个问题下,这里答非所问。
@腾飞,我用你的方法始终无法动态加载一个物体啊?最简单的cube都不行,代码没有错,就是不显示。能否告知你是如何解决的?有窍门吗?
const xrFrameSystem = wx.getXrFrameSystem()
const node = _this.scene.createElement(xrFrameSystem.XRNode);
node.addComponent(xrFrameSystem.Mesh, { geometry: 'cube'});
const node = scene.createElement(xrFrameSystem.XRNode, {geometry:'cube'});
const shadow = scene.getElementById('shadow-root');
shadow.addChild(node);
const node = scene.createElement(xrFrameSystem.XRNode); node.addComponent(xrFrameSystem.Mesh, { geometry, material });
将 XRMesh 替换为 XRNode 就可以了,记录一下。