void CVTK3DWindow::UpdatePointerToWindow() { CString tmp; int numPoints = m_vtkPCDPoints->GetNumberOfPoints(); if (numPoints == 0) return; double bounds[6]; m_vtkPCDPoints->GetBounds(bounds); double minz = bounds[4]; double maxz = bounds[5]; vtkNew lut; CreateLookupTable(minz, maxz, numPoints, &lut); vtkNew colors; CreateScalars(m_vtkPCDPoints, lut, &colors); m_vtkScalarBar->SetLookupTable(lut); m_vtkScalarBar->SetNumberOfLabels(6); m_vtkScalarBar->SetBarRatio(0.1); m_vtkScalarBar->SetHeight(0.3); m_vtkScalarBar->SetTextPad(10); m_vtkScalarBar->SetTextPositionToPrecedeScalarBar(); vtkNew polydata; polydata->SetPoints(m_vtkPCDPoints); polydata->GetPointData()->SetScalars(colors); vtkNew glyphFilter; glyphFilter->SetInputData(polydata); glyphFilter->Update(); vtkNew mapper; mapper->SetInputConnection(glyphFilter->GetOutputPort()); mapper->SetScaleFactor(0); mapper->EmissiveOff(); vtkNew actor; actor->SetMapper(mapper); m_vtkRenderer->AddActor(actor); m_vtkRenderer->AddActor(m_vtkScalarBar); m_vtkRenderer->SetBackground(.1, .2, .3); LARGE_INTEGER start, end, f; double time; CString str; QueryPerformanceFrequency(&f); QueryPerformanceCounter(&start); m_vtkRenderer->ResetCamera(); QueryPerformanceCounter(&end); time = (double)(end.QuadPart - start.QuadPart) / (f.QuadPart) * 1000; str.Format(_T("ResetCamera Time: %.5f \n"), time); TRACE(str); m_vtkRenderWindowInteractor->SetRenderWindow(m_vtkRenderWindow); m_vtkRenderWindowInteractor->Initialize(); vtkNew style; style->SetDefaultRenderer(m_vtkRenderer); style->SetParent(this); m_vtkRenderWindowInteractor->SetInteractorStyle(style); m_vtkRenderWindowInteractor->Initialize(); m_vtkRenderWindow->AddRenderer(m_vtkRenderer); QueryPerformanceFrequency(&f); QueryPerformanceCounter(&start); m_vtkRenderWindow->Render(); QueryPerformanceCounter(&end); time = (double)(end.QuadPart - start.QuadPart) / (f.QuadPart) * 1000; str.Format(_T("Render Time: %.5f \n"), time); TRACE(str); }