常见问题

  1. 如何新建云渲染场景?

答:需要在网页中建一个id=player的div,云渲染场景会100%填充该div;

  1. 如何添加物体、控制显隐、移除物体?

答:调用cloudRenderEngine.addToScene(obj)将物体添加至场景;

调用obj.visible=ture/false控制物体的显隐;

调用cloudRenderEngine.removeFromScene(obj)将物体移出场景并销毁,也可调用cloudRenderEngine.destoryObject(obj)直接销毁物体;

cloudRenderEngine.removeAllFromScene()会一次性删除所有添加到场景中的物体;

  1. 场景坐标系是什么?

答:是局部坐标系,有一个局部坐标原点,该坐标原点可以设置。所有物体的坐标采用经纬度格式。

  1. 初次连接较慢?

答:连接视频流服务耗时较久,断开链接时会重置游戏,大概耗时5s。

  1. 如何监听鼠标事件?

答:object.addEventListener(type,callback);目前支持mousedown、mouseup、mouseover、mouseleave四种通用事件;

{
    "code": 200,
    "type": "mousedown",
    "button": 0,
    "content": {
        "InternalIndex": 1 //该物体在这个实例中的索引
    },
    "time": "-",
    "uuid": "8bfbbf43-9cc2-4399-8f28-7cbd6b20a311", //图层的uuid
    "classType": "IconPoint",
    // 鼠标所点击的位置在渲染div中的坐标
    "cloudMousePosition": {
        "x": 1114,
        "y": 597
    },
    // 鼠标所点击的位置在渲染div中的比例
    "cloudMouseRatio": {
        "x": 0.5802083333333333,
        "y": 0.5527777777777778
    },
    //场景中的相对位置
    "cloudSceneLocation": {
        "x": 2097211.895761825,
        "y": 9572360.746255005,
        "z": 0
    },
    //地理坐标
    "GeographicLocation": {
        "longitude": 113.48950475,
        "latitude": 22.767647299999993,
        "altitude": 0
    },
    "target": null
}
  1. 如何添加车流?

答:车流是前端发送参数,有UE客户端去连接并解析数据生成车流。首先要确保有一个socketIO3协议的ws服务,服务需要按照一定的时间间隔,例如100ms去推送车流数据,返回的数据参考格式如下:

{
    "timestamp": 1676606709342,  // 数据时间 必须
    "tracks": [
        {
            "id": "12886022161", // 车辆id  必须
            "type": 3,  // 车辆类型  必须
            "longitude": 117.6344017,  // 必须
            "latitude": 39.7301182, // 必须
            "altitude": 0.0, // 必须  高程
            "heading": 80.5, // 必须  旋转角yaw
            "slope": 10, // 坡度,非必须,旋转角pitch
            "speed": 82.08, // 用于在UI中显示
            "label_type": 1, // 1 蓝色 2 黄色 3 绿色 4 红色
            "plate": "",  // 车牌号 用于在UI中显示
            "is_focus": false, // 是否是重点车辆
            "color": {  // 车辆颜色  0~1
                "r": 0.5,
                "g": 0.5,
                "b": 0.1,
                "a": 1
            }
        }
    ]
}


// 车辆类型
{
    0: {
        name: '未知障碍物',
    },
    1: {
        name: '未知可移动障碍物',
    },
    2: {
        name: '未知不可移动障碍物',
    },
    3: {
        name: '轿车',
        key: 'newcar1',
        // key: 'newboxtruck',
        // key: 'newdangeroustruck',
        labelOffset: [0, 0, 2],
        plateColor: '#005DCC',
    },
    4: {
        name: '面包车',
        typeName: '面包车',
        key: 'newvan',
        labelOffset: [0, 0, 2],
        plateColor: '#005DCC',
    },
    5: {
        name: '卡车',
        key: 'newgreentruck',
        labelOffset: [0, 0, 4],
        plateColor: '#D3A35D',
    },
    6: {
        name: '大巴',
        key: 'newbus',
        labelOffset: [0, 0, 4],
        plateColor: '#D3A35D',
    },
    7: {
        name: '自行车',
        typeName: '非机动车',
        key: 'newbicycle',
        labelOffset: [0, 0, 2],
    },
    8: {
        name: '摩托车',
        typeName: '非机动车',
        key: 'newmotorcycle',
        labelOffset: [0, 0, 2],
    },
    9: {
        name: '三轮车',
        typeName: '非机动车',
        key: 'newtricycle',
        labelOffset: [0, 0, 2],
    },
    10: {
        name: '行人',
        typeName: '非机动车',
        key: 'pedestrian',
        labelOffset: [0, 0, 2],
    },
    11: {
        name: '交通锥',
        key: 'trafficcone',
        labelOffset: [0, 0, 1],
    },
    12: {
        name: '危化品车',
        key: 'newdangeroustruck',
        labelOffset: [0, 0, 1],
    },
    13: {
        name: '警车',
        key: 'newdangeroustruck',
        labelOffset: [0, 0, 1],
    },
    14: {
        name: '消防车',
        key: 'newdangeroustruck',
        labelOffset: [0, 0, 1],
    },
    15: {
        name: '救护车',
        key: 'newdangeroustruck',
        labelOffset: [0, 0, 1],
    },
    16: {
        name: '路政车',
        key: 'newdangeroustruck',
        labelOffset: [0, 0, 1],
    },
}
  1. 车流连接后,没有车辆或者程序崩溃了?

