/** Function for getting the object space position of any node that's not a camera Traverse up the tree until we're on the root node, then do a modeltransform all the way back down **/ Vector3 Node::getPosition() { stack<Node*> nodes; //Stack of node pointers //Upward traversal Node* currentNode = this; while (currentNode->parent != NULL) { nodes.push(currentNode); currentNode = currentNode->parent; } //For each element do a model transformation glMatrixMode(GL_MODELVIEW); glPushMatrix(); //Remember the current modelview matrix just in case glLoadIdentity(); //Clear the modelview matrix while (!nodes.empty()) { currentNode = nodes.top(); currentNode->modelTransform(); nodes.pop(); } //Get the matrix float m[16]; glGetFloatv(GL_MODELVIEW_MATRIX, m); glPopMatrix(); Vector3 returnVec(m[12], m[13], m[14]); return returnVec; }
//osg vector z qt tabulky osg::Vec3 SceneTreeManager::tableToVec3( QTableWidget * widgetToConverse, bool * ok /*= NULL*/ ) { if (widgetToConverse==NULL) { osg::Vec3 retval(0,0,0); return retval; } if (widgetToConverse->rowCount()!=1 || widgetToConverse->columnCount()!=3) { if (ok) *ok = false; osg::Vec3 retval(0,0,0); return retval; } osg::Vec3 returnVec(widgetToConverse->item(0,0)->text().toDouble(ok),widgetToConverse->item(0,1)->text().toDouble(ok),widgetToConverse->item(0,2)->text().toDouble(ok)); return returnVec; }