【VTK】VTK 디스플레이 작은 공 예시, Qt와 함께 Visual Studio를 사용하여 Windows에서 VTK 구축

지식은 혼자가 아니라 체계적이어야 합니다. 더 많은 개인 요약 및 관련 경험은 Visual Studio 칼럼에서 찾을 수 있습니다 .

일련 번호 콘텐츠
1 [Visual Studio] Visual Studio를 사용하여 Windows에서 VTK 구축
2 [Visual Studio] Qt와 함께 Visual Studio를 사용하여 Windows에서 VTK 구축
【VTK】VTK 디스플레이 작은 공 예시, Qt와 함께 Visual Studio를 사용하여 Windows에서 VTK 구축
4 [VTK] 코드를 포함하여 자신의 Qt 프로젝트로 포팅된 공식 예

이 예제에 대한 자세한 내용은 다음을 참조하십시오. 【Visual Studio】Visual Studio 및 Qt를 사용하여 Windows에서 VTK 빌드 .

Qt를 사용하여 작은 공을 표시하는 예제를 완료한 후 VTK 공식 웹 사이트에서 예제를 다운로드한 다음 내 자신의 Qt 프로젝트로 포팅을 시도했습니다.관심 있는 경우 다음을 볼 수 있습니다 .

버전 환경

버전 환경은 다음과 같습니다.

  • win11
  • 비주얼 스튜디오 2022
  • VTK-9.2.6
  • C메이크 3.26.3
  • Qt 6.2.8

VTKTest.ui

여기에 이미지 설명 삽입

VTKTest.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_VTKTest.h"

#include <qsurfaceformat.h>
#include <QVTKOpenGLNativeWidget.h>

#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>

#include "vtkAutoInit.h"

class VTKTest : public QMainWindow
{
    
    
    Q_OBJECT

public:
    VTKTest(QWidget* parent = nullptr);
    //VTKTest(QWidget* parent = Q_NULLPTR);
    ~VTKTest();

private slots:
    void on_pushButton_clicked();

private:
    Ui::VTKTestClass ui;
};

VTKTest.cpp

#include "VTKTest.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);

VTKTest::VTKTest(QWidget *parent)
    : QMainWindow(parent)
{
    
    
    ui.setupUi(this);
}

VTKTest::~VTKTest()
{
    
    }

void VTKTest::on_pushButton_clicked()
{
    
    
    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
    //QVTKOpenGLNativeWidget* widget = new QVTKOpenGLNativeWidget();

    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();

    vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();

    vtkSmartPointer<vtkPolyDataMapper> sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();

    sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
    vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();

    sphereActor->SetMapper(sphereMapper);
    sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(sphereActor);
    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());

    vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    renderWindow->SetWindowName("RenderWindowNoUIFile");

    ui.qvtkWidget->setRenderWindow(renderWindow);
    ui.qvtkWidget->resize(200, 160);
    ui.qvtkWidget->show();

}

main.cpp

#include "VTKTest.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    VTKTest w;
    w.show();
    return a.exec();
}

연산 결과

여기에 이미지 설명 삽입

참조

  1. Qt에서 QVTKOpenGLNativeWidget 사용
  2. VTK+Qt의 첫 번째 예
  3. C++ 일반 프로그래밍
  4. C++ 템플릿
  5. 매개변수가 있는 C 언어 매크로 정의

추천

출처blog.csdn.net/weixin_36815313/article/details/131714961