Skip to content

Commit

Permalink
-- styled
Browse files Browse the repository at this point in the history
  • Loading branch information
Marcin Rogowski committed Mar 15, 2013
1 parent 26af60d commit 28b2346
Show file tree
Hide file tree
Showing 8 changed files with 1,347 additions and 1,457 deletions.
244 changes: 116 additions & 128 deletions CloudManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ CloudManager::CloudManager()
{
useKColor = true;
should_quit = false;

//initialPointScale = 0.001;
initialPointScale = ConfigManager::getFloat("Plugin.KinectDemo.KinectDefaultOn.KinectPointSize",0.0f);
initialPointScale = ConfigManager::getFloat("Plugin.KinectDemo.KinectDefaultOn.KinectPointSize", 0.0f);
pgm1 = new osg::Program;
pgm1->setName("Sphere");
std::string shaderPath = ConfigManager::getEntry("Plugin.Points.ShaderPath");
Expand All @@ -29,7 +28,6 @@ CloudManager::CloudManager()
pgm1->setParameter(GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_TRIANGLE_STRIP);
minDistHSV = 700;
maxDistHSV = 5000;

kinectgrp = new osg::Group();
osg::StateSet* state = kinectgrp->getOrCreateStateSet();
state->setAttribute(pgm1);
Expand All @@ -38,11 +36,9 @@ CloudManager::CloudManager()
float pscale = 1.0;
osg::Uniform* _scaleUni = new osg::Uniform("pointScale", 1.0f * pscale);
kinectgrp->getOrCreateStateSet()->addUniform(_scaleUni);

_root = new osg::MatrixTransform();
SceneManager::instance()->getObjectsRoot()->addChild(_root);
_root->addChild(kinectgrp);

}

CloudManager::~CloudManager()
Expand All @@ -57,164 +53,156 @@ bool CloudManager::isCacheDone()
void CloudManager::update()
{
static bool frameLoading = false;
bool cDone;
if(true)
{
if(cvr::ComController::instance()->isMaster())
bool cDone;

if (true)
{
if (cvr::ComController::instance()->isMaster())
{
cDone = _cacheDone;
int numSlaves = cvr::ComController::instance()->getNumSlaves();
bool sDone[numSlaves];
cvr::ComController::instance()->readSlaves(sDone,sizeof(bool));
for(int i = 0; i < numSlaves; i++)
{
cDone = cDone && sDone[i];
}
cvr::ComController::instance()->sendSlaves(&cDone,sizeof(bool));
cDone = _cacheDone;
int numSlaves = cvr::ComController::instance()->getNumSlaves();
bool sDone[numSlaves];
cvr::ComController::instance()->readSlaves(sDone, sizeof(bool));

for (int i = 0; i < numSlaves; i++)
{
cDone = cDone && sDone[i];
}

cvr::ComController::instance()->sendSlaves(&cDone, sizeof(bool));
}
else
{
cDone = _cacheDone;
cvr::ComController::instance()->sendMaster(&cDone,sizeof(bool));
cvr::ComController::instance()->readMaster(&cDone,sizeof(bool));
cDone = _cacheDone;
cvr::ComController::instance()->sendMaster(&cDone, sizeof(bool));
cvr::ComController::instance()->readMaster(&cDone, sizeof(bool));
}

if(!cDone)
if (!cDone)
{
//std::cerr << "Waiting for load to finish." << std::endl;
return;
//std::cerr << "Waiting for load to finish." << std::endl;
return;
}

cvr::ComController::instance()->sync();
//Add not here?

//Add not here?
return;
}

return;
}
if(cDone)
if (cDone)
{
std::cerr << "Load Finished." << std::endl;
//Add loaded node to root

std::cerr << "Load Finished." << std::endl;
//Add loaded node to root
}
else
{
// std::cerr << "Waiting for GPU load finish." << std::endl;
// std::cerr << "Waiting for GPU load finish." << std::endl;
}

}

