diff --git a/idl/Graphics/corbaserver/graphicalinterface.idl b/idl/Graphics/corbaserver/graphicalinterface.idl index ca15ba875eb7f28c9137ba0ae80660dffe954552..758101a3de21e17f200d2a9f372dccc3c16960c3 100644 --- a/idl/Graphics/corbaserver/graphicalinterface.idl +++ b/idl/Graphics/corbaserver/graphicalinterface.idl @@ -42,7 +42,10 @@ typedef double Color [4]; //boolean addSphere(in string sphereName, in float radius) ; boolean addSphere(in string sphereName, in float radius, in Color RGBAcolor) ; - boolean addLine(in string lineName, in Position pos1, in Position pos2, in Color RGBAColor) ; + boolean addLine(in string lineName, in Position pos1, in Position pos2, in Color RGBAcolor) ; + + boolean addSquareFace(in string faceName, in Position pos1, in Position pos2, in Position pos3, in Position pos4, in Color RGBAcolor) ; + boolean addTriangleFace(in string faceName, in Position pos1, in Position pos2, in Position pos3, in Color RGBAcolor) ; boolean addURDF(in string urdfName, in string urdfPath, in string urdfPackage) ; diff --git a/src/GraphicalInterface.impl.cpp b/src/GraphicalInterface.impl.cpp index 7e877844271d56bfee9b4fafcd28e39ee661bcb5..a68263362e4ac48dc177f7cd480b1b4556adbc08 100644 --- a/src/GraphicalInterface.impl.cpp +++ b/src/GraphicalInterface.impl.cpp @@ -423,6 +423,43 @@ bool GraphicalInterface::addLine(const char* lineNameCorba, const double* posCor } } +bool GraphicalInterface::addTriangleFace(const char* faceNameCorba, const double* posCorba1, const double* posCorba2, const double* posCorba3, const double* colorCorba) +{ + std::string faceName(faceNameCorba); + if (nodes_.find(faceName) != nodes_.end()) { + std::cout << "You need to chose an other name, \"" << faceName << "\" already exist." << std::endl; + return false; + } + else { + osgVector3 pos1(posCorba1[0], posCorba1[1], posCorba1[2]); + osgVector3 pos2(posCorba2[0], posCorba2[1], posCorba2[2]); + osgVector3 pos3(posCorba3[0], posCorba3[1], posCorba3[2]); + LeafNodeFacePtr_t face = LeafNodeFace::create(faceName, pos1, pos2, pos3, getColor(colorCorba)); + GraphicalInterface::initParent(faceName, face); + addNode(faceName, face); + return true; + } +} + +bool GraphicalInterface::addSquareFace(const char* faceNameCorba, const double* posCorba1, const double* posCorba2, const double* posCorba3, const double* posCorba4, const double* colorCorba) +{ + std::string faceName(faceNameCorba); + if (nodes_.find(faceName) != nodes_.end()) { + std::cout << "You need to chose an other name, \"" << faceName << "\" already exist." << std::endl; + return false; + } + else { + osgVector3 pos1(posCorba1[0], posCorba1[1], posCorba1[2]); + osgVector3 pos2(posCorba2[0], posCorba2[1], posCorba2[2]); + osgVector3 pos3(posCorba3[0], posCorba3[1], posCorba3[2]); + osgVector3 pos4(posCorba4[0], posCorba4[1], posCorba4[2]); + LeafNodeFacePtr_t face = LeafNodeFace::create(faceName, pos1, pos2, pos3, pos3, getColor(colorCorba)); + GraphicalInterface::initParent(faceName, face); + addNode(faceName, face); + return true; + } +} + void GraphicalInterface::getNodeList() { std::cout << "List of Nodes :" << std::endl; diff --git a/src/GraphicalInterface.impl.hh b/src/GraphicalInterface.impl.hh index 3b8e83792ef7b88d31a2fc552b22f23d5559f035..58e52233b4192c8c0297a73f52d78e68c4b80120 100644 --- a/src/GraphicalInterface.impl.hh +++ b/src/GraphicalInterface.impl.hh @@ -21,6 +21,7 @@ #include <Graphics/LeafNodeCone.h> #include <Graphics/LeafNodeCylinder.h> #include <Graphics/LeafNodeLine.h> +#include <Graphics/LeafNodeFace.h> #include <Graphics/LeafNodeSphere.h> #include <Graphics/macros.h> #include <Graphics/config.h> @@ -106,6 +107,9 @@ public: virtual bool addLine(const char* lineName, const double* pos1, const double* pos2, const double* color); + virtual bool addSquareFace(const char* faceName, const double* pos1, const double* pos2, const double* pos3, const double* pos4, const double* color); + virtual bool addTriangleFace(const char* faceName, const double* pos1, const double* pos2, const double* pos3, const double* color); + virtual bool addURDF(const char* urdfNameCorba, const char* urdfPathCorba, const char* urdfPackagePathCorba); virtual bool createGroup(const char* groupNameCorba) ; diff --git a/src/client-cpp.cc b/src/client-cpp.cc index d8b355d60f184a35fea309f0d41fbc7b801b3083..9ceec770d21d48cb14d241455946178f9f08567c 100644 --- a/src/client-cpp.cc +++ b/src/client-cpp.cc @@ -164,6 +164,16 @@ bool ClientCpp::addLine(const char* lineName, const double* pos1, const double* return manager_->addLine(lineName, pos1, pos2, color); } +bool ClientCpp::addTriangleFace(const char* faceName, const double* pos1, const double* pos2, const double* pos3, const double* color) +{ + return manager_->addTriangleFace(faceName, pos1, pos2, pos3, color); +} + +bool ClientCpp::addSquareFace(const char* faceName, const double* pos1, const double* pos2, const double* pos3, const double* pos4, const double* color) +{ + return manager_->addSquareFace(faceName, pos1, pos2, pos3, pos4, color); +} + bool ClientCpp::addURDF(const char* urdfName, const char* urdfPath, const char* urdfPackagePath) { return manager_->addURDF(urdfName, urdfPath, urdfPackagePath); diff --git a/src/client-cpp.hh b/src/client-cpp.hh index 5bd27d05569ed8b1029b09441bce73379be0e297..7361b9adf5e05fec9070fd8df13089b0982e3fff 100644 --- a/src/client-cpp.hh +++ b/src/client-cpp.hh @@ -69,6 +69,9 @@ public: bool addLine(const char* lineName, const double* pos1, const double* pos2, const double* color); + bool addTriangleFace(const char* lineName, const double* pos1, const double* pos2, const double* pos3, const double* color); + bool addSquareFace(const char* lineName, const double* pos1, const double* pos2, const double* pos3, const double* pos4, const double* color); + bool addURDF(const char* urdfName, const char* urdfPath, const char* urdfPackagePath); bool createGroup(const char* groupName) ; diff --git a/test/test-client-cpp.cc b/test/test-client-cpp.cc index a4fc56ed0d0e5d01e143da04bfd3018c5e2d0087..e930f02984f66b3ac876b1079a3992a9525254a3 100644 --- a/test/test-client-cpp.cc +++ b/test/test-client-cpp.cc @@ -27,6 +27,16 @@ int main(int argc, const char * argv[]) client.addSceneToWindow("scene1","window1"); client.addURDF("scene1/hrp2", "/local/mgeisert/devel/src/hrp2/hrp2_14_description/urdf/hrp2_14_capsule.urdf", "/local/mgeisert/devel/src/hrp2/"); + sleep(5); + + //vector<double> tri01 (3); + + double pos1[3]= {1.,0.,0.}; + double pos2[3] = {0.,1.,0.}; + double pos3[3]= {0.,1.,1.}; + double color[4] = {1.,1.,1.,1.}; + client.addTriangleFace("scene1/triangle", pos1, pos2, pos3, color); + sleep(15);