Я создаю симулятор, написанный на 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 сцена?Я просто хочу, чтобы они были в фиксированном положении и ориентации.
- Как я могу установить другое соглашение для ориентации осей, как для их отображения, так и для общей визуализации?