3d控件 解决了!3D可视化应用中的封装问题
控件
开发人员可以使用ThingJS中内置的控件来集成一些功能应用的开发,或者定制开发控件来封装一些功能模块。
内置控件
目前,ThingJS有内置的“迷你地图”、“第一人称行走”和“自由飞行”控件供开发者使用。
需要注意的事项
目前上述内置控件暂时与地球的应用不兼容。
可以通过app.addControl()添加相应的控件。
使用app.removeControl()删除相应的控件。
小地图控件
文章图片
按照以下方式创建代码:
app.addControl(
新东西。minimpcontrol({
宽度:200,
身高:200,
位置:东西。角型。右下方,
不透明度:0.8,
比例:1,
角度:0°,
【3d控件 解决了!3D可视化应用中的封装问题】鼠标滚轮:真
})
);
参数有以下含义:
width: 小地图宽度,单位 px;height: 小地图高度,单位 px;position: 相对屏幕坐标的定位位置;左上:THING.CornerType.LeftTop右上:THING.CornerType.RightTop右下:THING.CornerType.RightBottom左下:THING.CornerType.LeftBottomopacity:不透明度设置;scale: 小地图缩放比例;angle: 小地图旋转角度;mousewheel: 小地图是否支持鼠标缩放,默认为 false;参见示例
第一人称行走
这个控件可以控制“第一人称行走”的交互模式。
添加控件后,默认交互是键盘按键:
A:左移D:右移W:前进S:后退空格:跳跃(当开启重力时生效)鼠标:
按下左键旋转场景按照以下方式创建代码:
app.addControl(新玩意。WalkControl({
行走速度:0.02,//行走速度
旋转速度:0.25,//鼠标操作时场景旋转的速度
重力:29.8,//重量
眼睛高度:1.6,//视点高度
跳跃速度:10,//跳跃速度
EnableKeyRotate: false,//是否开启键盘控制旋转默认关闭
useconflict:false,//是否执行水平碰撞检测默认关闭
使用重力:true //默认情况下打开重力
}));
参数有以下含义:
walkSpeed:行走速度;turnSpeed:鼠标操作时旋转场景的速度;gravity:重量;eyeHeight:视点高度;jumpSpeed:跳跃速度;enableKeyRotate:是否开启键盘控制旋转,默认关闭,开启后按下 A 键向左旋转,按下 D 键向右旋转;useCollision:是否进行水平方向碰撞检测,默认关闭;useGravity:是否开启重力,默认开启,按空格键可进行跳跃,关闭后,空格键跳跃失效;参见示例
惯性飞行
添加控件后:
键盘:W A S D控制飞行Q E控制升降;
鼠标:按住左键拖动方向。
按照以下方式创建代码:
app.addControl(新玩意。fly control());
参见示例
自定义控件
开发人员可以自定义类,通过实现onAdd、onRemove、onUpdate方法扩展控件,开发自己的组件,方便功能模块的复用。
例如,定义一个CustomControl类(建议使用ES6来定义该类的语法):
//自定义控件
CustomControl类{
constructor() {
}
onAdd(app) {
}
onRemove() {
}
ONU update(){
}
}
//添加控件
var ctrl = app . addcontrol(new custom control());
//删除控件
app . remove control(ctrl);
添加控件时,将调用自定义控件的onAdd方法,并传入应用程序对象。
添加控件后,自定义控件的onUpdate方法每帧执行一次。
当控件被删除时,将调用自定义控件的onRemove方法。
本文由黄游物联网三维可视化开发平台组织发布。欢迎加入http://www.thingjs.com/发展集团225986500
推荐阅读
- 单纯的女生你伤不起,因为过了几年,你看到她就会内疚
- 新冠肺炎患者集中康复出院 “白衣战士”画新作:“相信阳光离我们不远了”
- 只想躺平?您可能是病了!“工作倦怠”正式成为疾病
- 「时光的味道」当湾区新声代遇上老友记,一场神奇的约会开始了...
- 男人已经不再主动了,聪明女人会怎么做?
- 挪个泡菜坛子 洗个热水澡就中风了?老人冬季洗澡不注意这些细节 当心中风
- 王者荣耀:国庆皮肤即将上线,返场皮肤即将重现,你准备好了吗?
- 王者荣耀:逆风局除了依靠团队协作,王昭君还有3个法师
- 管泽元刚晒出收获,就被指“追星翻车”,这位段子手得注意了
- 前妻离婚后,我把自己的房子让给了前妻