7 #include "imstkCamera.h" 8 #include "imstkImageData.h" 9 #include "imstkImageReslice.h" 10 #include "imstkKeyboardDeviceClient.h" 11 #include "imstkKeyboardSceneControl.h" 12 #include "imstkMeshIO.h" 13 #include "imstkMouseDeviceClient.h" 14 #include "imstkMouseSceneControl.h" 16 #include "imstkScene.h" 17 #include "imstkSceneManager.h" 18 #include "imstkSceneObject.h" 19 #include "imstkSimulationManager.h" 20 #include "imstkSimulationUtils.h" 21 #include "imstkTextVisualModel.h" 22 #include "imstkVisualModel.h" 23 #include "imstkVolumeRenderMaterial.h" 24 #include "imstkVolumeRenderMaterialPresets.h" 25 #include "imstkVTKViewer.h" 27 using namespace imstk;
41 auto imageData = MeshIO::read<ImageData>(iMSTK_DATA_ROOT
"skullVolume.nrrd");
45 reslice->setInputImage(imageData);
47 reslice->setTransform(mat4dRotation(Rotd(1.0, Vec3d(0.0, 1.0, 0.0))));
52 volumeObj->setVisualGeometry(reslice->getOutputImage());
53 scene->addSceneObject(volumeObj);
56 auto cam = scene->getActiveCamera();
57 cam->setPosition(108.991, -310.752, 109.795);
58 cam->setFocalPoint(41.0774, 35.6817, -33.9048);
59 cam->setViewUp(-0.83121, 0.0660308, 0.552024);
66 auto statusTxt = std::make_shared<TextVisualModel>(
"StatusText");
67 statusTxt->setPosition(TextVisualModel::DisplayPosition::UpperLeft);
68 statusTxt->setFontSize(30);
75 auto updateFunc = [&](
Event*)
77 prevMatId = currMatId;
78 currMatId =
static_cast<int>(timer.
getTimeElapsed() / 1000.0 / 2.0) % 25;
80 if (currMatId != prevMatId)
83 std::cout <<
"Displaying with volume material preset: " << currMatId << std::endl;
87 volumeObj->getVisualModel(0)->setRenderMaterial(volumeMaterial);
89 std::ostringstream ss;
90 ss <<
"Volume Material Preset: " << imstk::VolumeRenderMaterialPresets::getPresetName(static_cast<VolumeRenderMaterialPresets::Presets>(currMatId));
91 statusTxt->setText(ss.str());
100 connect<Event>(viewer, &SceneManager::postUpdate, updateFunc);
103 driver->addModule(viewer);
104 driver->addModule(sceneManager);
107 std::shared_ptr<Entity> mouseAndKeyControls =
108 SimulationUtils::createDefaultSceneControl(driver);
109 mouseAndKeyControls->addComponent(statusTxt);
110 scene->addSceneObject(mouseAndKeyControls);
void setActiveScene(std::shared_ptr< Scene > scene) override
Set scene to be rendered.
Base class for events which contain a type, priority, and data priority defaults to 0 and uses a grea...
virtual void start()
Start the appropriate timer.
virtual void setBackgroundColors(const Color color1, const Color color2=Color(0.0, 0.0, 0.0), const bool gradientBackground=false) override
Set the coloring of the screen background If 'gradientBackground' is false or not supplied color1 wil...
static std::shared_ptr< VolumeRenderMaterial > getPreset(Presets p=Presets::CT_BONES)
TODO.
std::shared_ptr<T> obj = std::make_shared<T>(); equivalent, convenience class for STL shared allocati...
Stop Watch utility class.
void setActiveScene(std::string newSceneName)
Sets the currently updating scene.
virtual double getTimeElapsed(const TimeUnitType unitType=TimeUnitType::milliSeconds)
Returns the time elapsed since calling start.
static LoggerG3 & startLogger()
Starts logger with default sinks, use getInstance to create a logger with no sinks.