2.6 视点获取与定位
在 CooWasm 三维场景中,视点的获取与设置通过Camera类实现,核心逻辑围绕参数bGet展开,以下为详细操作指南。
1.视点信息获取
使用Camera类构造函数时,通过设置bGet参数可获取当前场景的视点参数:
默认获取:不显式声明bGet时,默认执行获取操作
let camera = new CooWasm.Camera({}, state => {});
显式获取:明确设置bGet: true(与默认效果一致)
let camera = new CooWasm.Camera({
bGet: true
}, state => {});
参数读取:调用后可从camera对象中获取以下视点参数,可通过这些参数进行定位:focalPoint:目标点坐标(Vec3Obj类型)azimuth:方位角(水平旋转角度)pitch:俯仰角(垂直旋转角度)distance:相机到目标点的距离duration:飞行动画持续时间(单位:秒)
2.视点信息设置
设置视点时需将bGet设为false,支持以下两种实现方式:
动态对象方法,通过构造函数传入参数对象实现视点设置:
let camera = new CooWasm.Camera({
bGet: false,
focalPoint: new CooWasm.Vec3Obj(120.0, 30.0, 0),
azimuth: 115,
pitch: -45,
distance: 600,
duration: 5
}, state => {
camera.locate(flag => {//实际定位动作触发
console.log("locate over");//实际定位动作完成
});
});
静态函数调用:
camera = CooWasm.Camera.locateFrom(CooWasm.Vec3Obj.fromStr("120.0 30.0 0"), 115, -45, 600, 5, state => {
console.log("locate over" + state);
});
3.视点定位动作触发
无论获取还是设置视点,均需手动调用locate()触发飞行动画,飞行到目标视点后,会触发完成回调,开发者可在此时做相关逻辑。
camera.locate(state => {
if(state){ //定位成功
console.log("locate over");
//do something...
}else{ //定位失败
console.log("locate failed");
//do something...
}
});
4.视点信息更新
Camera还提供update()方法,用于已有Camera对象的参数更新,可参见api文档
camera.update({
duration: 1
}, state => {
//do something...
});