答:a. 可能是soclket版本协议太低,要求socket版本>3.0; b.可能是数据内容格式不正确;c.没有车辆有可能是车辆坐标不在视野范围内;

  1. 车流图层支持哪些事件监听?

答:目前支持onConnected服务连接成功,onDIsconnected服务断开连接, onFail服务出现错误, follow开始车辆跟踪, unfollow解除车辆跟踪等事件回调,onCurrentCarList可以拿到渲染中的所有车辆信息;使用方法如:trafficLayer.addEventListener('onConnected',callback);

  1. 最多支持多大面积展示?

答:已测试了10万平方公里,可以正常渲染,FPS>30;

  1. 支持哪些数据类型?

答:模型数据、栅格瓦片数据、GPS地理数据、geojson数据、倾斜摄影、地形等

  1. 多人协同开发怎么办?

答:通过主从服务器的模型可以支持多台机器供开发者动态调用,单台机器可以启动两个UE进程,开发者可以通过配置文件进行服务器的个性化配置。

  1. 大数据渲染怎么做?

答:如果是开发者通过API调用可能会有数据丢失和卡顿,目前仅支持预设置的大数据图层;

  1. 如何监听相机的变化?

答:可以监听使用CloudRenderEngine.addEventListener("camera_changed",callback),返回的数据内容为

img

其中指北针的需求,可以通过实时获取摄像机的yaw来实现,-90为正北方向,0为正东方向,90为正南,-180/180 为正西方向。yaw的数值范围在-180到180,单位是角度。

  1. 如何获取鼠标点击的位置?

答:可以监听使用CloudRenderEngine.camera.addEventListener("clickLocation",callback),返回的数据内容为

{
    "code":200,
    "type":"clickLocation",
    "content":{
        "Location":{
            "longitude":113.49788368740728,
            "latitude":23.182811620066317,
            "altitude":0
         }
    },
    "time":"-",
    "uuid":"-",
     "classType":"CloudRenderEngine"
}
  1. 如何知道三维内容什么时候准备好?

答:可以监听使用CloudRenderEngine.addEventListener("videoInitialised",callback),注意该事件只会被一次调用,如果浏览网页过程中,三维渲染内容短暂掉线,重连之后不会触发该事件

  1. 数据是正确,addToScene()之后场景里面没有显示出来,并且没有报错,是什么原因?

答:先使用setData()进行数据处理,后使用addToScene(),顺序不能错;

  1. 如何通过资产管理平台动态加载L3数据?

答:首先在链接ready之后,通过cloudEngine.setupModelInfo动态请求该工程的基础模型信息;然后创建Engine.AssetLayer类的对象,根据当前摄像机所在的位置,以及加载半径,动态请求模型点位信息。

  1. 如何更新子设备或者子模型?

答:完成第17步之后,可以通过AssetLayer.updateChild和AssetLayer.updateChildren两个接口更新设备和模型内容,可以通过AssetLayer.removeChild和AssetLayer.removeChildren两个接口删除子设备和子模型;

{
    "code": 200,
    "type": "mousedown",
    "button": 0,
    "content": {
        "uuid": "8519711721796433500",
        "point_id": "4760861160637468673",
        "config": {
            "point_id": "4760861160637468673",
            "id": "3801",
            "delta": {
                "x": 0.21,
                "y": -1.35,
                "z": 4.27,
                "rotateX": 0,
                "rotateY": 0,
                "rotateZ": 1.58,
                "scaleY": 5.31,
                "scaleZ": 1.6,
                "scaleX": 0.1
            },
            "image": "https://dtmap-assets.bj.bcebos.com/assets/l3images//pics-leguang/9325810097423254920.png",
            "staticMesh": "/Script/Engine.StaticMesh'/Mapv/UEResource/Modules/GIS/Point/AssetPoint/AssetManagerModels/Meshes/436645139352400802.436645139352400802'",
            "ManagerUUID": "ab653463-5960-4a83-9bdf-052db23631f7",
            "ParentUUID": "8519711721796433500",
            "dynamic": false,
            "name": "436645139352400802"
        }
    },
    "time": "-",
    "uuid": "ab653463-5960-4a83-9bdf-052db23631f7",
    "classType": "AssetLayer",
    "cloudMousePosition": {
        "x": 1458,
        "y": 326
    },
    "cloudMouseRatio": {
        "x": 0.759375,
        "y": 0.30185185185185187
    },
    "cloudSceneLocation": {
        "x": 100030.90751324566,
        "y": 606205.3555304102,
        "z": 7690.661439
    },
    "GeographicLocation": {
        "longitude": 113.31009492931034,
        "latitude": 23.50829486744274,
        "altitude": 76.90661439
    },
    "target": null
}