2016. 1. 14. 16:33

- 어떻게 Open Inventor가 입력 이벤트를 처리하는지 설명

- Inventor의 내장 선택 정책 중 하나를 선택하여 객체를 선택

- 이벤트 콜백 노드를 생성함으로써 자신만의 선택 정책 구현

- 씬에서 선택된 객체를 하이라이트

- 선택 리스트가 변할 때 응용 프로그램이 어떤 연산을 수행하도록 허락하는 선택 콜백 함수 작성


* Open Inventor 이벤트 모델 설명

- 이것은 처리를 위해 데이터 베이스 안에서 객체에 대해 키 누르기 또는 마우스 움직임과 같은 이벤트를 보내는 간단한 메커니즘을 제공

- 윈도우 시스템이 클라이언트 윈도우에 이벤트를 보내는 것과 같은 대다수의 방식처럼, Inventor는 그것들을 처리할 수 있는 데이터 베이스 객체에 이벤트를 보낸다

- 중요한 개념은 이벤트 처리, SoXtRenderArea의 사용, 렌더링을 사용하는 위젯 그리고 Inventor 데이터베이스에서 이벤트 처리에 대한 Inventor 프로그래밍 모델을 포함한다

- SoHandelEventAction뿐만 아니라, 이벤트 콜백 함수의 개념, 선택 노드, 하이라이팅에 대해 자세하게 묘사한다


* 개요

- 사용자가 처리 박스 조종자에 마우스 버튼을 클릭하거나 스크린 상에서 새로운 위치에 물체를 드래그할 때, Inventor는 마우스로부터 사용자 입력을 어떻게 받고 그에 따라 객체를 이동할 수 있는가?

- 어떤 물체를 포함하지 않는 런더링된 이미지에서 공간을 마우스 클릭하면 무슨 일이 일어나는가?

- Inventor는 여러 개의 사용자 선택 객체를 어떻게 추적하는가?

- 이것들은 당신이 상호적인 Inventor 응용 프로그램을 작성하기 전에 대답되어야 할 모든 질문들이다


- 여기서는 어떻게 윈도우에 구체화된 이벤트가 Inventor 이벤트로 번역되는지에 대한 짧은 설명을 제겅한다

- Inventor 이벤트의 다른 종류와 그것들과 연관된 함수들을 설명한다

- 어떻게 씬 매니저가 구체적인 이벤트에 대해 이벤트 처리기를 찾고 어떻게 다른 노드들이 이벤트를 다루는지에 대해 배운다


* 이벤트 처리기에 대한 일반적인 프로그래밍 모델


- Inventor는 씬 데이터 베이스에 대해 내장 이벤트 모델을 포함한다

- 이 모델은 어떤 구체적인 윈도우 시스템 또는 툴킷에 기초하지 않는다.

- Inventor 프로그램을 작성할 때 당신은 X 윈도우 프로그래밍 모델을 선택할 수 있고 윈도우를 열기 위해 윈도우 시스템에 의해 제공되는 도구를 사용할 수 있고 Inventor로 이벤트를 보낼 수 있다

- Inventor는 X로부터의 이벤트 번역을 Inventor 이벤트 클래스로 제공한다

- 아래 그림은 X 이벤트가 렌더링 영역에 어떻게 통과하는지 보여준다

- Inventor 씬 매니저에 의해 처리되는 Inventor 이벤트로 번역되는지 보여준다

- Inventor는 윈도우 시스템에 독립적이기 때문에 다른 윈도우 시스템을 선택할 수 있고 자신만의 이벤트 번역기를 작성할 수 있다






* X 윈도우 시스템 사용하기


- Inventor는 X 윈도우 시스템과 함께 사용할 수 있는 Xt 유틸리티 집합 제공

- 렌더링 영역 "위젯"

- 메인 루프와 초기화 함수

- 이벤트 번역기 유틸리티


- 이 특징들에 추가하여 Inventor 컴포넌트 라이브러리는 또한 Xt 컴포넌트의 집합을 포함한다

- 이 컴포넌트들은 씬 데이터 베이스를 직접적으로 변경하기 위한 사용자 인터페이스에 관한 뷰어와 편집기를 포함한다


- 윈도우 시스템에 독립적인 Inventor의 측면에 초점

- 이벤트 ( SoEvent 로부터 파생 )

- 씬 매니저

- 이벤트 액션 처리

- 이벤트 콜백 함수

- 선택 노드


* Render Area

- 윈도우가 리사이즈 되거나 노출되거나 씬이 변화할 때 윈도우를 다시 그리는 내장 센서

- 내장 이벤트 처리기

- 투명도 타입과 안티 앨리어싱의 양과 같은 제어


Inventor 이벤트( SoEvent )


- 타입 정보( SoType )

- 이벤트가 발생한 시간

- 이벤트가 발생했을 때 커서 위치

- 이벤트가 발생했을 때 변경 키(Shift, Control, Alt)의 상태


- SoEvent의 하위 클래스는 추가 정보 포함

- 예를 들어 SoButtonEvent는 이벤트가 발생했을 때 버튼이 눌렸는지 아닌지에 대한 정보를 포함

- SoMouseButtonEvent 는 버튼이 눌렸을 때 어떤 버튼이 눌렸는지에 관한 정보를 포함


- 매크로 사용

- SO_MOUSE_PRESS_EVENT() : SoEvent와 버튼 숫자를 넣는다

                                   버튼이 눌렸을 때 TRUE 를 리턴

- SO_MOUSE_RELEASE_EVENT() : 버튼을 떼었을 때 TRUE 리턴


- SoKeyboardEvent 는 어떤 키가 눌렸는지에 관한 정보를 포함한다


- SoLocation2Event 는 커서가 움직였을 때마다 발생한다

- 이 이벤트는 윈도우 좌표에서 커서의 절대 위치를 포함한다

- (0, 0) 은 왼쪽 아래 코너로 시작한다


- SoMotion3Event 는 공간 볼과 같은 3D 입력 장치가 움직일 때마다 발생

- 이 이벤트는 장치의 이전 위치에 관한 상대적인 회전과 이동을 포함한다


* 씬 매니저

- SoSceneManager는 윈도우-시스템 독립적인 렌더링 영역에 속한 Inventor에서 사용되는 공통적인 클래스이다

- 렌더링 영역은 씬 그래프를 처리하기 위해 씬 매니저를 사용한다

- 씬 매니저는 렌더링과 이벤트 처리 둘 다 처리한다

- 어떤 특정한 윈도우 시스템에 독립적이다