分享
查看: 2673|回复: 0

[分享] ThingJS中如何查询并控制3D场景中的物体?

[复制链接]

ThingJS中如何查询并控制3D场景中的物体?

发表于 2019-11-20 14:22:15 来自 分享 阅读模式 倒序浏览
zzv_icon2673 zzr_icon0 查看全部

ThingJS中如何查询并控制3D场景中的物体?

使用query方法就可以查询到3D场景中的物体,并且对该物体进行控制,比如控制物体沿某一路径移动等等。但是,最好是在场景创建的时候就为每一个物体添加诸如id、name等属性,方便在ThingJS中查询到该物体,并且对该物体进行控制。

具体使用方法如下:

  1. // 查询 id 为 001 的对象集合
  2. app.query('#001');
  3. // 查询名称为 car01 的对象集合
  4. app.query('car01');
  5. // 查询类型为 Thing 的对象集合
  6. app.query('.Thing');
  7. // 查询自定义属性 [prop=value] 的对象集合
  8. app.query('["userData/power"=60]');
  9. // 根据正则表达式匹配 name 中包含 'car' 的子物体
  10. app.query(/car/);
  11. // 上行代码等同于
  12. // var reg = new RegExp('car');
  13. // var cars=app.query(reg);
  14. // 注意:
  15. // 通过 query 查询的结果都是满足条件的对象集合(Selector)
  16. // 如需访问单个对象,可通过下标获取,如
  17. var obj=app.query('#001')[0];
  18. // 也可通过循环遍历对象集合
  19. var objs=app.query('.Thing');
  20. objs.forEach(function(obj){
  21. console.log(obj.name)
  22. })
复制代码


查询出来的物体沿某一路径移动:

  1. app.on('load', function () {
  2. // 通过 name 查询到场景中名字叫做car01的车的集合,并且选择控制集合中的第一个元素
  3. var car = app.query('car01')[0];
  4. new THING.widget.Button('方形路径', function () {
  5. // 世界坐标系下坐标点构成的数组 关于坐标的获取 可利用「工具」——>「拾取场景坐标」
  6. var path = [[0, 0, 0], [20, 0, 0], [20, 0, 10], [0, 0, 10], [0, 0, 0]];
  7. car.movePath({
  8. orientToPath: true, // 物体移动时沿向路径方向
  9. path: path, // 路径坐标点数组
  10. time: 5 * 1000, // 路径总时间 毫秒
  11. delayTime: 1000, // 延时 1s 执行
  12. lerpType: null, // 插值类型(默认为线性插值)此处设置为不插值
  13. // 仅当无循环时 有回调函数
  14. complete: function (ev) {
  15. console.log(ev.object.name + "移动结束")
  16. }
  17. });
  18. })
复制代码



avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t