Запись трассировки камеры в Paraview

#python #paraview

#python #paraview

Вопрос:

Я использую Paraview 5.8.1, но мой вопрос справедлив для более старых версий.

Я хочу сгенерировать скрипт на Python для автоматизации моих визуализаций. Я использую инструмент «trace recorder», который записывает действия, которые я выполняю в графическом интерфейсе, и переводит их в скрипт Python, который приведет к тому же результату.

Однако этот инструмент записывает не все: например, изменения положения камеры или размеров осей ориентации не переводятся, тогда как функции Python для этого существуют.

Есть ли какой-либо способ заставить trace recorder записывать все?

Ответ №1:

Простой ответ: нет.

ParaView использует механизм свойств. Многие вещи являются свойствами (параметры фильтра, настройка цвета, …) и доступны для записи. Но камеры нет. Когда трассировка останавливается, внутренний хук добавляет последнюю камеру в трассировку.

Вы можете использовать это как макрос для добавления текущей камеры в трассировку:

 from paraview import simple
from paraview import smtrace

smtrace.Trace.get_accessor(simple.GetActiveView())
camera_trace = smtrace.SaveCameras.get_trace(None)
if camera_trace:
    a = smtrace.Trace.Output.append_separated(
            "#### saving camera placements for all active views")
    a = smtrace.Trace.Output.append_separated(camera_trace)
  

Тем не менее, я не уверен, что увижу вариант использования… Если вы хотите увидеть анимацию вашей сцены, вы не можете использовать механизм трассировки, но вместо этого вы должны использовать анимационный вид.

Комментарии:

1. Спасибо. Если последняя позиция камеры добавлена в конце трассировки, я могу ее использовать. smtrace. Трассировка вашего скрипта интересна, но строка 7 выдает ошибку. smtrace.Trace.Outpur возвращает None

2. вы должны запустить трассировку перед использованием этого скрипта