Skip to content

**** ****

for my bad memories..

OpenGL로 CAE-Pre 프로그램을 만든지 언 2년째..


처음 2년전에 OpenGL을 시작했을때가 생각난다.

OpenGL은 배우기 어렵고 너무 많은 시간을 소비해야 한다는 글들을 보고 이게 과연 옳은 방향일까 고민을 했었다.
막상 긴 시간동안 오픈소스 엔진을 찾아보니 CAE 프로그램을 만드는데 전혀 적합하지 않다는 것을 알았다.
맞다. 저런 엔진은 게임을 만들려는 사람들에 국한된 얘기구나.. 하는 결론을 내렸다.

전혀 무지한 상태에서 그래도 자신있다는 Tcl/Tk로 GUI를 만들고
Tk 프레임에 glfw를 이용해서 OpenGL 프레임을 붙여서 개발을 먼저 시작했는데,
아무래도 UI가 느리다 보니 제약이 많아졌다.

그래서 또 자신있는 Qt를 메인 GUI로 하고 Qt내부에 패널을 두어서 Tk 프로그램을 유저가 추가할 수 있도록 했다.
추가된 Tk 패널에는 Tk로 GUI를 짜고 Tcl로 스크립팅도 가능하게하여 자동화도 염두해 두었다.

정말 난관은 요소 주변에 edge를 그리는거였다.
단순히 라인으로 그리는건 정말 안이쁘고 여러 가지 문제가 많았다.
그래서 One Pass 와이어프레임 랜더링 기법의 논문을 찾아서 구현을 했다.
이걸 구현했을때는 참으로 기뻤다.

투명 기법도 꽤 긴 시간 적절한 방법을 찾아서 적용도 했다.
이것 역시 만들고 나니 뿌뜻했다.

정말 엔진 없이 생 OpenGL로 개발 하려니 처음부터 모든걸 작성해줘야 한다는걸 지금도 실감하고 있다..

당연한 얘기지만 Pre의 기본 기능인
요소의 피킹에 있어서 다양한 방법으로 선택할 수 있는 기능이 있어야 했다.
역시 다양한 문제야 봉착했고 이런 문제를 해결하기 위한 알고리즘들을 찾아보고
적절한 방법을 테스트후 마우스로의 픽킹 부터 영역 선택등 다양한 방법을 구현했다.
또 선택된 요소에 적절한 색을 지정하는 방법도 필요하기에 구현했다.

제일 문제는 메시 구조체 였다.
메시 구초체는 이웃 요소를 빠르게 쉽게 찾을 수 있어야 했고,
요소 삭제시 연결 무결성이 유지가 되어야했다. 또 적절한 메모리를 소요해야한다.
아직까진 상용 Pre 프로그램과 비슷한 정도의 메모리를 차지한다. (앞으로는 더 늘수도 있겠지..)

요소 마스킹 기능도 구현했다. (아직까진 속도면에서 못마땅한데 좀더 다른 방법을 고안해냐야겠다)

캐드 기능은 아직도 엄두가 안나는데 아직까진 OCC 를 이용해서 iges나 step 정도를 뷰잉 해주는 수준이다.

LS-Dyna의 인풋덱, 또 결과 파일인 d3plot, binout 을 보는 기능도 구현했다.
역시 에니메이션도 된다. 이 부분은 아직 추가할 기능이 산적히 싸여있다.

OpenGL 멀티 윈도우는 Qt로 작업했더니 아주 쉽게 지원이 되었다.

쓸말은 많지만.. 여기까지.. 이제 자야겠다.


Categorized as: Programming



답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.