ThingJS摄像机总结

飞行

  • 设置摄像机的位置:镜头位置 position 和被拍摄物体的位置 target (又叫目标点)
app.camera.position = [x,y,z];
app.camera.target = [x,y,z];
  • app.camera.fit 聚焦到某物体:
// 盯着某一物体:设置摄像机到物体的“最佳看点”
app.camera.fit(obj);
// 盯着某一坐标点
app.camera.fit({
    position: [100, 100, 100],
    target: [0, 0, 0]
});
  • app.camera.flyTo 飞到某个位置:
// 摄像机飞到一个指定位置
app.camera.flyTo({
    position: [0, 20, 20],
    target: [-30, 10, 0],
    time: 2 * 1000,
    complete: function() {
    console.log("飞行结束");
    }
});
//飞到某物体的左侧
app.camera.flyTo({
    object: obj,
    xAngle: 0, //绕物体自身X轴旋转角度
    yAngle: 90, //绕物体自身Y轴旋转角度
    radiusFactor: 3, //物体包围盒半径的倍数
    time: 1 * 1000,
    complete: function() {
    console.log("飞行结束");
    }
});
  • app.camera.rotateAround 环绕某物体
app.camera.rotateAround({
    object: obj,//环绕的物体
    time: 5*1000,//环绕飞行的时间
    yRotateAngle : 180,//环绕y轴飞行的旋转角度
    loopType:THING.LoopType.PingPong //循环往复环绕
});
  • app.camera.followObject 摄像机跟随物体
app.camera.followObject(obj);

交互

  • move 摄像机水平移动5米:设置移动距离(水平移动,垂直移动),正负代表方向
app.camera.move(5,0);  
  • zoom 摄像机推进10米:设置推进距离,正负代表方向
app.camera.zoom(10);
  • rotateAround 摄像机旋转:环绕 Y 轴、X 轴旋转10度
app.camera.rotateAround({
    target: app.camera.target,
    yRotateAngle: 10,  // 环绕Y轴旋转角度(俯仰面(竖直面)内的角度)
    xRotateAngle: 10,  // 环绕X轴旋转角度(方位面(水平面)内的角度)
    time: 1000  // 环绕飞行的时间
});
  • 摄像机观察模式的切换:
var viewMode = app.camera.viewMode;
if (viewMode = "normal") {
    app.camera.viewMode = THING.CameraView.TopView;   //切换成顶视图(2D)模式
}else {
    app.camera.viewMode = THING.CameraView.Normal;   //切换成 3D 模式
}
  • 关闭默认的交互操作:左键旋转、右键平移、滑轮缩放
app.camera.inputEnabled=false // 关闭所有默认的交互操作(旋转、平移、缩放);
app.camera.enablePan=false // 关闭默认的平移操作;
app.camera.enableRotate=false // 关闭默认的旋转操作;
app.camera.enableZoom=false // 关闭默认的缩放操作;
  • 设置摄像机的上下水平移动范围:摄像机转动范围
//设置摄像机水平角度范围[最小值, 最大值]
app.camera.yAngleLimitRange = [30, 60];
//设置摄像机俯仰角度范围[最小值, 最大值]
app.camera.xAngleLimitRange = [30, 60];

在地球上控制相机—在地球上使用摄像机,相关操作需要添加 isEarth 参数

  1. 使用快捷代码-地图-动态创建map
  2. 设置园区在地球上的坐标(坐标可利用 代码块——>摄像机——>设置位置快捷设置视角,也可以通过 app.camera.log() 获取)
  3. 将摄像机飞到指定的位置时,创建园区
  4. 在earthFlyTo方法的回调函数中去创建园区
  • app.camera.earthFlyTo 摄像机在地球上飞行到指定位置:
app.camera.earthFlyTo({
    time: 3000,  // 飞行时间 ms
    lonlat: sceneLonlat,  //  要飞到的目标点的经纬度
    height: 200,  // 摄像机离地高度
    heading: 0,  // 水平角(方位角)单位:度
    pitch: 45,  // 垂直角(俯仰角)单位:度
    complete: function () {
    }
});
摄像机水平旋转:在地球上使用摄像机,相关操作需要添加 isEarth 参数
app.camera.rotateAround({
    isEarth: true,
    target: app.camera.target,
    yRotateAngle: 360,  // 水平旋转360度
    xRotateAngle: 0,  // 环绕X轴旋转角度(方位面(水平面)内的角度)
    time: 5000  // 环绕飞行的时间
});
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值