本文整理汇总了C++中ogre::Matrix4::setTrans方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4::setTrans方法的具体用法?C++ Matrix4::setTrans怎么用?C++ Matrix4::setTrans使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::Matrix4
的用法示例。
在下文中一共展示了Matrix4::setTrans方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addToVertices
int IcoSphere::addToVertices(std::list<VertexPair> *target, const Ogre::Vector3 &position, const Ogre::ColourValue &colour, float scale)
{
Ogre::Matrix4 transform = Ogre::Matrix4::IDENTITY;
transform.setTrans(position);
transform.setScale(Ogre::Vector3(scale, scale, scale));
for (int i = 0; i < (int)vertices.size(); i++)
target->push_back(VertexPair(transform * vertices[i], colour));
return vertices.size();
}
示例2:
void
BoxCenterMovable::getBoundingBoxCenter()
{
if(object.lock()->hasProperty("bounding box") && object.lock()->hasProperty("position"))
{
Ogre::AxisAlignedBox aabb = VariantCast<Ogre::AxisAlignedBox>(object.lock()->getProperty("bounding box"));
/*Ogre::Vector3 position = VariantCast<Ogre::Vector3>(object.lock()->getProperty("position"));
Ogre::Matrix4 matTrans;
matTrans.makeTrans( position );
aabb.transformAffine(matTrans);*/
Ogre::Matrix4 transform = Ogre::Matrix4::IDENTITY;
Ogre::Matrix3 rot3x3;
if (object.lock()->hasProperty("orientation"))
{
Ogre::Quaternion orientation = VariantCast<Ogre::Quaternion>(object.lock()->getProperty("orientation"));
orientation.ToRotationMatrix(rot3x3);
}
else
{
rot3x3 = Ogre::Matrix3::IDENTITY;
}
Ogre::Matrix3 scale3x3;
if (object.lock()->hasProperty("scale"))
{
Ogre::Vector3 scale = VariantCast<Ogre::Vector3>(object.lock()->getProperty("scale"));
scale3x3 = Ogre::Matrix3::ZERO;
scale3x3[0][0] = scale.x;
scale3x3[1][1] = scale.y;
scale3x3[2][2] = scale.z;
}
else
{
scale3x3 = Ogre::Matrix3::IDENTITY;
}
transform = rot3x3 * scale3x3;
if (object.lock()->hasProperty("position"))
{
Ogre::Vector3 position = VariantCast<Ogre::Vector3>(object.lock()->getProperty("position"));
transform.setTrans(position);
}
aabb.transformAffine(transform);
mCenterPosWC = aabb.getCenter();
}
}
示例3: BuildTransformMatrix
//
// 根据输入的平移, 旋转, 缩放分量创建出位置变换矩阵.
//
void FairyEditorFrame::BuildTransformMatrix(Ogre::Matrix4& Matrix, const Ogre::Vector3& position, const Ogre::Quaternion rotate, const Ogre::Vector3 scale)
{
Ogre::Matrix4 posMatrix;
Ogre::Matrix4 scaleMatrix;
Ogre::Matrix4 rotateMatrix(rotate);
posMatrix = Ogre::Matrix4::IDENTITY;
posMatrix.setTrans(position);
scaleMatrix = Ogre::Matrix4::IDENTITY;
scaleMatrix.setScale(scale);
// 最终的变换矩阵.
Matrix = posMatrix * rotateMatrix * scaleMatrix;
}
示例4: setupOgre
bool Oculus::setupOgre(Ogre::SceneManager *sm, Ogre::RenderWindow *win, Ogre::SceneNode *parent)
{
m_window = win;
m_sceneManager = sm;
Ogre::LogManager::getSingleton().logMessage("Oculus: Setting up Ogre");
if(parent)
m_cameraNode = parent->createChildSceneNode("StereoCameraNode");
else
m_cameraNode = sm->getRootSceneNode()->createChildSceneNode("StereoCameraNode");
m_cameras[0] = sm->createCamera("CameraLeft");
m_cameras[1] = sm->createCamera("CameraRight");
Ogre::MaterialPtr matLeft = Ogre::MaterialManager::getSingleton().getByName("Ogre/Compositor/Oculus");
Ogre::MaterialPtr matRight = matLeft->clone("Ogre/Compositor/Oculus/Right");
Ogre::GpuProgramParametersSharedPtr pParamsLeft = matLeft->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
Ogre::GpuProgramParametersSharedPtr pParamsRight = matRight->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
Ogre::Vector4 hmdwarp;
if(m_stereoConfig)
{
hmdwarp = Ogre::Vector4(m_stereoConfig->GetDistortionK(0),
m_stereoConfig->GetDistortionK(1),
m_stereoConfig->GetDistortionK(2),
m_stereoConfig->GetDistortionK(3));
}
else
{
hmdwarp = Ogre::Vector4(g_defaultDistortion[0],
g_defaultDistortion[1],
g_defaultDistortion[2],
g_defaultDistortion[3]);
}
pParamsLeft->setNamedConstant("HmdWarpParam", hmdwarp);
pParamsRight->setNamedConstant("HmdWarpParam", hmdwarp);
pParamsLeft->setNamedConstant("LensCentre", 0.5f+(m_stereoConfig->GetProjectionCenterOffset()/2.0f));
pParamsRight->setNamedConstant("LensCentre", 0.5f-(m_stereoConfig->GetProjectionCenterOffset()/2.0f));
Ogre::CompositorPtr comp = Ogre::CompositorManager::getSingleton().getByName("OculusRight");
comp->getTechnique(0)->getOutputTargetPass()->getPass(0)->setMaterialName("Ogre/Compositor/Oculus/Right");
for(int i=0;i<2;++i)
{
m_cameraNode->attachObject(m_cameras[i]);
if(m_stereoConfig)
{
// Setup cameras.
m_cameras[i]->setNearClipDistance(m_stereoConfig->GetEyeToScreenDistance());
m_cameras[i]->setFarClipDistance(g_defaultFarClip);
m_cameras[i]->setPosition((i * 2 - 1) * m_stereoConfig->GetIPD() * 0.5f, 0, 0);
m_cameras[i]->setAspectRatio(m_stereoConfig->GetAspect());
m_cameras[i]->setFOVy(Ogre::Radian(m_stereoConfig->GetYFOVRadians()));
// Oculus requires offset projection, create a custom projection matrix
Ogre::Matrix4 proj = Ogre::Matrix4::IDENTITY;
float temp = m_stereoConfig->GetProjectionCenterOffset();
proj.setTrans(Ogre::Vector3(-m_stereoConfig->GetProjectionCenterOffset() * (2 * i - 1), 0, 0));
m_cameras[i]->setCustomProjectionMatrix(true, proj * m_cameras[i]->getProjectionMatrix());
}
else
{
m_cameras[i]->setNearClipDistance(g_defaultNearClip);
m_cameras[i]->setFarClipDistance(g_defaultFarClip);
m_cameras[i]->setPosition((i*2-1) * g_defaultIPD * 0.5f, 0, 0);
}
m_viewports[i] = win->addViewport(m_cameras[i], i, 0.5f*i, 0, 0.5f, 1.0f);
m_viewports[i]->setBackgroundColour(g_defaultViewportColour);
m_compositors[i] = Ogre::CompositorManager::getSingleton().addCompositor(m_viewports[i],i==0?"OculusLeft":"OculusRight");
m_compositors[i]->setEnabled(true);
}
m_ogreReady = true;
Ogre::LogManager::getSingleton().logMessage("Oculus: Oculus setup completed successfully");
return true;
}