我正在尝试使用argon.js服务器端,以便我可以将lla坐标转换为预定义的参考帧。我当然没有渲染任何图形,我只是用它来转换值。有关详细信息,请参阅问题 Using Geo-coordintes Instead of Cartesian to Draw in Argon and A-Frame 。
根据该线程,我正在尝试为固定坐标创建一个cesium实体,稍后我将用它来创建相对于它的其他实体。当我这样做时,一切都会一直运行,直到我到达var gtrefEntityPose = app.context.getEntityPose(gtrefEntity);
的{{1}}程序的最后一行。
起初我认为这可能是由于将默认引用实体设置为Error: A frame state has not yet been received
,因为我还没有本地用户,因为它是服务器端。我查阅了setDefaultReferenceFrame的文档,以及我可能需要使用convertEntityReferenceFrame的可能性以及每个的源代码,但鉴于我的知识,我无法理解它。程序
我已将错误和我的应用程序代码放在下面。
感谢您的帮助!
app.context.setDefaultReferenceFrame(app.context.localOriginEastUpSouth);
这是我的代码:
/home/path/to/folder/node_modules/@argonjs/argon/dist/argon.js:4323
if (!cesium_imports_1.defined(this.serializedFrameState)) throw new Error(
^
Error: A frame state has not yet been received
at ContextService.Object.defineProperty.get [as frame] (/home/path/to/folder/node_modules/@argonjs/argon/dist/argon.js:4323:89)
at ContextService.getTime (/home/path/to/folder/node_modules/@argonjs/argon/dist/argon.js:4343:32)
at ContextService.getEntityPose (/home/path/to/folder/node_modules/@argonjs/argon/dist/argon.js:4381:37)
at Object.<anonymous> (/home/path/to/folder/test.js:27:35)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
答案 0 :(得分:2)
正如它目前设计的那样,argon.js不会在服务器端工作。特别是,在argon.js获得&#34; user&#34;的地理空间位置和方向之前,不会设置局部坐标系,这可以从Argon4获得(如果您在Argon4网络浏览器中运行)或来自web地理定位和deviceorientation API的组合(如果您在其他浏览器中运行)。
对于完整的6D姿势(3D位置+ 3D方向),系统不知道用户的位置和观察方向,并且不能建立局部欧氏坐标系。因此app.context.localOriginEastUpSouth
仍未定义(Cesium实体存在,但未设置其位置和方向),app.context.getEntityPose(gtrefEntity)
将失败。
要使用argon.js服务器端,您需要修改它以允许程序手动设置查看器的位置和方向。我可以想象这样做,甚至在一个让移动客户端定期将姿势发送回服务器的系统中使用它(例如通过socket.io)。在您不关心查看方向的情况下(例如,如果您只是担心用户的位置),您可以将方向设置为标识并忽略返回姿势中的方向。 / p>