Я визуализирую триангулированную сетку (polydata) с помощью рендеринга VTK. Я хочу получить облако 3D-точек рендеринга (относительно камеры).VTK - вычислить облако точек для визуализированной сцены
Я нашел аналогичный фрагмент, который делает аналогичную вещь в PCL library, которая использует VTK в качестве инструмента визуализации.
Я реализую функцию PCL в своем коде, и мне удалось получить те же результаты (облако 3D-точек). Однако, я нашел вопрос, что я не знаю, с чего начать, чтобы решить:
- Для точки, которая должна иметь действительное значение глубины в Z-буфер, 1 (я считаю, что это установленное значение по умолчанию означает НЕ действительную точку).
Я попытался сыграть с клипинговой плоскостью (также известной как nearz/farz), но ничего не улучшилось.
ОБНОВЛЕНИЕ: Проблема решена, потому что я забыл, что координата изображения, определенного VTK, отличается от традиционной. В VTK исходное значение находится внизу слева, а не сверху-слева.
Спасибо за информацию, в моем случае, узкое место в скорости, похоже, не связано с преобразованием, но как я получаю глубину, вызывая RenderWindow :: GetZbufferData(). Как получить глубину из окна рендеринга? –
@ linzhang.robot Я могу себе представить, что это узкое место. Я использую vtkWindowToImageFilter(). Вы можете видеть это в сообщении, на которое я ссылался. Кроме того, здесь [пример в C++] (http://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/ZBuffer). Обязательно прочтите [это предупреждение] (http://www.vtk.org/doc/nightly/html/classvtkWindowToImageFilter.html#details) –
Да, я использовал 'vtkWindowToImageFilter', и хотя, возможно, GetZbufferData напрямую может быть быстрее. Я использовал 'vtkWindowToImageFilter' для получения цветного изображения моего окна рендеринга, функция' vtkWindowToImageFilter :: Update' на самом деле занимает много времени. Интересно, вызвано ли это некоторой неэффективной операцией копирования памяти vtk с черно-белым графическим процессором и процессором. –