본문 바로가기
공허의 유산/표현의 자유

[3DReconstruction] 03.meshroom tutorial review(3)

by 바른생활머시마 2023. 2. 14.
728x90
반응형

meshroom을 이용하여 샘플 사진으로부터 3D 오브젝트를 생성하는 과정을 살펴보았습니다.

https://learn-and-give.tistory.com/68

 

[3DReconstruction] 02.meshroom tutorial review(2)

지난 시간에 Meshroom sample data를 이용하여 3D Reconstruction을 해보았습니다. https://learn-and-give.tistory.com/67 [3DReconstruction] 01.meshroom tutorial review 3D 프로그램을 만들 때, 관심 있는 3D 오브젝트나 케릭터를

learn-and-give.tistory.com

 

이제, 샘플 사진 말고 실제로 사진을 직접 찍어서 한번 해보겠습니다.

아래와 같이 스타크래프트의 마린 피규어를 두고 스마트폰으로 주변에서 사진을 찍었습니다. 물건이 작아서 제법 가까이서 촬영해야 했습니다. auto focusing 때문에 초점 거리가 달라질텐데 괜찮을까 싶었는데, 그것이 되는지 안되는지 확인하는 것도 한번 확인 해 보고 싶었던 것이라, 수동 초점 조정 기능을 쓰지 않고 그냥 일반적으로 사진 찍는 모드 그대로 촬영하였습니다. 총 44장의 사진을 촬영하였습니다.

 

 

 

Drag & Drop, then Start!

앞에서 해본 것 처럼, 같은 과정으로 간단히 시작 해 보았습니다. 사진이 많기 때문에 당연히 더 오래 걸릴 것이라 예상했고 실제로도 더 많은 시간이 걸렸습니다. 아래는 거의 마무리 되어 갈 때 쯤의 사진인데, SfM 단계의 점군을 보니 그렇저렇 형상은 잘 나올 것 같아 보입니다.

 

처리 시간은 장비 사양에 영향을 많이 받는 것 같은데, 이 처리는 아래 사양의 노트북에서 했습니다. 그랬더니, 비행기 이륙하는 소리가 나면서 한참 동안 열심히 일을 하더라구요. 거의 11분 정도 처리 를 한 것 같습니다.

 

전체 과정이 끝나고, 가장 마지막 단계의 결과물을 확인하기 위해 Texturing 노드를 더블 클릭하여 형상을 확인 해 봤습니다. 

 

반응형

 

 

 

 

와우~! 기대보다 훨씬 잘 나온 것 같습니다.

3D뷰어에서 방향을 이리 저리 돌려봐도 대체로 다 괜찮게 나왔습니다. 물건이 작아서 근접 촬영을 하면 초점이 맞는 부분과 아닌 부분의 차이가 나기 때문에 너무 가까이 딱 붙여서 촬영하지는 않았습니다. 그래서인지, 매우 세밀한 부분까지 정교하게 만들어진 것은 아닌 것 같아요. 그래도 텍스쳐링이 되어 있으니 마린의 느낌은 잘 표현되는 것 같습니다.

 

조금 꼼꼼하게 살펴 봤더니, 형상이 좀 좋지 않은 곳도 보였습니다. 카메라에 잘 잡히지 않았던 부분이거나 검은색이라서 Feature가 없었던 부분 아닌가 싶은데요, 무릅쪽에 구멍이 나 있었습니다.

 

헬멧도 모양이 온전하지 않게 만들어 졌습니다 .아무래도 얇은 형상을 만들어 내기는 어려울 것 같습니다.

 

 

 

Post processing

이 상태도 충분히 좋아보이지만, 학습의 목적이 있으니 tutorial 처럼 후처리를 진행 해 보았습니다. Decimatin node를 추가합니다. 노드 편집 화면에서 context menu를 통해서 MeshDecimate 노드를 선택합니다.

추가 된 MeshDecimate 노드의 입력에 MeshFiltering 노드의 출력 Mesh를 연결 해 줍니다. 그리고, Decimate 노드의 최대 Vertex 개수를 10000fh 설정했습니다.

 

그 다음은 Decimate가 된 새 mesh에 다시 Texturing을 하기 위해, 기존에 있던 Texturing node를 복제합니다.

 

node를 복제하면 기존 node의 입력 링크도 함께 복제가 되기 때문에, 복제 된 노드의 입력에 연결 되어 있던 기존 Mesh 입력 링크를 제거합니다.(링크에서 context menu로 Remove) 그리고 그 입력을 Decimate node의 출력 mesh를 넣어줍니다.

 

 

자, 준비가 다 되었으니, 'Start'!!!

진행 중인 Decimate는 오렌지색, 대기 중인 Texturing2는 하늘색으로 표시 됩니다. 복제 된 노드의 이름을 정할 수 있으면 편리 할 것 같은데 그런 방법은 없는 것 같고, 노드 종류별로 뒤에 숫자가 증가하면서 구분 되는 것 같습니다.

 

+_+

 

 

복잡한 연산들은 이미 많이 되어 있는 상태이므로 전보다는 빠르게 됩니다. 

두 결과를 비교 해 보겠습니다. 아래는 원본입니다.

아래는 Decimate가 된 결과 입니다. 우측의 삼각형 개수를 보면 엄청나게 많은 삼각형이 줄어든 것을 알 수 있으며, 그럼에도 불구하고 형상은 크게 달라보이지 않습니다.

 

정확한 비교를 위해서 Wireframe 상태에서 비교를 해 보면, 원본은 Edge가 매우 촘촘하게 보여지고 있으며,

Decimation 된 형상은 상대적으로 매우 삼각형이 큼지막하게 되어 있습니다.

 

Draft meshing

Draft meshing도 배웠으니 한번 해보도록 합니다. DepthMap 노드에서 Duplicate Node..를 하는 것이 아니라

 

Duplicate Node from Here를 해줬었죠?

그 뒤의 고정은 앞에서 배운 것과 같습니다.

 

결과는....

뭐.... 항상 잘되면 그걸 쓰지 뭐하러 어렵게 모든 과정을 다하겠어요. ㅋㅋ. 잘 되는 경우도 있고 아닌 경우도 있다는 큰 교훈을 각인 시키는 좋은 시도였습니다.

 

 마린을 했으니, 히드라나 질럿도 해봐야 할지, 아니면 일단 마린 가지고 그 다음 처리 절차를 더 진행 해 볼지 생각 좀 해봐야겟네요.^^

728x90
반응형

댓글