4-2 Custom InteractorStyle
2567 ワード
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()
Reference
この問題について(4-2 Custom InteractorStyle), 我々は、より多くの情報をここで見つけました https://velog.io/@dunyazad/4-2-Custom-InteractorStyleテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol