7 #include "imstkCamera.h"     8 #include "imstkCameraController.h"     9 #include "imstkDeviceManager.h"    10 #include "imstkDeviceManagerFactory.h"    11 #include "imstkKeyboardDeviceClient.h"    12 #include "imstkKeyboardSceneControl.h"    13 #include "imstkMeshIO.h"    14 #include "imstkMouseDeviceClient.h"    15 #include "imstkMouseSceneControl.h"    16 #include "imstkPlane.h"    17 #include "imstkScene.h"    18 #include "imstkSceneManager.h"    19 #include "imstkSceneObject.h"    20 #include "imstkSimulationManager.h"    21 #include "imstkSimulationUtils.h"    22 #include "imstkSpotLight.h"    23 #include "imstkSurfaceMesh.h"    24 #include "imstkVTKViewer.h"    26 using namespace imstk;
    41     auto scene = std::make_shared<Scene>(
"CameraController");
    45     std::shared_ptr<DeviceClient>  deviceClient  = hapticManager->makeDeviceClient();
    48     auto mesh = MeshIO::read<SurfaceMesh>(iMSTK_DATA_ROOT 
"/asianDragon/asianDragon.obj");
    49     mesh->scale(0.01, Geometry::TransformType::ApplyToData);
    50     auto meshObj = std::make_shared<SceneObject>(
"MeshObj");
    51     meshObj->setVisualGeometry(mesh);
    52     scene->addSceneObject(meshObj);
    54     auto planeObj = std::make_shared<SceneObject>(
"Plane");
    55     auto plane    = std::make_shared<Plane>(Vec3d(0.0, -0.05, 0.0));
    57     planeObj->setVisualGeometry(plane);
    58     scene->addSceneObject(planeObj);
    61     scene->getActiveCamera()->setPosition(Vec3d(0.0, 0.0, 1.0));
    64     auto light = std::make_shared<SpotLight>();
    65     light->setFocalPoint(Vec3d(0.0, 0.0, 0.0));
    66     light->setPosition(Vec3d(0.0, 10.0, 0.0));
    67     light->setIntensity(1.0);
    68     light->setSpotAngle(10.0);
    71     light->setAttenuationValues(50.0, 0.0, 0.0); 
    72     scene->addLight(
"light0", light);
    77         auto viewer = std::make_shared<VTKViewer>();
    78         viewer->setActiveScene(scene);
    81         auto sceneManager = std::make_shared<SceneManager>();
    82         sceneManager->setActiveScene(scene);
    84         auto driver = std::make_shared<SimulationManager>();
    85         driver->addModule(hapticManager);
    86         driver->addModule(viewer);
    87         driver->addModule(sceneManager);
    88         driver->setDesiredDt(0.001);
    91         auto camController = std::make_shared<CameraController>();
    92         camController->setCamera(scene->getActiveCamera());
    93         camController->setDevice(deviceClient);
    94         scene->addControl(camController);
    97         std::shared_ptr<Entity> mouseAndKeyControls =
    98             SimulationUtils::createDefaultSceneControl(driver);
    99         scene->addSceneObject(mouseAndKeyControls);
   102         connect<ButtonEvent>(deviceClient, &DeviceClient::buttonStateChanged,
   105                 if (e->m_buttonState == BUTTON_PRESSED)
   107                     if (e->m_button == 0)
   109                         light->setSpotAngle(light->getSpotAngle() + 5.0);
   111                     else if (e->m_button == 1)
   113                         light->setSpotAngle(light->getSpotAngle() - 5.0);
   119         connect<Event>(sceneManager, &SceneManager::postUpdate,
   122                 const Vec3d pos = camController->getPosition();
   123                 const Quatd orientation = camController->getOrientation();
   125                 light->setPosition(pos);
   126                 light->setFocalPoint(pos - orientation.toRotationMatrix().col(2));
 Base class for events which contain a type, priority, and data priority defaults to 0 and uses a grea...
 
static std::shared_ptr< DeviceManager > makeDeviceManager()
Attempts to create a new DeviceManager by whichever is default If multiple haptic managers are built ...
 
static LoggerG3 & startLogger()
Starts logger with default sinks, use getInstance to create a logger with no sinks.