| 
  | 
Hi,
I'm trying to use POVRay to generate test data for computer vision 
algorithms and among other things I need the depth information of the 
scene. With MegaPOV there was a function which lets you do it, but 
MegaPOV won't work with POVRay 3.7 and I would prefer to use the 3.7 
generation because of the multicore support.
I already hacked up the code so I can ouput depthmap and camera 
parameters, but I'm missing the "integration" (using commandline 
switches, determining automatic filenames for animations etc.) I find it 
quite hard to understand the "big picture" in terms of architecture, who 
sends which messages, who receives them, where is certain data 
located/computed (like filenames) so it would be nice if somebody could 
help me out.
I guess having depthmaps is interesting for other people too, so a 
commandline parameter / config file option that outputs depth along with 
the image would be a nice addition to POVRay.
Right now I have the following:
An additional image_depth in ViewData (frontend/renderfrontend.h)
The imge_depth is initialized in RenderFrontend::CreateView() inside the 
if(obj.TryGetBool(kPOVAttrib_OutputToFile, true)) condition.
I changed the TracePixel::operator() so that it returns depth 
information and in TraceTask::SimpleSamplingM0() i create a 
vector<Colour> pixelsDepth where the depth is stored (in the red channel 
of the colour)
I call GetViewData()->CompletedRectangle(rect, serial, pixelsDepth, 1, 
finalTrace) which creates additional messages for the frontend.
In the ImageMessageHandler::DrawPixelBlockSet() the depth information is 
written to vd.image_depth
Then I make an additional call to
vhi->second.render.HandleMessage(sceneData, vhi->second.data, ident, msg)
in RenderFrontend::HandleRenderMessage() inside the
if(ident == kPOVMsgIdent_Done) block, i.e. when the image is finished.
In RenderMessageHandler::HandleMessage() I have an additional
case kPOVMsgIdent_Done and there I write the image_depth data to disk, I 
use a static filename since I couldn't figure out how to access the 
outputfilename.
Also I have code in Scene::SendDoneMessage() to write camera parameters 
to disk.
It would be nice if somebody could help me integrating this stuff into 
the POVRay system architecture.
cheers
 
 Post a reply to this message 
 | 
  |