티스토리 뷰

SCADA

동운 HMI의 3D 기술 배경

록개발자 2018. 11. 12. 15:00

닷넷 환경에서 C#으로 어렵지 않게 3D 오브젝트를 컨트롤로 추가할 수 있는 동운 HMI는 3D의 오브젝트의 생성부터 3D 모델을 실제로 화면에 출력하는 과정까지 오픈 소스 프로젝트나 (주)동운시스템의 자체 코드를 적용하고 있기 때문에 동운 HMI에 3D 컨트롤을 추가 적용하기 위한 별도의 비용을 지불할 필요가 없습니다. 이번 포스팅은 3D 모델의 제작부터 3D 모델을 화면에 출력하는 과정까지에 적용되거나 참조된 기술 요소들을 살펴 볼까 합니다. 


■ 블렌더(Blender) 
블렌더는 3dsMAX, Maya와 같은 상용 프로그램 처럼 3D 오브젝트를 모델링 및 애니메이션 할 수 있는 오픈소스 도구입니다. https://www.blender.org/에서 다운로드 받을 수 있으며 라이선스는 기본적으로는 GPL2로 기업에서도 무료로 사용할 수 있는 도구입니다. 윈도우 뿐만아니라 리눅스와 맥에서도 사용할 수 있습니다.




 

블렌더를 활용해서 동운 HMI에 사용할 3D 모델을 생성할 수 있습니다. 블렌더가 기본적으로 인식할 수 있는 다른 모델링 도구의 파일 형식은 아래의 그림과 같은데 Addon을 통해서 이외에도 다양한 파일을 불러오기/내보내기 할 수 있으며 그중에는 제한적이지만 CAD 파일을 인식할 수 있는 Addon도 있습니다.




동운 HMI에서는 Wavefront 형식의 *.obj 파일을 불러들여서 컨트롤로 사용하므로 작성한 3D 모델은 "Wavefront(.obj)" 형식으로 파일을 내보내기 합니다.


■ OpenGL/OpenTK 
3D 오브젝트를 표현하기 위해서 GPU(Graphics Processing Units)는 다양한 그래픽 기능을 수행하고 API를 통해서 해당 서비스를 지원합니다. 이러한 API는 크게 Direct3D와 OpenGL로 나뉘는데 동운 HMI에서는 크로스 플랫폼으로 어떤 운영체제에서도 사용할 수 있으며 개방형이라는 장점이 있는 OpenGL을 채용하고 있습니다. Direct3D와 OpenGL이 독립적으로 발전해 왔지만 기능은 매우 유사해서 다양한 GPU(Graphics Processing Units)에서 Direct3D와 OpenGL을 모두 지원하고 있습니다. 문제는 Direct3D가 마이크로스프트에서 만들었지만 C#에서 직접 사용할 수 있는 API가 제한적이라는 것입니다.

OpenTK는 C#으로 개발된 오픈소스 패키지로 C# 닷넷 환경에서 간편하게 OpenGL을 사용할 수 있도록 도와 주는 라이브러리 입니다. 최신 버전은 http://www.opentk.com/에서 다운로드 받을 수 있습니다. 라이브러리를 설치하면 아래의 그림과 같이 해당 모듈을 닷넷 라이브러리에서 간단하게 참조하여 사용할 수 있습니다.






■ Object Loader 
앞서 언급한 것처럼 미리 제작한 3D 모델은 Wavefront(.obj) 형식으로 저장되어야 합니다. Wavefront 파일 형식은 아래의 그림과 같이 텍스트 파일의 형태로 오브젝트의 점과 면의 위치를 기술합니다.




위와 그림과 같은 3D 모델 파일을 분석하여 GPU에게 전달할 수 있는 데이터로 로딩하는 과정은 OpenTK 커뮤니티에 공개되어 있는 ObjMesh 클래스를 동운 HMI에 맞도록 수정하여 로더를 제작했습니다. 커뮤니티의 관련 글 주소는 http://www.opentk.com/node/642 입니다. 동운 HMI의 태그 데이터와 로드한 3D 컨트롤 간의 매칭은 기존 2D 컨트롤 매칭 방법과 크게 다르지 않습니다. 아래의 코드 는 로드한 모델 데이터로 각 컨트롤의 회전 각도, 색, 위치를 적용하여 렌더링하는 예제입니다.




3D 모델 제작부터 HMI 제작까지 동운 HMI를 통해서 3D 모델을 활용한 모니터링의 장점을 확인해 보세요. 


 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함