Как использовать и устанавливать оси в 3D-сцене - PullRequest
2 голосов
/ 18 октября 2011

Я создаю симулятор, написанный на python и основанный на ODE (Open Dynamics Engine).Для визуализации я выбрал VTK.

Для каждого объекта в симуляции я создаю соответствующий источник (например, vtkCubeSource), mapper и actor.Я могу правильно отображать объекты и обновлять их во время симуляции.

Я хочу добавить оси, чтобы иметь точку отсчета и показывать направление каждой оси.Сделав это, я понял, что по умолчанию X и Z находятся в плоскости экрана, а Y указывает наружу.В моей программе другое соглашение.

Мне удалось отобразить оси двумя способами:

1) Изображение

axes = vtk.vtkAxes()
axesMapper = vtk.vtkPolyDataMapper()
axesMapper.SetInputConnection(axes.GetOutputPort())
axesActor = vtk.vtkActor()
axesActor.SetMapper(axesMapper)
axesActor.GetProperty().SetLineWidth(4)

2) Изображение (цвета не совпадают с первым регистром)

axesActor = vtk.vtkAxesActor()
axesActor.AxisLabelsOn()
axesActor.SetShaftTypeToCylinder()
axesActor.SetCylinderRadius(0.05)

Во втором случае пользователю разрешено устанавливать множество параметров, связанных с отображением оси.В первом случае мне удалось установить только ширину линии, но не более того.

Итак, мои вопросы:

  • Как правильно определить и отобразить оси в3D сцена?Я просто хочу, чтобы они были в фиксированном положении и ориентации.
  • Как я могу установить другое соглашение для ориентации осей, как для их отображения, так и для общей визуализации?

1 Ответ

1 голос
/ 12 ноября 2011

Ну, если не связываться с матрицей преобразования объектов для отображения целей, вероятно, может быть достаточно просто поместить вашу камеру в другое положение при использовании подхода осей 2. Простые методы настройки положение вашей камеры: Pitch (), Azimuth () и Roll ().

Если вы возитесь с преобразованиями объектов, примените то же преобразование к оси.


Дженан Зукич любезно ответил на этот вопрос в списке рассылки vtkusers@vtk.org. http://www.vtk.org/pipermail/vtkusers/2011-November/119990.html

...