#include VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); VTK_MODULE_INIT(vtkRenderingFreeType); #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int, char *[]) { // ### Basic stuff setup // Set up the renderer, window, and interactor vtkSmartPointer colors = vtkSmartPointer::New(); vtkSmartPointer renderer = vtkSmartPointer::New(); renderer->SetBackground(colors->GetColor3d("Wheat").GetData()); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(renderer); renderWindow->SetSize(640, 480); vtkSmartPointer interactor = vtkSmartPointer::New(); interactor->SetRenderWindow(renderWindow); // ### Annotated Cube setup vtkSmartPointer annotated_cube = vtkSmartPointer::New(); annotated_cube->SetFaceTextScale(0.366667); // Anatomic labelling annotated_cube->SetXPlusFaceText("X+"); annotated_cube->SetXMinusFaceText("X-"); annotated_cube->SetYPlusFaceText("Y+"); annotated_cube->SetYMinusFaceText("Y-"); annotated_cube->SetZPlusFaceText("Z+"); annotated_cube->SetZMinusFaceText("Z-"); // Change the vector text colors annotated_cube->GetTextEdgesProperty()->SetColor(colors->GetColor3d("Black").GetData()); annotated_cube->GetTextEdgesProperty()->SetLineWidth(4); annotated_cube->GetCubeProperty()->SetOpacity(0); vtkProperty *property; property = annotated_cube->GetXPlusFaceProperty(); property->SetColor(colors->GetColor3d("Turquoise").GetData()); property = annotated_cube->GetXMinusFaceProperty(); property->SetColor(colors->GetColor3d("Turquoise").GetData()); property = annotated_cube->GetYPlusFaceProperty(); property->SetColor(colors->GetColor3d("Mint").GetData()); property = annotated_cube->GetYMinusFaceProperty(); property->SetColor(colors->GetColor3d("Mint").GetData()); property = annotated_cube->GetZPlusFaceProperty(); property->SetColor(colors->GetColor3d("Tomato").GetData()); property = annotated_cube->GetZMinusFaceProperty(); property->SetColor(colors->GetColor3d("Tomato").GetData()); // ### Colored faces cube setup vtkSmartPointer cube_source = vtkSmartPointer::New(); cube_source->Update(); vtkSmartPointer face_colors = vtkSmartPointer::New(); face_colors->SetNumberOfComponents(3); unsigned char face_x_plus[3] = { 255,0,0 }; unsigned char face_x_minus[3] = { 0,255,0 }; unsigned char face_y_plus[3] = { 0,0,255 }; unsigned char face_y_minus[3] = { 255,255,0 }; unsigned char face_z_plus[3] = { 0,255,255 }; unsigned char face_z_minus[3] = { 255,0,255 }; face_colors->InsertNextTypedTuple(face_x_minus); face_colors->InsertNextTypedTuple(face_x_plus); face_colors->InsertNextTypedTuple(face_y_minus); face_colors->InsertNextTypedTuple(face_y_plus); face_colors->InsertNextTypedTuple(face_z_minus); face_colors->InsertNextTypedTuple(face_z_plus); cube_source->GetOutput()->GetCellData()->SetScalars(face_colors); cube_source->Update(); vtkSmartPointer cube_mapper = vtkSmartPointer::New(); cube_mapper->SetInputData(cube_source->GetOutput()); cube_mapper->Update(); vtkSmartPointer cube_actor = vtkSmartPointer::New(); cube_actor->SetMapper(cube_mapper); // ### Assembly both colored cube and annotated cube texts into a composite prop. vtkSmartPointer prop_assembly = vtkSmartPointer::New(); prop_assembly->AddPart(annotated_cube); prop_assembly->AddPart(cube_actor); // ### Set up the Orientation Marker Widget. vtkSmartPointer ori_marker_wdgt = vtkSmartPointer::New(); ori_marker_wdgt->SetOrientationMarker(prop_assembly); ori_marker_wdgt->SetInteractor(interactor); ori_marker_wdgt->SetDefaultRenderer(renderer); ori_marker_wdgt->On(); ori_marker_wdgt->InteractiveOn(); renderWindow->Render(); interactor->Start(); return EXIT_SUCCESS; }