void CloudManager::run()
{
//Do functions
cerr << ".";
if(kinectgrp != NULL)
{
//Do functions
cerr << ".";

zmq::context_t context2(1);
cloudT_socket = NULL;
cloudT_socket = new SubSocket<RemoteKinect::PointCloud> (context2, ConfigManager::getEntry("Plugin.KinectDemo.KinectServer.PointCloud"));

packet = new RemoteKinect::PointCloud();
while(!should_quit)
if (kinectgrp != NULL)
{

//printf(".");
if(cloudT_socket != NULL)
{
// printf("NotNull");
zmq::context_t context2(1);
cloudT_socket = NULL;
cloudT_socket = new SubSocket<RemoteKinect::PointCloud> (context2, ConfigManager::getEntry("Plugin.KinectDemo.KinectServer.PointCloud"));
packet = new RemoteKinect::PointCloud();

if (cloudT_socket->recv(*packet))
{
float r, g, b, a;
osg::Vec3Array* kinectVertices = new osg::Vec3Array;
// kinectVertices->empty();
osg::Vec3Array* normals = new osg::Vec3Array;
osg::Vec4Array* kinectColours = new osg::Vec4Array;
// kinectColours->empty();
// cerr << ".";
//int size = packet->points_size();
//printf("Points %i\n",size);
if(true)
while (!should_quit)
{
for (int i = 0; i < packet->points_size(); i++)
//printf(".");
if (cloudT_socket != NULL)
{
/*
osg::Vec3f ppos((packet->points(i).x() / 1000) + Skeleton::camPos.x(),
(packet->points(i).z() / -1000) + Skeleton::camPos.y(),
(packet->points(i).y() / 1000) + Skeleton::camPos.z());
*/
osg::Vec3f ppos((packet->points(i).x() / 1000),
(packet->points(i).z() / -1000),
(packet->points(i).y() / 1000));
kinectVertices->push_back(ppos);
//useKColor
if (useKColor)
// printf("NotNull");
if (cloudT_socket->recv(*packet))
{
r = (packet->points(i).r() / 255.);
g = (packet->points(i).g() / 255.);
b = (packet->points(i).b() / 255.);
a = 1;
kinectColours->push_back(osg::Vec4f(r, g, b, a));
float r, g, b, a;
osg::Vec3Array* kinectVertices = new osg::Vec3Array;
// kinectVertices->empty();
osg::Vec3Array* normals = new osg::Vec3Array;
osg::Vec4Array* kinectColours = new osg::Vec4Array;

// kinectColours->empty();
// cerr << ".";
//int size = packet->points_size();
//printf("Points %i\n",size);
if (true)
{
for (int i = 0; i < packet->points_size(); i++)
{
/*
osg::Vec3f ppos((packet->points(i).x() / 1000) + Skeleton::camPos.x(),
(packet->points(i).z() / -1000) + Skeleton::camPos.y(),
(packet->points(i).y() / 1000) + Skeleton::camPos.z());
*/
osg::Vec3f ppos((packet->points(i).x() / 1000),
(packet->points(i).z() / -1000),
(packet->points(i).y() / 1000));
kinectVertices->push_back(ppos);

//useKColor
if (useKColor)
{
r = (packet->points(i).r() / 255.);
g = (packet->points(i).g() / 255.);
b = (packet->points(i).b() / 255.);
a = 1;
kinectColours->push_back(osg::Vec4f(r, g, b, a));
}
else
{
kinectColours->push_back(getColorRGB(packet->points(i).z()));
}
}

//cerr << kinectVertices->size();
osg::Geode* kgeode = new osg::Geode();
kgeode->setCullingActive(false);
osg::Geometry* nodeGeom = new osg::Geometry();
osg::StateSet* state = nodeGeom->getOrCreateStateSet();
nodeGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POINTS, 0, kinectVertices->size()));
osg::VertexBufferObject* vboP = nodeGeom->getOrCreateVertexBufferObject();
vboP->setUsage(GL_STREAM_DRAW);
nodeGeom->setUseDisplayList(true);
nodeGeom->setUseVertexBufferObjects(true);
nodeGeom->setVertexArray(kinectVertices);
nodeGeom->setColorArray(kinectColours);
nodeGeom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
kgeode->addDrawable(nodeGeom);
kgeode->dirtyBound();
//if (kinectgrp != NULL) _root->removeChild(kinectgrp);
kinectgrp->removeChild(0, 1);
kinectgrp->addChild(kgeode);
}
}
else

if (should_quit)
{
kinectColours->push_back(getColorRGB(packet->points(i).z()));
pgm1->ref();
kinectgrp->removeChild(0, 1);
_root->removeChild(kinectgrp);
kinectgrp = NULL;
}
}
//cerr << kinectVertices->size();

osg::Geode* kgeode = new osg::Geode();
kgeode->setCullingActive(false);
osg::Geometry* nodeGeom = new osg::Geometry();
osg::StateSet* state = nodeGeom->getOrCreateStateSet();
nodeGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POINTS, 0, kinectVertices->size()));
osg::VertexBufferObject* vboP = nodeGeom->getOrCreateVertexBufferObject();
vboP->setUsage(GL_STREAM_DRAW);
nodeGeom->setUseDisplayList(true);
nodeGeom->setUseVertexBufferObjects(true);
nodeGeom->setVertexArray(kinectVertices);
nodeGeom->setColorArray(kinectColours);
nodeGeom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
kgeode->addDrawable(nodeGeom);
kgeode->dirtyBound();
//if (kinectgrp != NULL) _root->removeChild(kinectgrp);
kinectgrp->removeChild(0, 1);
kinectgrp->addChild(kgeode);


}
}
if(should_quit)
{
pgm1->ref();
kinectgrp->removeChild(0, 1);
_root->removeChild(kinectgrp);
kinectgrp = NULL;

}
}
}
}
//When Finished
_cacheDone = true;




