Image我正在做一个rviz插件项目,在这个项目中我需要在两个坐标之间移动一个ogre立方体网格结构。
下面是我为此所做的代码
Ogre::Vector3 src (1,2,3);
Ogre::Vector3 destination(4,5,6);
//manual object
static int count=0;
const std::string& filename="cube.mesh";
Ogre::MeshPtr cube= rviz::loadMeshFromResource(filename);
std::stringstream str;
str << "cube" << count++;
Ogre::Entity *entity = scene_manager_->createEntity(str.str(),cube);
Ogre::SceneNode* parent_node = scene_manager_->getRootSceneNode();
parent_node ->attachObject(entity);
parent_node ->setPosition((src+destination)/2); //by doing this the cube passes through mid point
Ogre::Radian angle = src.angleBetween(destination);
//here is some error,
Ogre::Quaternion angle_x((angle), Ogre::Vector3::UNIT_X);
Ogre::Quaternion angle_y((angle), Ogre::Vector3::UNIT_Y);
Ogre::Quaternion angle_z((angle), Ogre::Vector3::UNIT_Z);
parent_node ->rotate(angle_x*angle_y*angle_z);然而,它不会在两个向量之间对齐。请帮帮忙。
发布于 2020-03-25 21:00:03
为了得到从src点到目标1的方向,你必须减去这些位置,得到向量。
据我所知(对Ogre一无所知),src.angleBetween(destination);给出了从原点到目标的方向和从原点到源的方向之间的角度差。请注意,“源到源”和“源到目标”方向之间是而不是角度。
此外,Ogre::Radian angle是标量值,以弧度为单位的角度,您不能从该值获得旋转矩阵(需要矩阵来对齐向量)
https://stackoverflow.com/questions/60830654
复制相似问题