Exemple #1
0
void MapView::plotCam(TooN::SE3<> droneToGlobal, bool xyCross, float thick, float len, float alpha)
{
	glEnable(GL_DEPTH_TEST);

	// draw cam
	glMatrixMode(GL_MODELVIEW);  
	glLoadIdentity();
	glScaled(0.1,0.1,0.1);
	CVD::glMultMatrix(mse3ViewerFromWorld * droneToGlobal);
	SetupFrustum();


	glLineWidth(thick*lineWidthFactor);

	if(alpha < 1)
	{
		glEnable(GL_BLEND); 
		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	}
	else
		glDisable(GL_BLEND); 


	glBegin(GL_LINES);
	glColor4f(1,0,0,alpha);
	glVertex3f(-len, 0.0f, 0.0f);
	glVertex3f(len, 0.0f, 0.0f);
	glVertex3f(0.0f, 0.0f, 0.0f);
	glVertex3f(0.0f, -len, 0.0f);

	glColor4f(0,1,0,alpha);
	glVertex3f(0.0f, 0.0f, 0.0f);
	glVertex3f(0.0f, len, 0.0f);

	glColor4f(1,1,1,alpha);
	glVertex3f(0.0f, 0.0f, 0.0f);
	glVertex3f(0.0f, 0.0f, len);
	glEnd();

	
	if(xyCross)
	{
		glLineWidth(1*lineWidthFactor);
		glColor4f(1,1,1, alpha);
		SetupModelView();
		TooN::Vector<2> v2CamPosXY = droneToGlobal.get_translation().slice<0,2>();
		glBegin(GL_LINES);
		glColor4f(1,1,1, alpha);
		glVertex2d(v2CamPosXY[0] - 0.04, v2CamPosXY[1] + 0.04);
		glVertex2d(v2CamPosXY[0] + 0.04, v2CamPosXY[1] - 0.04);
		glVertex2d(v2CamPosXY[0] - 0.04, v2CamPosXY[1] - 0.04);
		glVertex2d(v2CamPosXY[0] + 0.04, v2CamPosXY[1] + 0.04);
		glEnd();
	}
	glDisable(GL_BLEND); 
	glDisable(GL_DEPTH_TEST);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}
Exemple #2
0
void MapView::drawTrail()
{
	glEnable(GL_DEPTH_TEST);

	// draw cam
	glMatrixMode(GL_MODELVIEW);  
	glLoadIdentity();
	glScaled(0.1,0.1,0.1);
	CVD::glMultMatrix(mse3ViewerFromWorld);
	SetupFrustum();
	glEnable(GL_BLEND); 
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glLineWidth(3*lineWidthFactor);
	glBegin(GL_LINES);
	glColor4f(0,1,0,0.6);

	TooN::Vector<3> PTAMScales = filter->getCurrentScales();
	TooN::Vector<3> PTAMOffsets = filter->getCurrentOffsets().slice<0,3>();

	for(unsigned int i=1;i<trailPoints.size();i++)
	{
		if(trailPoints[i].PTAMValid)
		{
			trailPoints[i].pointFilter = trailPoints[i].pointPTAM;
			trailPoints[i].pointFilter[0] *= PTAMScales[0];
			trailPoints[i].pointFilter[1] *= PTAMScales[1];
			trailPoints[i].pointFilter[2] *= PTAMScales[2];
			trailPoints[i].pointFilter += PTAMOffsets;
		}
		if(i > 1 && i < trailPoints.size()-1)
			glVertex3f((float)trailPoints[i].pointFilter[0], (float)trailPoints[i].pointFilter[1], (float)trailPoints[i].pointFilter[2]);
		glVertex3f((float)trailPoints[i].pointFilter[0], (float)trailPoints[i].pointFilter[1], (float)trailPoints[i].pointFilter[2]);
	}

	glEnd();


	glDisable(GL_DEPTH_TEST);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}
