在两个Ogre向量之间旋转Ogre手动对象

问题描述 投票:0回答:1

Image我正在一个rviz插件项目中,需要在两个坐标之间移动一个食人魔立方体网格结构。

这是我为此所做的代码

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);

但是它在两个向量之间没有对齐。请帮助。

c++ vector rotation geometry ogre
1个回答
0
投票

要获得从src点到目的地一的方向,您必须减去这些位置,以获得矢量。

据我了解(对Ogre一无所知),src.angleBetween(destination);给出了从原点到消极的方向与从原点到src的方向之间的角度差。请注意,“原点到src”和“ src到目标”方向之间的夹角是[[not角度。

此外,Ogre::Radian angle是标量值,以弧度表示的角度,您不能从该值获得旋转矩阵(对齐向量所需的矩阵)
© www.soinside.com 2019 - 2024. All rights reserved.