ogre在人物头顶画名字

void CEngine::MoveableText()
{
    Ogre::Entity* ent1 = m_sceneMgr->createEntity("robot1", "robot.mesh");
    Ogre::SceneNode* node1 = m_sceneMgr->getRootSceneNode()->createChildSceneNode();
    node1->attachObject(ent1);

    Ogre::Entity* ent2 = m_sceneMgr->createEntity("robot2", "robot.mesh");
    Ogre::SceneNode* node2 = m_sceneMgr->getRootSceneNode()->createChildSceneNode(Ogre::Vector3(100,0,100));
    node2->attachObject(ent2);

    Ogre::Vector3 Center1 = node1->getPosition();
    Ogre::Vector3 Center2 = node2->getPosition();

    //create labels for each node...
    Ogre::SceneNode* lableNode1 = m_sceneMgr->getRootSceneNode()->createChildSceneNode("robot 1");
    Ogre::MovableText* lable1 = new Ogre::MovableText("label 1", "robot 1", "BlueHighway", 1.0, Ogre::ColourValue::Black);
    lable1->setTextAlignment(Ogre::MovableText::H_CENTER, Ogre::MovableText::V_ABOVE);
    lable1->setColor(Ogre::ColourValue::Blue);
    lable1->setAdditionalHeight(2.0);
    lable1->setCastShadows(false);
    lableNode1->attachObject(lable1);
    Ogre::AxisAlignedBox box1 = ent1->getBoundingBox();
    Ogre::Vector3 pos1;
    pos1.x = Center1.x;
    pos1.y = Center1.y + box1.getSize().y;
    pos1.z = Center1.z;
    lableNode1->setPosition(pos1);

    Ogre::SceneNode *LabelNode2 = m_sceneMgr->getRootSceneNode()->createChildSceneNode("Robot 2");
    Ogre::MovableText *Label2 = new Ogre::MovableText("Label 2", "Robot 2", "BlueHighway", 1.0, Ogre::ColourValue::Black);
    Label2->setTextAlignment(Ogre::MovableText::H_CENTER, Ogre::MovableText::V_ABOVE); 
    Label2->setColor(Ogre::ColourValue::Blue);
    Label2->setAdditionalHeight(2.0);
    LabelNode2->attachObject(Label2);
    Ogre::AxisAlignedBox box2 = ent2->getBoundingBox();
    Ogre::Vector3 pos2;
    pos2.x = Center2.x;
    pos2.y = Center2.y + box2.getSize().y;
    pos2.z = Center2.z;
    LabelNode2->setPosition(pos2);

    //create a line from one robot label...
    Ogre::ManualObject *Measure = m_sceneMgr->createManualObject("Measure");
    Measure->begin("BumpyMetal", Ogre::RenderOperation::OT_LINE_LIST); 
    Measure->position(Center1);
    Measure->position(Center2);
    Measure->end();
    Ogre::SceneNode* MeasureNode = m_sceneMgr->getRootSceneNode()->createChildSceneNode("Measure");
    MeasureNode->attachObject(Measure);

    //add a label at the mid-point of the line between robots..
    Ogre::Real distance = Center2.distance(Center1);
    char dimension[20];
    sprintf(dimension, "%.2f", distance);

    Ogre::SceneNode* measureTextNode = m_sceneMgr->getRootSceneNode()->createChildSceneNode("measureText");
    Ogre::MovableText* measureText = new Ogre::MovableText("measure", dimension, "BlueHighway", 1.0, Ogre::ColourValue::Black);
    measureText->setTextAlignment(Ogre::MovableText::H_CENTER, Ogre::MovableText::V_ABOVE); 
    MeasureNode->attachObject(measureText);
    MeasureNode->setPosition(0.5 * (Center1 + Center2));
}

1.将OgreMovableText.h和OgreMovableText.cpp记得加入工程;

2.BlueHighway字体默认是没有的,需要自己添加:

BlueHighway
{
type truetype
source bluehigh.ttf
size 16
resolution 96
}

加入E:\Ogre\ogre_src_v1-8-0\Samples\Media\fonts\sample.fontdef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值