[VTK] MFC์์ VTK ๋ง์ฐ์ค ์ผ์ชฝ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ ์ขํ ์ ๋ณด ์ป๊ธฐ
VTK์์๋ MFC์ฒ๋ผ ๋ง์ฐ์ค ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๋ง์ฐ์ค ์ด๋ฒคํธ ์ค ์ผ์ชฝ ๋ฒํผ ํด๋ฆญ(LeftButtonDown) ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
์๋ ๋งํฌ๋ VTK์์ ์ ๊ณตํ๋ ๊ณต์ ์์ ์ฌ์ดํธ์ ๋๋ค.
๋งํฌ: https://lorensen.github.io/VTKExamples/site/Cxx
๋์์ ์๋์ ๊ฐ์ต๋๋ค.
<MFC ScalarBar ์์ >
๋จผ์ ์์ ๋ ์๋ ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋งํฌ: https://lorensen.github.io/VTKExamples/site/Cxx/Interaction/WorldPointPicker/
์ ์์ ๋ ๋ง์ฐ์ค ํด๋ฆญ ์์น์ ์ ๋ณด์ ํฝ์ ๊ฐ์ ์ถ๋ ฅ ์ฐฝ์ ๋ณด์ฌ์ฃผ๋ ๋์์ ์ํํฉ๋๋ค.
์, ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ ๋ง๋ค๊ธฐ๋ฅผ ์ค์ตํด ๋ณด๊ฒ ์ต๋๋ค.
(ํต์ฌ ๋ถ๋ถ๋ง ์ค๋ช
ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ณธ๋ฌธ ํ๋จ์ ์์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.)
๋จผ์ Dialog ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ MFC์์ VTK ์ฌ์ฉ์ ์ํด ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์ ํฉ๋๋ค.
1. VTK ์ด๊ธฐํ
Main Dialog header ํ์ผ์ ์๋์ ์ด๊ธฐํ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
#pragma once
#include <vtkautoinit.h>
#define vtkRenderingCore_AUTOINIT 3(vtkRenderingOpenGL2,vtkInteractionStyle, vtkRenderingFreeType)
#define vtkRenderingContext2D_AUTOINIT 1(vtkRenderingContextOpenGL2)
#include <vtksmartpointer.h>
#include <vtkrenderercollection.h>
#include <vtkworldpointpicker.h>
#include <vtkspheresource.h>
#include <vtkpolydatamapper.h>
#include <vtkrenderer.h>
#include <vtkrenderwindow.h>
#include <vtkrenderwindowinteractor.h>
#include <vtkactor.h>
#include <vtkinteractorstyletrackballcamera.h>
#include <vtkobjectfactory.h>
2. Picture Control์ ๊ทธ๋ ค์ง vtkRenderWindow๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
<Header File>
public :
vtkNew<vtkrenderwindow> m_vtkRenderWindow;
void InitializeVTKWindow(void* hWnd);
void ResizeVTKWindow();
<Source File>
CExampleWorldPointPickerDlg::InitializeVTKWindow(void* hWnd)
{
vtkNew<vtkrenderwindowinteractor> interactor;
interactor->SetInteractorStyle(vtkSmartPointer<vtkinteractorstyletrackballcamera>::New());
vtkNew<vtkrenderer> renderer;
renderer->SetBackground(0.1, 0.2, 0.3);
m_vtkRenderWindow->SetParentId(hWnd);
m_vtkRenderWindow->SetInteractor(interactor);
m_vtkRenderWindow->AddRenderer(renderer);
m_vtkRenderWindow->Render();
}
CExampleWorldPointPickerDlg::ResizeVTKWindow()
{
CRect rc;
GetDlgItem(IDC_PC_CHART)->GetClientRect(rc);
m_vtkRenderWindow->SetSize(rc.Width(), rc.Height());
}
3. Button Event์ data๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ์ ์ํฉ๋๋ค.
void CExampleWorldPointPickerDlg::OnBnClickedBtnInitData()
{
vtkNew<vtkspheresource> sphereSource;
sphereSource->Update();
vtkNew<vtkworldpointpicker> worldPointPicker;
// Create a mapper and actor
vtkNew<vtkpolydatamapper> mapper;
mapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkactor> actor;
actor->SetMapper(mapper);
// Create a renderer, render window, and interactor
vtkNew<vtkrenderer> renderer;
//vtkNew<vtkrenderwindow> renderWindow;
m_vtkRenderWindow->AddRenderer(renderer);
vtkNew<vtkrenderwindowinteractor> renderWindowInteractor;
renderWindowInteractor->SetPicker(worldPointPicker);
renderWindowInteractor->SetRenderWindow(m_vtkRenderWindow);
vtkNew<mouseinteractorstyle> style;
renderWindowInteractor->SetInteractorStyle(style);
// Add the actor to the scene
renderer->AddActor(actor);
renderer->SetBackground(.1, .2, .3); // Background color white
m_vtkRenderWindow->Render();
}
๊ธฐ๋ณธ C++ ์์ ์ฝ๋๋ฅผ MFC Dialog ํ๋ก์ ํธ๋ก ๋ณ๊ฒฝํ ๊ฒ ๋ฐ์ ์์ผ๋ ๊ฐ๋จํ์ฃ ?
์์ธํ ๋ด์ฉ์ ์ฒจ๋ถ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
'Programming > VTK' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[VTK] MFC์์ VTK ScalrBar ์ฌ์ฉํ๊ธฐ (0) | 2019.06.12 |
---|---|
[VTK] MFC์์ VTK 3D ๋ชจ๋ธ ํ์ผ ๋ถ๋ฌ์ Renderingํ๊ธฐ (3) | 2019.06.08 |
[VTK] MFC์์ VTK 2D Line Plot ์ฌ์ฉํ๊ธฐ (5) | 2019.05.30 |
[VTK] MFC์์ VTK 2D Bar ์ฐจํธ ์ฌ์ฉํ๊ธฐ (0) | 2019.05.28 |
[VTK] Visual Studio 2015 MFC์์ VTK ์ฌ์ฉ ์ค๋นํ๊ธฐ (9) | 2019.05.26 |
[VTK] VTK 8.2 ๋ฐ Visual Studio 2015 ํ๊ฒฝ ๊ตฌ์ฑ (22) | 2019.05.15 |
[VTK] VTK SDK ์๊ฐ (2) | 2019.05.13 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[VTK] MFC์์ VTK ScalrBar ์ฌ์ฉํ๊ธฐ
[VTK] MFC์์ VTK ScalrBar ์ฌ์ฉํ๊ธฐ
2019.06.12 -
[VTK] MFC์์ VTK 3D ๋ชจ๋ธ ํ์ผ ๋ถ๋ฌ์ Renderingํ๊ธฐ
[VTK] MFC์์ VTK 3D ๋ชจ๋ธ ํ์ผ ๋ถ๋ฌ์ Renderingํ๊ธฐ
2019.06.08 -
[VTK] MFC์์ VTK 2D Line Plot ์ฌ์ฉํ๊ธฐ
[VTK] MFC์์ VTK 2D Line Plot ์ฌ์ฉํ๊ธฐ
2019.05.30 -
[VTK] MFC์์ VTK 2D Bar ์ฐจํธ ์ฌ์ฉํ๊ธฐ
[VTK] MFC์์ VTK 2D Bar ์ฐจํธ ์ฌ์ฉํ๊ธฐ
2019.05.28