Exemple #3
0
void MapView::plotMapPoints()
{
	
	glEnable(GL_DEPTH_TEST);

	// draw cam
	glMatrixMode(GL_MODELVIEW);  
	glLoadIdentity();
	glScaled(0.1,0.1,0.1);
	CVD::glMultMatrix(mse3ViewerFromWorld);
	SetupFrustum();
	float width = 3.0f;
	float len = 0.04f;

	glLineWidth(width*lineWidthFactor);
	glBegin(GL_LINES);
	glColor3f(1,0,0);
	glLineWidth(5.0f);

	std::vector<tvec3>* mpl = &(ptamWrapper->mapPointsTransformed);
	
	for(unsigned int i=0;i<mpl->size();i++)
	{
		TooN::Vector<3> pos = (*mpl)[i];
		
		glVertex3f((float)pos[0]-len, (float)pos[1], (float)pos[2]);
		glVertex3f((float)pos[0]+len, (float)pos[1], (float)pos[2]);		
		glVertex3f((float)pos[0], (float)pos[1]-len, (float)pos[2]);
		glVertex3f((float)pos[0], (float)pos[1]+len, (float)pos[2]);		
		glVertex3f((float)pos[0], (float)pos[1], (float)pos[2]-len);
		glVertex3f((float)pos[0], (float)pos[1], (float)pos[2]+len);
	}

	glEnd();


	glDisable(GL_DEPTH_TEST);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	
}
Exemple #4
0
void MapView::plotGrid()
{
	// Update viewer position according to mouse input:

 	std::pair<TooN::Vector<6>, TooN::Vector<6> > pv6 = myGLWindow->GetMousePoseUpdate();
	TooN::SE3<> se3CamFromMC;
	se3CamFromMC.get_translation() = mse3ViewerFromWorld * TooN::makeVector(0,0,0);
	mse3ViewerFromWorld = TooN::SE3<>::exp(pv6.first) * 
	se3CamFromMC * TooN::SE3<>::exp(pv6.second).inverse() * se3CamFromMC.inverse() * mse3ViewerFromWorld;

	myGLWindow->SetupViewport();
	glClearColor(0,0,0,0);
	glClearDepth(1);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glEnable(GL_POINT_SMOOTH);
	//glEnable(GL_LINE_SMOOTH);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glColorMask(1,1,1,1);
	glDisable(GL_DEPTH_TEST);

	// draw grid
	SetupFrustum();
	SetupModelView();
	glLineWidth(1*lineWidthFactor);

	double gridBigSpacing = 1;
	double gridSmallSpacing = 0.2;
	double gridBigMax = 30;
	double gridSmallMax = 5;

	// fine grid
	glBegin(GL_LINES);
	for(double x=-gridSmallMax; x<=gridSmallMax;x+=gridSmallSpacing)
	{
		if(x != 0 && (x-floor(x)) > 0.1)
		{
			glColor3f(0.2f,0.2f,0.2f);
			glVertex3d(x, -gridSmallMax, 0.0);
			glVertex3d(x, gridSmallMax, 0.0);
		}
	}
	for(double y=-gridSmallMax; y<=gridSmallMax;y+=gridSmallSpacing)
	{
		if(y != 0 && (y-floor(y)) > 0.1)
		{
			glColor3f(0.25f,0.25f,0.25f);
			glVertex3d(-gridSmallMax,y, 0.0);
			glVertex3d(gridSmallMax,y, 0.0);
		}
	}
	glEnd();


	//big grid
	glLineWidth(2*lineWidthFactor);
	glBegin(GL_LINES);
	for(double x=-gridBigMax; x<=gridBigMax;x+=gridBigSpacing)
	{
		if(x != 0)
		{
			glColor3f(0.6f,0.6f,0.6f);
			glVertex3d(x, -gridBigMax, 0.0);
			glVertex3d(x, gridBigMax, 0.0);
		}
	}
	for(double y=-gridBigMax; y<=gridBigMax;y+=gridBigSpacing)
	{
		if(y != 0)
		{
			glColor3f(0.6f,0.6f,0.6f);
			glVertex3d(-gridBigMax,y, 0.0);
			glVertex3d(gridBigMax,y, 0.0);
		}
	}
	glEnd();


	//xy lines
	glLineWidth(2.5*lineWidthFactor);
	glBegin(GL_LINES);

	glColor3f(1,1,1);
	glVertex3d(-gridBigMax,0, 0.0);
	glVertex3d(gridBigMax,0, 0.0);
	glVertex3d(0,-gridBigMax, 0.0);
	glVertex3d(0,gridBigMax, 0.0);

	// colored xy lines
	glColor3f(1,0,0);
	glVertex3d(0,0,0);
	glVertex3d(1,0,0);
	glColor3f(0,1,0);
	glVertex3d(0,0,0);
	glVertex3d(0,1,0);
	glColor3f(1,1,1);
	glVertex3d(0,0,0);
	glVertex3d(0,0,1);
	glEnd();



}