PCL setCameraPosition 参数讲解

       

setCameraPosition 的原型如下

void setCameraPosition (double pos_x, double pos_y, double pos_z,
                           double view_x, double view_y, double view_z,
                           double up_x, double up_y, double up_z, int viewport = 0);

pos_x pos_y pos_z为相机所在的位置

view_x view_y  view_z 是焦点所在的位置

up_x  up_y  up_z 的那个坐标轴朝上,若朝上则为1,若朝下为-1

cloudcompare 中正视的的坐标显示如下图,Z轴朝上(up_x=0 up_y=0 up_z=1)而Y轴背离 所以相机位置 pos_y为负值.

如果坐标系看起来不直观,建议拿个盒子画好正视的坐标系 .

以下是切换自动计算相机位置、焦点位置、相机朝向的计算函数

#define    PCL_FACEVIEW      1  //正视
#define    PCL_DOWNVIEW      2  //仰视
#define    PCL_LEFTVIEW      3  //左视
#define    PCL_RIGHTVIEW     4  //右视
#define    PCL_TOPVIEW       5  //俯视
#define    PCL_BACKVIEW      6  //后视

void getCameraParam(int viewPos,PointT minIn,PointT maxIn,PointT &cameraPosOut,PointT &focusPosOut,PointT &upPosOut){


  switch (viewPos) {
  case PCL_FACEVIEW     : //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=0;
    cameraPosOut.y=-300;
    cameraPosOut.z=0;
    upPosOut.x=0;
    upPosOut.y=0;
    upPosOut.z=1;

  }
  break;
  case PCL_DOWNVIEW     :   //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=0;
    cameraPosOut.y=0;
    cameraPosOut.z=-300;
    upPosOut.x=0;
    upPosOut.y=1;
    upPosOut.z=0;
  }
  break;
  case PCL_LEFTVIEW     :  //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=-300.0;
    cameraPosOut.y=0;
    cameraPosOut.z=0;
    upPosOut.x=0;
    upPosOut.y=0;
    upPosOut.z=1;
  }
  break;
  case PCL_RIGHTVIEW    :  //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=300;
    cameraPosOut.y=0;
    cameraPosOut.z=0;
    upPosOut.x=0;
    upPosOut.y=0;
    upPosOut.z=1;

  }
  break;

  case     PCL_TOPVIEW: //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=0;
    cameraPosOut.y=0;
    cameraPosOut.z=300;
    upPosOut.x=0;
    upPosOut.y=1;
    upPosOut.z=0;

  }
  break;
  case     PCL_BACKVIEW:    //OK
  {
    focusPosOut.x=0;
    focusPosOut.y=0;
    focusPosOut.z=0;
    cameraPosOut.x=0;
    cameraPosOut.y=300.0;
    cameraPosOut.z=0;
    upPosOut.x=0;
    upPosOut.y=0;
    upPosOut.z=1.0;
  }
  break;

  }


}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值