创建物体
在ThingJS中,可以动态创建或删除 Thing、Marker、Box等常见物体,他们大多继承自 BaseObject 。本章先以创建 Thing 物体为例,讲解创建对象时所需要的参数,其他各类对象会在相应章节中进行具体讲解网页链接
对象创建与删除
创建物体;
var truck = app.create({type: "Thing",name: "truck",position: [-5, 0, 0],url: "https://www.thingjs.com/static/models/truck/",complete: function() {删除物体
truck.destroy();注意事项:
有时候,我们经常会说制作场景,上传场景,下载场景,加载场景,这里的场景其实就是园区,我们通常也会简称为"场景"。
查看示例
示例效果如下图所示:
创建物体参数
创建的物体参数可以分为以下三种:通用参数、特定物体类型(type)的专属参数、系统其他功能。
通用参数:
注意事项
为了更清晰明确的对用户动态创建的物体对象进行管理,建议创建物体对象时,显式指明该物体对象的 parent。如果没有显式填写parent时:
如果没有开启系统层级,则该物体的父亲默认是 root (不会是园区 Campus )
注册层级后创建物体不再默认指定父物体,若需要添加到父物体上,通过设置parent参数指定父物体,不指定默认添加到root下。
type:该物体用什么物体类来创建
id:该物体的编号
name:物体的名字
position:设置世界位置
localPosition:设置在父物体下的相对位置,和 position 只能输入一个
angles:设置世界坐标系下三轴旋转角度,例如:angles:[90,45,90] ,代表在世界坐标系下物体沿X轴旋转90度,沿Y轴旋转45度,沿Z轴旋转90度
scale:设置相对自身坐标系下的缩放比例
parent:设置父物体是谁
特定物体类型(type)的专属参数,这里只列了 “Thing” 物体专属参数,其他物体种类参数可在 本页下方 中查看
url :物体模型资源路径,这个是 “Thing” 物体需要的参数
系统其他功能:
complete:初始化完成后的函数回调
创建物体参数
ThingJS 中的大多数对象基本上都是继承自 BaseObject ,BaseObject 提供了 ThingJS 对象的基本能力。
BaseObject 派生出很多子类,常见的物体种类详见如下:
模型物体:Thing;
基本形体:Box; Sphere; Plane; Cylinder; Tetrahedron; (点击查看示例)
请点击输入图片描述
建筑相关: Campus; Building; Floor; Room;
界面: UIAnchor; Marker; WebView;
粒子: ParticleSystem
线: Line; RouteLine;
其他: Heatmap;
注意事项
在 CamBuilder 中摆放的园区、建筑、楼层、房间、物体等,同步到 ThingJS 中,会自行判断物体类,分别对应类为:campus、building、floor、room、thing。也可将默认类转换为自定义类。
在ThingJS 中创建的园区、建筑、楼层、房间、物体等,可创建自定义类
判断对象物体类
每个物体类都有它自己的类识别属性。
比如 `Building` 物体,使用 `instanceof THING.Building` 方法进行判断。
可以自己上传obj模型,jpg,png,gif,js,css,html,json格式的资源文件
客户端上传
thingjs网站上传
在开发中,引入了场景,添加了对象,那我们如何尽快的找到对象呢?
方法如下:
1.在父类/子类树上,通过parent、children属性找到要控制的对象
2.在分类对象属性树上,通过类身上分类属性找到要控制的对象
3.使用query方法
ThingJS 的 query 方法,包括 全局 和 局部,全局查询是对场景内的所有对象进行查询;局部查询 是在一个对象的子对象中进行查询,如在一个楼层内查询某个设备;如果还需要更精确的缩小查询范围,还可以对查询结果进行继续查询;
查询条件一般是一个字符串,如:car01,.Thing,#100,或正则表达式,可以根据物体的名称、类型、包含的属性等进行查询,也可以对某个对象的子物体进行查询;