아래의 글은.. 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로 작업했더니 아주 쉽게 지원이 되었다.
쓸 말은 많지만.. 여기까지.. 이제 자야겠다.
'블로그 (Blog) > 개발로그 (Devlogs)' 카테고리의 다른 글
ntldd (0) | 2024.03.08 |
---|---|
gcc 메세지 컬러 표시 켜기 (0) | 2024.03.08 |
Manjaro 리눅스 on VMware (0) | 2024.03.08 |
gcc 다운그레이드 (0) | 2024.03.08 |
signature from … is unknown trust (0) | 2024.03.08 |