void printScene(Ogre::SceneNode* node, int indent) { for (int i = 0; i < indent; i++) { std::cout << " "; } indent++; std::cout << node->getName() << " " << node->getPosition() << " " << node->getOrientation() * Ogre::Vector3(0, 0, -1) << std::endl; auto objects = node->getAttachedObjectIterator(); while (objects.hasMoreElements()) { for (int i = 0; i < indent; i++) { std::cout << " "; } auto object = objects.getNext(); std::cout << object->getName(); if (auto light = dynamic_cast<Ogre::Light*>(object)) { std::cout << " " << light->getDirection() * Ogre::Vector3(0, 0, -1); } else if (auto cam = dynamic_cast<Ogre::Camera*>(object)) { std::cout << " " << cam->getOrientation() * Ogre::Vector3(0, 0, -1); } std::cout << std::endl; } auto n = node->getChildIterator(); while (n.hasMoreElements()) { printScene(dynamic_cast<Ogre::SceneNode*>(n.getNext()), indent + 1); } }
// ***********************Render Checkpoint METHODS: Rendering Scene************************ // Init Default Scene void initScene(int index, struct scene* aScene, struct pData* poses, int image_count) { // init poses to index aScene->pose = poses[index]; aScene->pose.eye = aScene->pose.center; aScene->pose.eye.val[0] = aScene->pose.eye.val[0] + 1; aScene->pose.up = cvScalar(0.0, 0.0, 1.0, 0.0); // init indices to index aScene->currentIndex = index; aScene->previousIndex = index; // init max image aScene->max_image = image_count; // init angles to 0 aScene->xAngle = 0.0; aScene->yAngle = 0.0; aScene->zAngle = 0.0; if (DEBUG) { printScene(aScene); } }