2016-06-02 2 views
1

Я пытаюсь найти 2D-привязку отображаемого изображения 3D-модели с помощью VTK. Есть ли что-нибудь, что автоматически находит его для меня? В конце концов, я хочу иметь что-то вроде этого (но с оказанным изображением самолета 3D модели вместо реального): http://host.robots.ox.ac.uk/pascal/VOC/voc2007/examples/aeroplane_03.jpg2D ограничивающий прямоугольник рендеринговой 3D модели с использованием VTK

Если не я должен идти, пиксель за пикселем, выбрать точки и найти крайние моменты. Просто хотел знать, есть ли что-то, что автоматически делает это для меня.

ответ

1

Это действительно зависит от того, какой тип данных у вас есть. Для vtkPolyData вы можете просто позвонить PolyDataObject.GetBounds(), и вы получите экстремальные точки своего объекта в формате -x, x, -y, y, -z, z.

Существует также функция vtkBoundingBox, которая, кажется, делает то, что вы хотите.

В конце концов вы должны решить это с помощью чего-то вроде BoundingBox.SetBounds(Object.GetBounds()).

Редактировать: Как описано in another thread, если у вас нет объекта vtkPolyData, вы можете позвонить по телефону someObject.GetOutput().GetBounds().

+0

Я хочу получить ограничительную рамку модели в ** визуализированном изображении ** в пикселях, которые являются 2d координатами. То, о чем вы говорите, является фактическим ограничивающим полем 3D-модели. – krips89

+0

Извините, я неправильно понял ваш вопрос. В этом случае ваша проблема немного сложнее, и я не могу предложить хорошее решение. Вы хотите, чтобы ограничивающая рамка отображалась только в одной перспективе/представлении или должна ли она динамически настраиваться при повороте вашего представления? – Ian

+0

Я хочу его для определенного вида на данный момент. В настоящее время я иду пиксель за пикселем и используя точки выбора, как описано в вопросе. Но он очень медленный - занимает 1 - 2 минуты для ограничивающей рамки для одного вида. – krips89

Смежные вопросы