Hello everybody, I need your help.

I've made a 3d House, the only thing that I need is to make some camera based collision detection, but I really don't know how to do this, even after searching throw the internet.

This the code for the camera:

Code :
if (freelook_flag)
	{
      		Matrix4x4 m;
 
      		//Changing visualization with mouse
      		buildRotationMatrix(camera.frame.Yaxis, deg2rad(-yrot),  m);
      		transform(m, camera.frame.Xaxis);
      		transform(m, camera.frame.Yaxis);
      		transform(m, camera.frame.Zaxis);
 
		//Keyboard moving
 
      		if (up_key)
		{
				camera.position.x += -camera.frame.Zaxis.x * speed;
	  			camera.position.y += -camera.frame.Zaxis.y * speed;
	  			camera.position.z += -camera.frame.Zaxis.z * speed;
		}
 
      		if (down_key)
		{
	  		camera.position.x += camera.frame.Zaxis.x * speed;
	  		camera.position.y += camera.frame.Zaxis.y * speed;
	  		camera.position.z += camera.frame.Zaxis.z * speed;
		}
 
      		if (left_key)
		{
	  		camera.position.x += -camera.frame.Xaxis.x * speed;
	  		camera.position.y += -camera.frame.Xaxis.y * speed;
	  		camera.position.z += -camera.frame.Xaxis.z * speed;
		}
 
      		if (right_key)
		{
	  		camera.position.x += camera.frame.Xaxis.x * speed;
	  		camera.position.y += camera.frame.Xaxis.y * speed;
	  		camera.position.z += camera.frame.Xaxis.z * speed;
		}
 
		if (UPElevation_key)
		{
	  		camera.position.x += camera.frame.Yaxis.x * speed;
	  		camera.position.y += camera.frame.Yaxis.y * speed;
	  		camera.position.z += camera.frame.Yaxis.z * speed;
		}
 
		if (DownElevation_key)
		{
	  		camera.position.x += -camera.frame.Yaxis.x * speed;
	  		camera.position.y += -camera.frame.Yaxis.y * speed;
	  		camera.position.z += -camera.frame.Yaxis.z * speed;
		}
    	}// fine if (freelook_flag)
 
  	pitch+=xrot;
  	if (pitch>90) pitch=90;
  	if (pitch<-90) pitch=-90;
 
  	Camera temp(camera);
  	Matrix4x4 m2;
  	buildRotationMatrix(temp.frame.Xaxis, deg2rad(pitch),  m2);
  	transform(m2, temp.frame.Xaxis);
  	transform(m2, temp.frame.Yaxis);
  	transform(m2, temp.frame.Zaxis);
 
  	Matrix4x4 c;
  	buildCameraMatrix(temp,c);
  	glMultMatrixf(c.GL_array());
 
  	if (freelook_flag)
    		if(mouse_moved)
      		{
		// pointer at the center of the window
			mouse_moved=false;
			glutWarpPointer(width/2, height/2);
      		}

And I have a method that changes the boolean for every key from true to false...

Can you help me?