Создайте 2D представления из CAD-файла.

Вопрос или проблема

Мне нужно создать изображения 2D перспективных видов 3D моделей. Я думал использовать opengl или vtk, но не знаю, как это сделать с помощью одного из них.

Замечания:

  • Мне нужно создать несколько видов, и делать скриншоты нецелесообразно. Я хочу изменить “матрицу камеры”, чтобы создать виды и вывести изображения.
  • ОС, с которой я работаю, – это Linux.

Одним из множества вариантов, которые у вас есть, было бы использование Onshape, бесплатной веб-версии CAD программы. Она поддерживает импорт различных 3D моделей, включая STL файлы.

Одной из функций Onshape является возможность создания ортографических чертежей из оригинальной модели. Вы можете создать чертеж с “стандартными” видами спереди, справа и сверху, а также изометрическую визуализацию, или вы можете настроить виды, которые хотите включить.

Чертеж ниже был создан как STL файл, сделанный быстро с помощью Tinkercad (не мой выбор) и импортирован в Onshape.

чертеж onshape

Ответ или решение

Создание 2D видов из CAD файла с использованием OpenGL или VTK на Linux

Вопрос о создании 2D перспективных видов из 3D моделей является актуальным для специалистов в области компьютерной графики и CAD-систем. Для вашей задачи подойдут как OpenGL, так и VTK, однако каждый из этих инструментов обладает своими особенностями, которые будут рассмотрены в данной статье.

Понимание задач

Прежде всего, важно обозначить основные требования:

  1. Создание множества 2D видов: Вы хотите автоматизировать процесс получения изображений различных представлений 3D моделей.
  2. Избежание ручного снятия скриншотов: Необходимо управлять "камерой" программно через изменение матрицы камеры.
  3. Работа в среде Linux: Это обозначает, что выбранные библиотеки должны быть совместимы с данной операционной системой.

С учетом этих аспектов, сейчас мы обсудим каждый из инструментов.

OpenGL

OpenGL – это мощная графическая библиотека, которая отлично подходит для рисования 2D и 3D графики. Для реализации вашей задачи с OpenGL можно воспользоваться следующими шагами:

  1. Инициализация OpenGL:
    Убедитесь, что у вас установлены необходимые зависимости:

    sudo apt install mesa-utils libgl1-mesa-dev
  2. Загрузка и отображение 3D модели:
    Вам потребуется библиотека для загрузки 3D моделей, например, Assimp:

    sudo apt install libassimp-dev
  3. Настройка матрицы камеры:
    Измените параметры камеры для создания рисунков с разных ракурсов. Используйте функции gluLookAt или аналогичные для настройки позиции и направления взгляда вашей виртуальной камеры.

  4. Рендеринг и сохранение изображений:
    Вы можете использовать функции OpenGL, такие как glReadPixels, для захвата текущего кадра и сохранения его в файл:

    glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
    // Затем используйте библиотеку, например, stb_image для сохранения массива в файл

VTK (Visualization Toolkit)

VTK – это еще одна мощная библиотека для визуализации данных, которая также позволяет работать с 3D моделями.

  1. Установка VTK:
    Установите VTK в вашу систему:

    sudo apt install libvtk7-dev
  2. Импорт 3D моделей:
    VTK предоставляет функции для загрузки различных форматов файлов, включая STL и OBJ. Используйте классы vtkSTLReader или vtkOBJReader для чтения модели.

  3. Создание видов и настройка камеры:
    Как и в OpenGL, вы можете работать с классом vtkCamera. Выбирайте нужные параметры для изменения угла обзора:

    vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
    camera->SetPosition(x, y, z);
    camera->SetFocalPoint(focalX, focalY, focalZ);
  4. Сохранение изображений:
    VTK также позволяет сохранить 2D представления в виде файлов:

    vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
    windowToImageFilter->SetInput(window);
    windowToImageFilter->Update();
    
    vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
    writer->SetFileName("output.png");
    writer->SetInputConnection(windowToImageFilter->GetOutputPort());
    writer->Write();

Заключение

Оба инструмента, OpenGL и VTK, предоставляют мощные возможности для создания 2D видов из 3D моделей. Выбор зависит от ваших предпочтений и задач. Если вы ищете большую гибкость в рендеринге и хотите контролировать графическую часть, выбирайте OpenGL. Если же вам важна простота работы с высокоуровневыми функциями 3D визуализации, тогда VTK станет хорошим выбором.

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

Оцените материал
Добавить комментарий

Капча загружается...