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...
});
CopyrightFile Modify: 2025-06-17 14:18:09

results matching ""

    No results matching ""