std::cerr << "All frames loaded." << std::endl;
}
}

//When Finished
_cacheDone = true;
std::cerr << "All frames loaded." << std::endl;
}

void CloudManager::quit()
{

should_quit = true;
// pgm1->ref();
// kinectgrp->removeChild(0, 1);
// _root->removeChild(kinectgrp);
// kinectgrp = NULL;

should_quit = true;
// pgm1->ref();
// kinectgrp->removeChild(0, 1);
// _root->removeChild(kinectgrp);
// kinectgrp = NULL;
}

osg::Vec4f CloudManager::getColorRGB(int dist)
Expand Down
30 changes: 15 additions & 15 deletions CloudManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,27 @@
#include <OpenThreads/Thread>


// zmq::context_t contextCloud(1);
// zmq::context_t contextCloud(1);

class CloudManager : public OpenThreads::Thread {

public:
public:

CloudManager();
~CloudManager();
//contextCloud(1);
SubSocket<RemoteKinect::PointCloud>* cloudT_socket;
void update();
bool isCacheDone();
RemoteKinect::PointCloud* packet;
CloudManager();
~CloudManager();
//contextCloud(1);
SubSocket<RemoteKinect::PointCloud>* cloudT_socket;
void update();
bool isCacheDone();
RemoteKinect::PointCloud* packet;

virtual void run();
void quit();
protected:
virtual void run();
void quit();
protected:

// osg::ref_ptr<osg::Vec4Array> kinectColours;
// osg::ref_ptr<osg::Vec3Array> kinectVertices;
bool _cacheDone;
// osg::ref_ptr<osg::Vec4Array> kinectColours;
// osg::ref_ptr<osg::Vec3Array> kinectVertices;
bool _cacheDone;
bool useKColor;
bool should_quit;
osg::Program* pgm1;
Expand Down
Loading

0 comments on commit 28b2346

Please sign in to comment.