From f508459fe049cc639c01971c7f5044a5d2f2d1c9 Mon Sep 17 00:00:00 2001 From: Alexis Girault <alexis.girault@kitware.com> Date: Tue, 17 May 2016 19:07:03 -0400 Subject: [PATCH] ENH: Update example with object controller Reset sceneManager loop delay to 0 (fast loop) and remove LOG info to avoid too much printing. --- Base/SimulationManager/imstkSceneManager.cpp | 11 +--- Base/SimulationManager/imstkSceneManager.h | 2 +- Examples/Sandbox/main.cpp | 61 +++++++++++++++++--- 3 files changed, 56 insertions(+), 18 deletions(-) diff --git a/Base/SimulationManager/imstkSceneManager.cpp b/Base/SimulationManager/imstkSceneManager.cpp index e811101d..8fcf18e0 100644 --- a/Base/SimulationManager/imstkSceneManager.cpp +++ b/Base/SimulationManager/imstkSceneManager.cpp @@ -37,9 +37,7 @@ SceneManager::getScene() void SceneManager::initModule() { - LOG(DEBUG) << m_name << " manager : init"; - - + // Start Camera Controller (asynchronous) if (auto camController = m_scene->getCamera()->getController()) { this->startModuleInNewThread(camController); @@ -49,8 +47,7 @@ SceneManager::initModule() void SceneManager::runModule() { - LOG(DEBUG) << m_name << " manager : running"; - + // Update virtualCoupling objects based on devices for (auto obj : m_scene->getSceneObjects()) { if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualCouplingObject>(obj)) @@ -60,12 +57,10 @@ SceneManager::runModule() } } - void SceneManager::cleanUpModule() { - LOG(DEBUG) << m_name << " manager : cleanUp"; - + // End Camera Controller if (auto camController = m_scene->getCamera()->getController()) { camController->end(); diff --git a/Base/SimulationManager/imstkSceneManager.h b/Base/SimulationManager/imstkSceneManager.h index dc37ecf0..63986187 100644 --- a/Base/SimulationManager/imstkSceneManager.h +++ b/Base/SimulationManager/imstkSceneManager.h @@ -36,7 +36,7 @@ class SceneManager : public Module public: SceneManager(std::shared_ptr<Scene> scene) : - Module(scene->getName(), 1000), + Module(scene->getName()), m_scene(scene) {} diff --git a/Examples/Sandbox/main.cpp b/Examples/Sandbox/main.cpp index b3de2b25..750d57c3 100644 --- a/Examples/Sandbox/main.cpp +++ b/Examples/Sandbox/main.cpp @@ -6,14 +6,18 @@ #include "imstkMath.h" #include "imstkSimulationManager.h" + +// Objects #include "imstkSceneObject.h" -#include "imstkPlane.h" -#include "imstkSphere.h" -#include "imstkCube.h" +#include "imstkCollidingObject.h" +#include "imstkVirtualCouplingObject.h" #include "imstkLight.h" #include "imstkCamera.h" // Geometry +#include "imstkPlane.h" +#include "imstkSphere.h" +#include "imstkCube.h" #include "imstkTetrahedralMesh.h" #include "imstkSurfaceMesh.h" #include "imstkMeshReader.h" @@ -30,7 +34,8 @@ #include "g3log/g3log.hpp" -void testDevices(); +void testObjectController(); +void testCameraController(); void testReadMesh(); void testViewer(); void testAnalyticalGeometry(); @@ -47,7 +52,8 @@ int main() << "Starting Sandbox\n" << "****************\n"; - testDevices(); + testObjectController(); + //testCameraController(); //testViewer(); //testReadMesh(); //testAnalyticalGeometry(); @@ -61,7 +67,7 @@ int main() return 0; } -void testDevices() +void testObjectController() { // SDK and Scene auto sdk = std::make_shared<imstk::SimulationManager>(); @@ -78,17 +84,54 @@ void testDevices() client->setLoopDelay(1); sdk->addDeviceClient(client); + // Plane + auto planeGeom = std::make_shared<imstk::Plane>(); + planeGeom->scale(5); + auto planeObj = std::make_shared<imstk::VisualObject>("VisualPlane"); + planeObj->setVisualGeometry(planeGeom); + scene->addSceneObject(planeObj); + // Sphere auto sphereGeom = std::make_shared<imstk::Sphere>(); - sphereGeom->scale(0.1); - auto sphereObj = std::make_shared<imstk::VisualObject>("VisualSphere"); + sphereGeom->setPosition(imstk::UP_VECTOR); //does not matter, need to set offset on object if controlled + sphereGeom->scale(0.2); + auto sphereObj = std::make_shared<imstk::VirtualCouplingObject>("VirtualSphere", client, 20); sphereObj->setVisualGeometry(sphereGeom); + sphereObj->setCollidingGeometry(sphereGeom); + sphereObj->setTranslationOffset(imstk::UP_VECTOR); // this will work though scene->addSceneObject(sphereObj); + // Update Camera position + auto cam = scene->getCamera(); + cam->setPosition(imstk::Vec3d(0,3,10)); + cam->setFocalPoint(sphereGeom->getPosition()); + + // Run + sdk->setCurrentScene("SceneTestDevice"); + sdk->startSimulation(true); +} + +void testCameraController() +{ + // SDK and Scene + auto sdk = std::make_shared<imstk::SimulationManager>(); + auto scene = sdk->createNewScene("SceneTestDevice"); + + // Device server + auto server = std::make_shared<imstk::VRPNDeviceServer>("127.0.0.1"); + server->addDevice("device0", imstk::DeviceType::NOVINT_FALCON); + server->setLoopDelay(1); + sdk->addDeviceServer(server); + + // Device Client + auto client = std::make_shared<imstk::VRPNDeviceClient>("device0", "localhost"); // localhost = 127.0.0.1 + client->setLoopDelay(1); + sdk->addDeviceClient(client); + // Mesh auto mesh = imstk::MeshReader::read("/home/virtualfls/Projects/IMSTK/resources/asianDragon/asianDragon.obj"); auto meshObject = std::make_shared<imstk::VisualObject>("meshObject"); - meshObject->setVisualGeometry(mesh); // change to any mesh created above + meshObject->setVisualGeometry(mesh); scene->addSceneObject(meshObject); // Update Camera position -- GitLab