Пример #1
0
/**
 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;
}
Пример #2
0
//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;
}