繁体   English   中英

Argon.js:错误:尚未收到框架状态

[英]Argon.js: Error: A frame state has not yet been received

我正在尝试使用argon.js服务器端,以便可以将lla坐标转换为预定义的参考框架。 我当然不渲染任何图形,我只是用它来转换值。 有关详细信息,请参见关于使用地理坐标而不是笛卡尔坐标绘制氩和A型框架的问题。

对于该线程,我试图为固定坐标创建一个铯实体,稍后将使用它创建相对于它的其他实体。 当我这样做时,一切都会运行,直到我到达程序的最后一行为止var gtrefEntityPose = app.context.getEntityPose(gtrefEntity); 我在哪里收到Error: A frame state has not yet been received

起初,我认为这可能是由于将默认引用实体设置为app.context.setDefaultReferenceFrame(app.context.localOriginEastUpSouth); 因为我还没有本地用户,因为它是服务器端。 我查找了setDefaultReferenceFrame的文档,以及可能需要使用convertEntityReferenceFrame以及每个文档的源代码的可能性,但是鉴于我对该程序的了解,我无法理解它。

我把错误以及我的应用程序代码放在下面。

谢谢你的帮助!

/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)

这是我的代码:

var Argon = require('@argonjs/argon');

var Cesium = Argon.Cesium;


var Cartesian3 = Cesium.Cartesian3;
var ConstantPositionProperty = Cesium.ConstantPositionProperty;
var ReferenceFrame = Cesium.ReferenceFrame;
var ReferenceEntity = Cesium.ReferenceEntity;
//var degToRad = THREE.Math.degToRad;

const app = Argon.init();
app.context.setDefaultReferenceFrame(app.context.localOriginEastUpSouth);

var data = { lla : { x : -84.398881, y : 33.778463, z : 276 }};

var gtref = Cartesian3.fromDegrees(data.lla.x, data.lla.y, data.lla.z);
var options = { position: new ConstantPositionProperty(gtref, ReferenceFrame.FIXED),
            orientation:  Cesium.Quaternion.IDENTITY
          };

var gtrefEntity = new Cesium.Entity(options);
var gtrefEntityPose = app.context.getEntityPose(gtrefEntity);

按照目前的设计,argon.js无法在服务器端运行。 特别是,在argon.js获得“用户”的地理空间位置和方向之前,不会设置局部坐标系,这可以从Argon4(如果您在Argon4 Web浏览器中运行)获得,也可以从网络地理位置和设备方向API(如果您在其他浏览器中运行)。

在完整的6D姿势(3D位置+ 3D方向)下,系统不知道用户的位置和观看方向,因此无法建立本地欧几里得坐标系。 因此, app.context.localOriginEastUpSouth仍未定义(铯铯实体存在,但未设置其位置和方向),而app.context.getEntityPose(gtrefEntity)将失败。

要在服务器端使用argon.js,您需要对其进行修改,以允许程序手动设置查看器的位置和方向。 我可以想象这样做,甚至可以在具有移动客户端定期将姿势发送回服务器(例如通过socket.io)的系统中使用它。 在您不关心观看方向的情况下(例如,如果您只是担心用户的位置),您可以将方向设置为身份,而忽略返回姿势中的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM