{{ post.title }}
글 편집
글 편집 (이전 에디터)
{{ post.author.name }}
작성일
임도균 수석 연구원
개발그룹 개발연구부 기초연구팀
철은 두드려야 강해진다고 했던가요? 리커다인에 Mesher(메쉬어)를 기획하던 때는 그런 시기였습니다.
2000년 초반 큰 성장세를 보이던 펑션베이는 2000년대 후반 성장통을 겪게 됩니다. 이 시기는 한편으로는 힘든 시련의 시기이기도 하지만 다른 한편으로는 회사에게는 개발과정과 비즈니스 전반의 혁신을, 개발자 개개인에게는 변화와 혁신의 기회를 제공하는 기간이기도 했습니다. 개발 조직이 재편되기 전 일개 주니어 엔지니어였던 저는 그저 주어진 일을 수행하던 역할에서 적극적으로 의견을 개진하고 제품의 미래를 디자인할 첫 기회를 잡게 되었습니다. 물론 그에 따르는 위험 역시 컸지만 꽤 오랜 동안 제품 개발을 위해 준비해왔던 것들을 마음껏 시도 해볼 수 있는, 개발자로서는 힘들어도 행복한 상황을 맞이하였습니다.
본래 Mesher에 대한 구상은 2003~4년 사이에 시작되었습니다. 당시 펑션베이는 의욕적으로 FFlex(풀플렉스) 툴킷을 만들어 초기 MFBD 개념을 도입하던 시기였기 때문에 제품에 있어 다소 자유로운 구상이 가능했는데, 그 덕분에 Mesher개발을 위한 기초 단계의 일환으로 몇 가지의 메쉬 엔진에 대한 벤치 마크를 해보라는 지침이 있었습니다. 물론 개발 비용 및 위험 관리 차원에서 당시의 Mesher 개발 계획은 백지화 되었습니다. ‘Mesher 개발은 덩치가 너무 크고 위험 요소가 많다.’는 것이 주요 골자였습니다. Mesher는 따지고 보면 개발 기획에서부터 출시까지 근 10년이 소요된 제품이군요.
Mesher를 이용하여 강체를 손쉽게 유연체로 변환, MFBD 해석 가능
성공적으로 FFlex 툴킷이 출시되고 응용 애플리케이션들이 제품으로 성공하게 되었지만 전술한 대로 성장통을 겪는다. 이 과정에서 2008년, MFBD (Multi Flexible Body Dynamics) 팀이 출범하게 되고, 제대로 된 MFBD 제품을 만들어 보자는 기획 아래 장기적 관점의 제품 로드맵을 가다듬었다. 하지만 당시만 해도 MFBD 제품 로드맵의 핵심은 솔버 위주였으며 당시 많은 개발 인력이 MTT와 같은 소위 잘 나가는 툴킷에 집중적으로 투입되던 시기였기 때문에 MFBD 팀에서 UI를 담당하는 사람은 저 혼자 뿐이었습니다. 때문에 매우 정신적 육체적으로 힘든 시간을 보내야 했지만 역으로 기획을 혼자 하기 때문에 제품에 대한 통일되고 일관된 철학을 심기에도 좋은 기회였던 것으로 기억합니다.
사실 Mesher의 실질적인 개발은 2008년 보다 더 이후에 시작하게 되었습니다. 기획 당시 시점에서 RecurDyn은 여러 가지 구조적인 어려움을 지니고 있었습니다. RecurDyn은 MBD에서 시작해서 RFlex를 추가하고 이후 다시 FFlex를 추가하는 형태로 제품 개발이 진행되다보니 MBD, RFlex, FFlex 각각이 서로 다른 구조를 지니고 있었습니다. MBD는 캐드 데이터와의 직접적인 연관성이 크고 구성되는 강체의 숫자는 많아 봐야 몇 백 개 수준인데 반해, RFlex, FFlex에서는 Node와 Element 구조에 기반하여 작게는 수십만에서 크게는 수백만의 대용량 데이터를 다루는 작업이 주된 일이기 때문에 구조적으로 매우 다른 특징을 가집니다. 때문에 초기 단계의 RFlex, FFlex는 반드시 메쉬 결과물을 외부에서 가져와야 했고 필연적으로 성능상의 제약이 따랐고, 사용자 측면에서는 외부 프로그램을 사용해야하는 의존성이 존재했습니다. 그리고 이와 같은 높은 외부 프로그램 의존도는 당연히 사용자에게는 비용으로 연결되었습니다. 즉, MFBD 툴킷(RFlex, FFlex)을 사용하기 위해서는 여타 상용 Mesher 혹은 FE (Finite Element) 소프트웨어를 사용자가 가지고 있어야만 했으므로 MFBD 솔루션에 대한 결과를 얻기 위해서는 실질적으로 RecurDyn 구매 비용 외에도 추가 비용이 필요했던 셈입니다. 따라서 MFBD 툴킷은 대형 고객에게만 의미가 있는 다소 제한적인 제품이 될 수 밖에 없었습니다. 거꾸로 말해 만일 이 부분이 점진적으로 해결이 된다면 MFBD 툴킷을 활용하는 데 필요한 비용을 크게 줄일 수 있고, 사용자 입장에선 RecurDyn으로의 접근이 좀 더 쉬어질 수 있었습니다.
이러한 제품 및 사용자에 대한 이해를 기초로 1단계 작업으로 2008년부터 2009년에 이르기까지 기본적인 MFBD 툴킷을 유연하게 잘 처리할 수 있는 대규모 구조 변경에 착수하였습니다. 이를 통해 구조적으로는 캐드와의 연결관계가 정의된 강체에서 출발해 FFlex, RFlex 데이터 구조를 연결할 수 있는 형태의 구조가 완성되었는데 이를 통해 메모리는 적게 쓰는 반면 큰 폭의 성능 향상을 이뤄낼 수 있었습니다. 또한 이러한 구조는 현재 V8에서 완성되어가고 있는 G-Modeling[1]의 토대가 되었습니다.
2010년부터는 본격적인 Mesher 개발이 시작되었습니다. 당시 어느 정도의 기초 연구 작업 및 시제품 개발 작업은 마무리되었으나, 타 개발팀 및 경영진은 좀더 신중한 접근을 요구했습니다. 때문에 6개월이 넘는 추가적인 벤치 마크 기간이 진행되었는데, 이는 Mesher 개발이 얼마나 위험도가 높고 투자되는 비용이 큰가를 반증했다고 생각합니다. 뿐만 아니라 개발에 대한 반대 의견도 꽤 있어서 내부적인 진통이 상당했습니다. 특히 일부 영업팀에서는 쓸데없는 기능 개발에 시간을 들인다며 불평을 하기도 했습니다만, 프로토타입을 보여주자 오히려 Mesher 개발의 가장 열렬한 조력자가 되었다. 다만 겨우 프로토타입이 마무리된 시점에 (제품 정식 출시까지 1년 이상이 남은 상황) 고객 프로모션을 진행해 버리는 바람에 개발 스케줄 관리가 매우 곤혹스러워 지기도 했습니다. 아직 개발 규모와 완성 제품의 밑그림이 확실하게 결정되지 않은 상황에서는 여유있는 개발 기간의 확보가 매우 중요한데, 고객과의 약속 때문에 출시 시기를 조율할 수 없는 상황이 되어버린 것이죠. 우여곡절 끝에 Mesher 개발은 원안대로 다시 진행하게 되었지만, 빠듯한 개발 기간으로 인해 매우 긴박하게 진행되었습니다. 당시 몇 해 전 조직되어 완숙의 단계에 접어들어가던 QA팀이 없었다면 정해진 시간 내에 제품 출시는 매우 힘들었을 지도 모릅니다. 서두에서 언급했던 대로, 이 시기는 회사도 개인도 단련되어 가던 시절이었습니다.
Mesher의 개발 목표는 명확했습니다. 애초에 상용 Mesher 수준까지의 개발은 어마어마한 인력과 시간이 소모될 것이 자명하므로 RecurDyn이라는 프로그램의 특성에 맞게 최적화 되어 개발되어야 했습니다. 개발 당시의 목표를 정리하면 다음과 같습니다.
"Remesh 개념의 Mesher로서, 간단한 캐드 형상을 완성도 높게 자동으로 메쉬한다."
이를 간단히 풀어내면, 기존에 존재하는 렌더링 데이터(캐드형상)를 재사용하여 렌더링 데이터를 재차 메쉬하는 과정을 통해 메쉬 성공률을 높이고 속도를 향상시키는 개념의 Mesher를 개발하는 것이었습니다.
아울러 개발에 있어 중요한 고려 사항은 RecurDyn의 주요 사용자층이 기본적으로 FE 전문가들이라고 보기는 어렵다는 사실이었습니다. 따라서 사용자를 위한 기술적 진입 장벽의 해소가 필요했습니다. 사실 시스템의 동특성을 처리하는 MBD 모델링에서는 해석 초기부터 모델의 단순화가 많이 진행되는 편으로, 생각보다 단순한 요소들에 대한 MFBD적인 접근이 많이 필요했습니다. (물론 이후, MFBD의 성능 향상 및 사용자 요구사항 증가로 인해 최근 요구되는 형상의 복잡도는 매우 증가하고 있습니다.) 따라서 상용 Mesher를 쓰지 않는 상황에서 단순한 기계 요소의 메쉬 작업이 필수적이었습니다. 이에 더해 RecurDyn은 단일 요소를 세밀하게 다루는 FE 소프트웨어가 아니라 다물체에 대한 동특성을 보는 것이 목적이기 때문에 FE 해석과 관련한 세밀한 기술적 진입 장벽을 최대한 줄이고 모델링 과정을 단순화하는 작업이 필요했습니다. 따라서 메쉬 작업은 옵션이 최대한 배제된 상황에서 가급적 자동으로 진행되고 아울러 MFBD 모델링 작업의 어려움을 덜어줄 수 있는 ‘Assist Modeling (어시스트 모델링)’과 같은 기능이 필요했습니다. 몇 가지 보조 기능을 더해 최초의 그림이 완성되고 우여 곡절 끝에 RecurDyn/Mesher라는 이름으로 출시 기간에 맞춰 완성될 수 있었습니다. 앞서 소개했던 물론 영업팀은 고객과의 약속을 지킬 수 있었고, 이에 대한 고마움의 표시로 제게 준수한 와인 한 병을 선물해 주었습니다.
Assist Modeling을 이용하여 Joint, Force, Contact 등을 유지한 채 메쉬가 가능함
이후 Mehser는 간단한 Mapped Mesh 기능인 ‘Advanced Mesh’ 기능을 비롯하여 다양한 추가 개발이 진행되었습니다. 또한 지금도 Assist Modeling 기능이 조금씩 강화 되고 있고 이러한 환경 아래 G-Modeling이 완성되어 가고 있습니다. 그럼에도 불구하고 아직 Mesher 개발 과정은 갈 길이 멀다고 생각합니다. 실제로 최근의 사용자들의 요구사항은 타사 상용 Mesher의 주요 기능들에 준하는 것들이 많습니다. 이러한 요구사항들은 개발팀에서 풀어나갈 길고 어려운 숙제라고 생각합니다. 앞으로 Mesher가 어떻게 진화할지 고객여러분께서 관심을 가지고 지켜봐주시길 바랍니다.
[Mesher 버전별 주요 변화]
V7R5 : Mesher 출시!
- RecurDyn 내에서 Rigid body를 FFlex body로 변환
- 다양한 Beam, SHell, Solid Element 지원
- Assist Modeling을 이용하여 Mesh 후에도 Joint와 Force 가 유지 가능
- Imprint 기능을 통해 원하는 Point나 Line에 노드 생성 가능
V8R1 : Hexa dominant auto mesh
- Solid8(Hexa8) 추가를 통해 Hexa dominant auto mesh 지원
V8R2 : Remesh 지원
- 특정 부분의 요쇼코기 수정 지원
- Fit to CAD Geometry 지원을 통해 원본 CAD형상에 최대한 근전한 Mesh 지원
V8R2 : Advanced Mesh 지원
- 특정 형상에 대해 보다 높은 품질의 Mesh 생성
Assist Modeling에서 Multi-Surface 지원
- FDR의 Slave Node 설정을 위한 Surface, Edge 다중 선택 추가
- 추가한 Surface, Edge 제거
V8R3
- 일부 버그 수정을 통한 기능 개선
V8R4 : Assist Modeling 개선
- Contact 연결 유지 기능 지원(Geo Surface Contact)
- Joint 연결 유지 기능 개선: FDR 생성에 필요한 Surface 자동 선택