thing js 可以自己添加素材吗

2025-05-14 05:22:35
推荐回答(3个)
回答(1):

创建物体

在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() {
    console.log("truck created!");}});
  • 删除物体

    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` 方法进行判断。

  • if ( obj instanceof THING.Building ) {

  •    console.log("This is a building!");}

回答(2):

可以自己上传obj模型,jpg,png,gif,js,css,html,json格式的资源文件

客户端上传

thingjs网站上传

回答(3):

在开发中,引入了场景,添加了对象,那我们如何尽快的找到对象呢?
方法如下:
1.在父类/子类树上,通过parent、children属性找到要控制的对象
2.在分类对象属性树上,通过类身上分类属性找到要控制的对象
3.使用query方法
ThingJS 的 query 方法,包括 全局 和 局部,全局查询是对场景内的所有对象进行查询;局部查询 是在一个对象的子对象中进行查询,如在一个楼层内查询某个设备;如果还需要更精确的缩小查询范围,还可以对查询结果进行继续查询;
查询条件一般是一个字符串,如:car01,.Thing,#100,或正则表达式,可以根据物体的名称、类型、包含的属性等进行查询,也可以对某个对象的子物体进行查询;