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

zzzzzker 3月前 370

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

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

      具体使用方法如下:

// 查询 id 为 001 的对象集合
app.query('#001');
// 查询名称为 car01 的对象集合
app.query('car01');
// 查询类型为 Thing 的对象集合
app.query('.Thing');
// 查询自定义属性 [prop=value] 的对象集合
app.query('["userData/power"=60]');
// 根据正则表达式匹配 name 中包含 'car' 的子物体
app.query(/car/);
// 上行代码等同于
// var reg = new RegExp('car');
// var cars=app.query(reg);

// 注意:
// 通过 query 查询的结果都是满足条件的对象集合(Selector)
// 如需访问单个对象,可通过下标获取,如
var obj=app.query('#001')[0];
// 也可通过循环遍历对象集合
var objs=app.query('.Thing');
objs.forEach(function(obj){
  console.log(obj.name)
})


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

app.on('load', function () {
	// 通过 name 查询到场景中名字叫做car01的车的集合,并且选择控制集合中的第一个元素
	var car = app.query('car01')[0];

	new THING.widget.Button('方形路径', function () {
		// 世界坐标系下坐标点构成的数组 关于坐标的获取 可利用「工具」——>「拾取场景坐标」
		var path = [[0, 0, 0], [20, 0, 0], [20, 0, 10], [0, 0, 10], [0, 0, 0]];
		car.movePath({
			orientToPath: true, // 物体移动时沿向路径方向
			path: path, // 路径坐标点数组
			time: 5 * 1000, // 路径总时间 毫秒
			delayTime: 1000, // 延时 1s 执行
			lerpType: null, // 插值类型(默认为线性插值)此处设置为不插值
			// 仅当无循环时 有回调函数
			complete: function (ev) {
				console.log(ev.object.name + "移动结束")
			}
		});
	})



最新回复 (0)

你可以在 登录 or 注册 后,对此帖发表评论!

返回