4-2 Custom InteractorStyle
import vtk
# 사용자 입력에 대한 이벤트 핸들러 클래스
# vtkInteractorStyleTrackballCamera를 상속받아서 트랙볼 카메라로 동작
class CustomInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):
def __init__(self, parent=None):
self.AddObserver("LeftButtonPressEvent", self.OnLeftButtonPress) #마우스 왼쪽버튼 프레스 이벤트 핸들러 설정
self.AddObserver("LeftButtonReleaseEvent", self.OnLeftButtonRelease) #마우스 왼쪽버튼 릴리즈 이벤트 핸들러 설정
self.AddObserver("MiddleButtonPressEvent", self.OnMiddleButtonPress) #마우스 가운데버튼 프레스 이벤트 핸들러 설정
self.AddObserver("MiddleButtonReleaseEvent", self.OnMiddleButtonRelease) #마우스 가운데버튼 릴리즈 이벤트 핸들러 설정
self.AddObserver("RightButtonPressEvent", self.OnRightButtonPress) #마우스 오른쪽버튼 프레스 이벤트 핸들러 설정
self.AddObserver("RightButtonReleaseEvent", self.OnRightButtonRelease) #마우스 오른쪽버튼 릴리즈 이벤트 핸들러 설정
def OnLeftButtonPress(self, object, event):
self.OnLeftButtonDown()
return
def OnLeftButtonRelease(self, object, event):
self.OnLeftButtonUp()
return
def OnMiddleButtonPress(self, object, event):
self.OnMiddleButtonDown()
return
def OnMiddleButtonRelease(self, object, event):
self.OnMiddleButtonUp()
return
def OnRightButtonPress(self, object, event):
self.OnRightButtonDown()
return
def OnRightButtonRelease(self, object, event):
self.OnRightButtonUp()
return
def main():
source = vtk.vtkCylinderSource() #원기둥 생성
source.SetResolution(32) #원기둥 Segment를 32개로 설정
mapper = vtk.vtkPolyDataMapper() #vtkPolyData를 Geometry로 매핑
mapper.SetInputConnection(source.GetOutputPort()) #원기둥 Output과 Mapper의 Input을 연결
actor = vtk.vtkActor() #Actor 생성
actor.SetMapper(mapper) #Mapper 할당
renderer = vtk.vtkRenderer() #Renderer 생성
renderer.AddActor(actor) #Renderer에 Actor 할당
renderer.SetBackground(0.3, 0.5, 0.7) #배경화면 색상지정
window = vtk.vtkRenderWindow() #Window 생성
window.AddRenderer(renderer) #Window에 Renderer 할당
window.SetSize(800, 600) #Window 크기 지정
interactor = vtk.vtkRenderWindowInteractor() #vtkRenderWindowInteractor 생성
interactor.SetRenderWindow(window) #window interactor에 Window 지정
interactor.SetInteractorStyle(CustomInteractorStyle()) #window interactor에 이벤트 핸들러 클래스 지정
interactor.Initialize()
window.Render()
interactor.Start()
if(__name__ == "__main__"):
main()
Author And Source
이 문제에 관하여(4-2 Custom InteractorStyle), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dunyazad/4-2-Custom-InteractorStyle저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)