1. 개요
Blender의 기능을 설명하는 문서.2. 모델링(Modeling)
모델링 작업에서는 점, 선, 면의 형태를 직접 연결하고, 자르고, 합치고, 나누고, 파 내는 등의 방식을 사용한다. 주사위, 책상, 자동차, 의자 등 인공물이나 태양, 지구, 야구공 등 반듯하고 인공적인 모형의 입체모형을 만드는 데에 쓰인다.3ds Max 사용자들은 맥스에 비해 모델링이 힘들다고 하지만[1] 단축키에 익숙해지면 훨신 편하게 작업할 수 있다. 단축키로 대부분의 작업을 할 수 있기 때문에 직관적이다. 각 버튼에 마우스를 대보면 바로 단축키를 확인할 수 있다. 보통 많이 쓰이는 단축키는 10개 정도고, 많이 배워도 30개 이상 사용하지는 않는다. 2.8x 버전으로 넘어오면서 단축키가 대거 축소되었다. 기존 사용자들은 불편하게 여기고 있지만, 새로운 사용자가 단축키로 인하여 입문에 어려움을 느끼는 것을 어느정도 줄여주게 되었다.
곡면 서피스를 디자인하는 방법에는 여러 가지가 있다. 섭디(SubD; Subdivision surface)는 물론이고 스컬프팅할 때를 위해서 다중해상도(Multi-resolution)과 다이나믹 토폴로지(Dynamic topology)도 있다. 일부 뾰족한 모서리를 만들고 싶다면 모서리 접기(Edge crease) 기능을 사용하면 된다. 그리고 마야, 맥스와 더불어 픽사의 OpenSubdiv 기술이 적용된 DCC 소프트웨어 패키지 중 하나이기도 하다.
블렌더 2.63부터 Bmesh라는 이름으로 N-gon(사각형을 넘는 오각형, 육각형 등의 폴리곤)을 지원하기 시작했다.
블렌더 역시 넙스(NURBS) 곡면 툴을 지원하고 있다. 유튜브에서 Blender NURBS로 검색해보면 제품 및 그래픽 쪽에서 사용하는 사람들이 있다. 참고로, 건축에서 넙스 또는 서브디 곡면 서피스를 사용하는 사람은 거의 없다. 3D 모델링 분야에서 규모가 큰 스케일의 작업이나 복잡한 서피스 모델링 작업이 필요할 경우 넙스 보다는 매쉬-섭디(Mesh-SubD)가 사용되고 있는게 모던 트렌드이다. 참고로, CAD 분야에서는 NURBS는 최종 서피스 작업에 쓰이고 있고 캐릭터 모델링이나 복잡한 프리폼(Freeform) 서피스쪽에서는 SubD가 NURBS 전 단계에서 쓰인다. 모션 그래픽쪽에서 넙스를 지원하는 대표적인 프로그램으로는 마야가 있다.
맥스나 마야처럼 수정자(Modifier)도 다양하게 갖고 있다. 3ds Max에서 새 수정자가 아래에서 위로 적용되는 것과 반대로 블렌더에서는 위에서부터 아래로 적용된다. 블렌더의 수정자 기능은 유사 유료 프로그램을 뛰어넘은것도 사실이지만 개선이 필요한 사항도 한두개는 있다.[2][3].
3. 스컬프팅(Sculpting)
스컬프팅 (Sculpting)은 우리말로 조소라는 뜻이다. 대리석을 깎거나 찰흙을 빚어 형체를 만드는 작업과 유사하다.
스컬프팅 작업에서는 부드러운 입체 모형을 누르고, 변형시키고, 무늬를 내고, 끌어당기는 방식으로 형태를 만든다. 동물이나 식물과 같은 생물, 돌이나 지형 같은 자연물, 인간의 신체를 만드는 데에 많이 쓰인다. 블렌더의 스컬프팅 기능은 사람이나 동물, 지형, 돌 등 무엇이든 만들 수 있을 정도로 강력하다.
2019년까지 스컬프팅 기능은 업계 1위인 ZBrush보다 떨어진다는 평가를 받았지만, 2020년 한 해 동안 새로 영입된 개발자인 Pablo Dobarro가 셀 수 없이 많은 도구와 기능을 추가하여 그것도 옛날 이야기가 되어 버렸다. 스컬프팅 기능은 Pablo Dobarro 덕분에 엄청난 속도로 기능이 개선되는 중이다[4]. 이제 블렌더의 쉬운 UI와 편리한 조작법과 더불어 블렌더의 폴리곤 모델링 기능과 결부하여 사용하면 작업이 오히려 ZBrush보다 빠르다는 평가를 받기도 한다[5]. 뼈대(Armature) 작업이나 렌더(Render)까지 작업 과정에 포함시키면 블렌더가 더 나은 선택지라는 것이다. 다만 2020년 기준으로 스컬프팅 기능을 쓰는 스튜디오에 취직하기 위해서는 ZBrush를 배우는 것이 좋다고 한다. 2020년 말 현재 ZBrush보다 부족한 점인 고밀도 스컬프팅(Highpoly Sculpting) 시의 성능은 Pablo Dobarro가 손보고 있다고 한다. 2021년에도 엄청난 속도로 기능 개선이 이루어지고 있다.
모든 브러쉬에는 원하는 텍스처도 적용할 수 있고, 매핑(Mapping) 방식도 마음대로 고를 수 있다.[6].
적은 폴리곤(Low-poly)의 복제본을 만들어서 법선 맵(Normal map)을 찍어내고(Bake) 싶다면, Decimate나 Remesh 기능을 사용하면 된다. 모형을 사각폴리곤(Quads)으로만 채우고 싶다면, 그 작업을 대신 해주는 값싼 애드온(Add-on)들이 많이 나와있다. 그리고 ZBrush의 경우 Retopology 기능을 별도로 제공하는 데에 비해 블렌더에서는 Retopology 작업을 할 때 모델의 표면에 스냅하면서 점을 찍어 토폴로지(Topology)를 그려나가는 방식을 사용한다.
토폴로지(Topology, 표면의 폴리곤 배열) 관리 측면에서 대부분의 사람들은 스컬프팅(Sculpting)하면서 폴리곤 밀도를 다룰 때 동적 토폴로지(Dynamic topology)이라는 기능을 쓴다. ZBrush의 Dynamic mesh와 유사한 블렌더의 동적 토폴로지 기능은 스컬프팅 디테일이 올라가고 스컬프팅 브러쉬 크기가 작아질수록 자동적으로 삼각폴리곤으로 면을 분할하는 역할을 대신 해 주어 아티스트는 폴리곤 토폴로지를 신경쓰지 않고 오로지 스컬프팅하는 데에만 집중할 수 있다.[7] 다만 장점만 있는 방식은 아니다. 동적 토폴로지는 브러시 디테일 수치를 낮추고, 폴리곤이 늘어날수록 급격하게 성능상 부하가 올라간다.[8] 그렇기 때문에 너무 빽빽하지 않게, 적절한 폴리곤 밀도로만 형태를 갖춘 뒤에 Multi-resolution이라는 수정자(Modifier)를 오브젝트에 적용해서 스컬프팅(Sculpting)하는 방식을 사용하는 것이 좋다. Multi-resolution 수정자는 실제 폴리곤보다 더 세밀한 해상도(resolution)가 필요한 비늘, 주름 등 디테일을 추가하는 데에 사용된다. 해당 옵션의 기본값은 상대적 디테일(Relative Detail)로 되어 있는데 해당 모드의 경우 현재 뷰의 시점을 기준으로 동적 토폴로지의 디테일 정도가 결정되므로 해당 옵션으로 설정한 상태에서 화면을 뒤로 빼서 스컬팅을 하면 디테일이 모두 날아간다. 사용 시 주의해야 할 부분이다.
토폴로지 관리의 다른 방법은 Ctrl+R로 표면수정(Remesh)를 수시로 가하면서 스컬프팅하는 것이다. 이 기능은 모델 전체의 폴리곤을 같은 크기로 재생성해주는 역할을 한다. 성능상 동적 토폴로지(Dynamic Topology)보다 훨씬 가벼워서 고밀도 스컬프팅(Highpoly Sculpting)할 때 쓰기 좋은 방법이다.
성능 관리 팁으로, 2020년 기준 고성능 데스크톱에서는 100만(1Million) 개의 폴리곤으로 이루어진 오브젝트까지는 60프레임 화면으로 부드럽게 스컬프팅할 수 있다. 현재 오브젝트의 폴리곤 개수는 3D 뷰포트(3D Viewport)의 씌우기(Overlay) 설정에서 통계(Statistics)를 켜면 볼 수 있다.
4. 리토폴로지(Retopology)
리토폴로지(Retopology)란 메쉬 표면의 폴리곤 배열을 깔끔하게 정리하는 작업이다.
메쉬로 된 입체모형의 표면 폴리곤 배열을 토폴로지(Topology)라고 한다. 그런데 스컬프팅(Sculpt) 작업을 하거나 3D 스캔을 하여 모양은 그럴듯한데 폴리곤이 지나치게 많거나, 폴리곤은 죄다 삼각형에 엉망진창인 토폴로지로 덮여있는 메쉬 오브젝트가 생긴다면? 더군다나 여기에 뼈대(Armature)를 심어서 캐릭터처럼 움직이게 하고 싶은데 토폴로지가 엉망이어서 표면이 이상한 데에서 접히고 비틀어진다면? 바로 이럴 때에 리토폴로지 작업이 필요하게 된다. 토폴로지를 다시 만드는 작업이기 때문에 리토폴로지라는 이름이 붙은 것.
일반적인 리토폴로지 기능은 2020년 현재 블렌더에서는 공식적인 기능으로 지원하지는 않는다. 단, 표면 스냅(surface snap)기능과 Polybuild 도구를 조합하여 리토폴로지를 할 수 있으며, 리토폴로지만을 위한 기능이 아닌만큼 마야나 Zbrush등과 비교해서는 기능적으로 많이 떨어진다.[9]앞으로는 리토폴로지 기능들이 추가될 예정이다.[10] 전용 오버레이, 전용 스냅, 쿼드 라인 생성, 릴렉스 브러쉬 등이 계획되어 있다.
이외에 블렌더는 두 가지 방식의 리메쉬(Remesh)를 지원한다. 리토폴로지를 자동으로 해 주는 기능이라고 생각하면 된다.
첫째, Voxel remesh 방식은 오브젝트를 복셀로 변환한다.[11][12] 오브젝트 내에서 메쉬가 겹쳐 있어도 하나의 합쳐진 복셀 덩어리로 변환한다. Dyntopo에서 자주 발생하는 구멍 뚫림 같은 문제도 적고[13] 폴리곤 겹침이나 디테일 밀도를 신경쓰지 않고 사용하기 좋다. 스컬프팅 작업(Sculpting)에 주로 쓰이나, 디테일 밀도가 늘어날수록 처리 시간이 급격하게 늘고 부하도 커지고, 엣지가 울퉁불퉁해지는 단점이 있어 작업 초반에 양감을 잡을 때부터 중간 레벨의 디테일 밀도 작업 과정까지 쓰기 좋다.
둘째, Quadriflow 방식은 표면을 사각폴리곤(quads)으로 정리해 준다. 천 개든 만 개든 몇 개의 사각폴리곤으로 표면을 덮을지 지정할 수 있다. 완전히 사각폴리곤만으로 덮어주므로 스컬핑 작업을 할 때 MultiRes 기능을 사용함에 있어 이점이 있다. 하지만 완전히 계산을 통해서만 리메쉬가 이루어지므로, 수동으로 폴리곤을 정리할 때처럼 폴리곤이 흐름을 정해주거나, [14]특정 모서리에서 각을 살리거나, 캐릭터의 얼굴에서 눈이나 입에만 디테일 밀도를 올리는 등의 기능은 아직 지원되지 않는다. 전체적으로 균일하게 사각폴리곤의 수를 낮춰야하는 경우에 한정해 쓰기 유용하다.
5. UV 편집하기(UV Editing)
UV란 입체도형의 전개도로, 정사각형 모양의 텍스처 이미지에[15] 입체도형 표면을 어떻게 펼쳐놓을지 맞춰 놓는 계획이다. 오브젝트는 자기가 가진 UV라는 전개도를 참고해야만 텍스처 이미지를 옷 입듯이 표면에 투영할 수 있다. 보통 한 오브젝트마다 하나의 UV를 갖는다.[16] 텍스처 페인팅을 하려면 반드시 UV를 만들어놓아야 한다.당연히 블렌더는 UV 편집 기능을 아주 제대로 지원한다. 수동 전개를 할 수도 있지만 Smart UV Project라는 강력한 자동 전개 기능도 있다. Smart UV Project를 사용하면 몇 번의 클릭만으로 웬만한 사람이 한 것처럼 깔끔하게 전개도를 알아서 펼쳐준다.[17] 수동으로 UV를 만들 경우, 입체도형 상의 모서리에 미리 틈(Seam)을 표시해 놓으면 그 모서리는 붉은색으로 보이는데, UV라는 전개도를 펼칠 때 어느 모서리를 가위로 자르듯 분리시킬지 정해놓는 기능으로 자주 쓰이는 방법이다. UV 전개도를 펼쳐놓고 난 후에 2D 상에서의 좌표를 직접 수정할 수도 있다. UV를 수정하는 2D에서도 이동, 회전, 확대/축소, 비율 편집(Proportional editing)등 3D 공간에서 사용하던 거의 모든 도구를 사용할 수 있다.
참고로 이름 UV에서의 U와 V는 텍스처 이미지의 가로축, 세로축 좌표를 상징한다. X나 Y를 사용하지 않는 이유는 이미 3차원 공간을 XYZ로 나타내고 있어서 혼동의 여지가 있기 때문이다. 그리고, W는 이미 쿼터니온이라는 특수한 회전 방식의 축에 쓰이고 있다. UV라는 용어는 블렌더뿐만 아니라 모든 3D 그래픽 프로그램들에서 똑같이 사용하는 통일된 개념이다. U와 V축을 사용하는 2D 전개도, 그래서 이름이 UV가 된 것이다. 좀 더 기술적으로 설명하자면, UV란 입체도형을 이루는 점(Vertex)과 이미지 상에서의 좌표점의 일대일 대응 관계다. 여기서 U와 V는 항상 0과 1 사이의 값을 갖는다. 그래서 UV를 사용하면 해상도에 상관없이 텍스처 이미지의 어느 지점을 입체도형 표면의 어느 지점에 투영할지 블렌더가 알 수 있게 된다.
블렌더 2.82부터는 유딤(UDIM)도 지원한다. 이미지 하나로는 너무 해상도가 낮을 때, 여러 개의 이미지를 합쳐 오브젝트 하나에 입히는 기능이다. 이걸 쓰면 훨씬 더 해상도가 높아지고 선명한 텍스처가 만들어진다.
6. 재질 입히기(Shading)
완성된 입체 모형에 색과 질감을 나타내는 재질(Material)[18]을 입히는 과정이다.재질 하나하나가 역시 데이터블록이다. 재질 데이터블록은 텍스처 데이터블록을 사용하고, 텍스처 데이터블록은 이미지 데이터블록을 사용한다. 만약 블렌더 상에서 이미지 위에 무언가를 그렸다면(Texture painting), 그건 이미지 데이터블록을 수정한 것이다. 만약 노드를 움직이거나 새로 연결하거나 끊었으면, 그건 재질 데이터블록을 수정한 것이다
편하게 작업하려면 모든 이미지가 항상 블렌더 파일 안에 자동으로 포함되도록 Automatically Pack into .blend 설정을 켜 놓는 것이 좋다. 이 설정이 존재하는 것은 블렌더의 강점이다. 그런데 이미지 데이터블록은 특이해서 Save 명령으로도 변경사항이 저장되지 않는다. Save 명령을 내려도, 파일을 닫았다가 다시 열어보면 그리거나 수정한 내용이 온데간데없이 사라져 있고 수정하기 전의 이미지 데이터블록만 남아있다. 그래서 이미지를 수정했을 때는 Save all images 명령이나 Save dirty 명령을 사용해야 한다. 둘이 같은 명령이다. 이미지가 파일에 포함(Pack)되었다면 블렌더 파일 내부에 데이터블록 형태로, 포함(Pack)되지 않았으면 블렌더 파일 외부에 파일 형태로 존재한다.
블렌더에는 몇 가지의 자동생성 텍스처(Procedural texture)도 있다. 일반적으로는 Noise, Voronoi가 자주 쓰인다.
블렌더는 Specular 방식과 Metallic 방식의 재질을 둘 다 지원한다. 나아가 하나의 재질 안에서 섞고 싶으면 혼용할 수도 있다.
재질 가운데 Glass BSDF 또는 Refraction BSDF로 렌즈를 만들 수도 있는데, 가장자리가 검게 보이는 문제가 있기도 하고, IOR(Index of Refraction)에 1보다 작은 소수값을 써도 가장자리에 빛이 안 가서 검게 보인다. 이 문제 관련 글을 참고할 만한데, 무슨 스크립트가 필요한 듯하다.
7. 텍스처 그리기(Texture Painting)
블렌더에서는 브러쉬 도구로 2D 이미지에 그리거나, 3D 오브젝트[19] 위에다 직접 그릴 수도 있다. 흐리기(Soften), 문지르기(Smear), 복제하기(Clone), 채우기(Fill) 등 다양한 도구가 있다.브러쉬가 꽤 강력하다. 브러쉬 도구 속성에는 색, 크기, 세기는 물론이고 혼합 모드(Blending mode)[20], 텍스처(Texture), 텍스처 마스크(Texture mask), UV 마스크(Mask), 모양 곡선(Curve) 등 다양한 옵션이 갖추어져 있다.
획 옵션도 굉장히 강력하다. 일반적인 획으로 그릴 수도 있지만, 간격을 넓혀서 점선으로 만들거나(Spacing), 떨림을 주거나(Jitter), 획을 부드럽게 만들어(Smooth stroke) 그릴 수도 있다.
그래픽 태블릿도 제대로 지원한다. 브러쉬의 반지름(Radius), 세기(Strength), 간격(Spacing), 떨림(Jitter) 중 원하는 옵션에 필압을 적용할 수 있다. 각각의 옵션 옆에 필압 반영 버튼이 있는데 그걸 켜거나 꺼 놓으면 된다.
색 추출(Sample color) 도구는 단축키 S다. 화면 상의 색을 추출할지, 아니면 텍스처 상의 색을 추출할지도 정할 수 있다. S만 누르면 추출한 색이 전경색(Foreground color)으로 지정되고, S를 누른 채로 클릭하면 그 색이 팔레트(Palette)에 추가된다. 클릭 여부에 따라 결과가 달라진다.
브러쉬의 색 속성에는 팔레트(Palette) 목록, 축적(Accumulate), 불투명도(Alpha), 그러데이션(Gradient) 옵션도 마련되어 있다. 팔레트에서는 창작 중 필요에 따라 색을 추가하거나 제거하면서 정리할 수 있다.
브러쉬에 적용할 수 있는 패턴 텍스처는 인터넷에 많이 돌아다닌다. 그런데 눈, 비, 먼지 등 브러쉬에 사용할 텍스처를 직접 그리고 싶다면 블렌더 내에서 그릴 수도 있다. 새로운 이미지 데이터블록을 만들어서 브러쉬에 적용할 텍스처를 그린 다음에, 브러쉬가 그 이미지 데이터블록을 텍스처로 사용하도록 정해주면 된다. 블렌더에서 이미지에 그림을 그릴 때에는 브러쉬에 반복(Tiling)이라는 옵션이 생기는데, 켜 놓으면 상하좌우 어느 쪽으로든 이미지를 벗어나서 그리면 그 반대편에서 저절로 브러쉬 획이 그려진다. 그래서 그 이미지는 패턴으로 나열해도 경계선에서 끊기지 않고 자연스럽게 이어지는 한 조각이 된다. 이것만큼은 포토샵에도 없는 블렌더 브러쉬만의 특별한 기능이다.
그런데 지우개 도구가 없다. 불투명도(Alpha)가 포함된 이미지에서 꼭 필요한 도구가 지우개인데, 어째서인지 없다. 대신 브러쉬 도구에서 혼합 모드(Blending mode)를 Erase Alpha나 Add Alpha로 설정하면 RGB 채널은 건드리지 않고 A(불투명도) 채널만 그릴 수 있게 된다.
만약 PBR 재질을 사용한다면 Diffuse, Metallic, Roughness, Height 등 여러 개의 이미지 텍스처로 이루어진 재질일텐데, 모든 이미지 텍스처에 한번에 그릴 수 있는 방법은 아직까지 없다. 각 이미지에 따로따로 그려보면서 그 결과물을 확인할 수는 있다. 꼭 PBR 재질이 아니라도 노드로 이루어진 복잡한 재질이라면 그 재질을 구성하는 이미지들 중 하나를 선택해서 그 위에다 그릴 수 있다.
8. 리깅(Rigging)
"Rig=Armature=뼈대"라고 생각하면 편하다. 뼈대 작업이기 때문에 Rig+ing=Rigging이라는 이름이 붙은 것이다.
리깅(Rigging) 작업은 인물, 생물, 로봇 등 움직여야 할 입체 모형이 여러 가지 자세, 동작을 취할 수 있도록 해 준다. 간단하게 설명하자면, 입체 모형의 내부에 뼈와 관절을 넣어주고, 각 뼈가 어느 부분의 피부(표면)를 붙잡아서 당길지[21] 연결해 주는 작업이다.
블렌더에서는 개개의 뼈(Bone)가 오브젝트인 것이 아니라 전체 뼈대(Armature)가 하나의 오브젝트다. 뼈대(Armature)라는 오브젝트를 추가함으로써 리깅을 시작할 수 있다. 그래서 메쉬 오브젝트의 편집모드에 들어가서 폴리곤을 수정하듯이, 뼈대 오브젝트의 편집모드에 들어가서 뼈(Bone)을 수정하는 아주 깔끔한 방식을 쓴다. 그래서 각각의 뼈(Bone)가 뼈대 속에서 자신의 "원위치"를 알고 있기 때문에 자세를 초기 상태로 돌리기도 아주 쉽다.
뼈대 내부에서, 뼈들 사이의 부모자식관계(Parent-child relationship)는 모두 일반적인 오브젝트처럼 단축키로 설정과 해제가 가능하고 그 관계는 점선으로 나타나서, Outliner 편집기(Editor)에서 위아래 구조를 일일이 정해주는 수고를 하지 않아도 된다. 그리고 각 뼈의 이름을 지을 때 좌우를 구분해주는 접미사를 붙이면 편하다. L과 R, _L과 _R, -L과 -R, .left와 .right, _left와 _right, -left와 -right 등 좌우를 구분하는 접미사라면 블렌더가 뭐든 잘 알아듣는다. 뼈 이름에 좌우 접미사가 붙어있으면 편집 과정에서 블렌더가 좌우 대칭을 저절로 유지시켜준다.
블렌더에서는 뼈대의 초기상태를 조절하는 편집모드(Edit mode)와 자세모드(Pose mode)가 별개라서, 자세를 얼마든지 초기화시키거나 다양한 자세의 상태를 자세 라이브러리(Pose library)에 저장할 수 있다. 자세가 이미 잡혀 있더라도, 그 상태에서 뼈 길이나 관절 위치 등 뼈대를 조금 변형하거나, 스컬프팅(Sculpt)하거나[22], 점 가중치를 그릴(Weight paint) 수도 있다. 한번 스킨을 잡으면 관절 위치가 잘못되었을 때 다시 스킨을 잡아야 하는 맥스에 비해 블렌더는 나중 과정에서도 언제든지 조절하면서 중심점 위치를 조절할 수 있다.
제약(Constraint)[23]도 다수 갖고 있는데 다른 프로그램이 플러그인이나 스크립트를 써야 할 만한 것도 기본으로 내장되어 있어 대단히 강력하다. 단순한 기능으로 복잡한 결과를 구현하는, 개념상의 말끔함도 장점이다. 가장 많이 쓰는 제약으로는 Inverse kinematics[24]와 Track to[25] 제약이 있다.
표면을 뼈대에 엮는 스키닝(Skinning)을 할 때 점그룹(Vertex group)과 Mirror 수정자(Modifier)의 궁합이 아주 좋다. X축 대칭으로[26] 스컬프팅하고서 오브젝트 좌우에 뼈들 이름과 동일한 점그룹(Vertex group)들을 준비해 놓았다고 했을 때[27], 좌우가 똑같은데 점 가중치(Vertex weight)를 두 번 그리는 건 시간이 너무 아까운 일이다. 그럴 때 왼쪽이든 오른쪽이든 한쪽에만 점 가중치(Vertex Weight)를 그리고 Mirror 수정자를 적용하면 편리하게도 모든 .L 점그룹(vertex group)에 저장된 점 가중치(Vertex weight)를 본떠서 메쉬 반대편의 .R 점그룹(vertex group)에도 점 가중치가 그려진다. 만약 척추뼈, 목뼈, 머리뼈 등 딱히 좌우가 없는(이름에 .L이나 .R 접미사가 없는) 뼈에 대응되는 점그룹이라면, 그냥 그 점그룹 안에서 반대편 점가중치가 그려진다.
여기서 단축키의 미학을 빼놓을 수 없다. 일반적으로 리깅(Rigging), 스키닝(Skinning) 작업에서는 단 두 개의 오브젝트를 사용한다. 하나는 사람 등의 메쉬(Mesh) 오브젝트[28], 다른 하나는 뼈대(Armature) 오브젝트다. 이 두 개 사이를 왔다갔다하는 일이 많은데, 각각에서의 단축키가 굉장히 유사하다. 메쉬 오브젝트에서는 Ctrl+Tab이 점가중치 그리기(Weight paint) 모드, Tab이 편집(Edit) 모드다. 뼈대(Armature) 오브젝트에서는 Ctrl+Tab이 자세(Pose) 모드, Tab은 똑같이 편집(Edit) 모드다. 또 한 가지, 메쉬 오브젝트의 점가중치 그리기 모드(Weight paint mode)에서 건드리고 싶은 부분의 뼈를 Ctrl+클릭하면, 그 뼈 이름과 똑같은 점그룹(Vertex group)으로 바로 넘어갈 수 있다. 뼈 선택하고 점가중치 그리기, 뼈 선택하고 점가중치 그리기의 연속이다. 굳이 Properties 편집기(editor)에서 점그룹 이름 찾아다니면서 고생할 필요가 없다. 단, 뼈대(Armature) 오브젝트가 미리 자세(Pose) 모드로 준비되어 있어야 한다.
스키닝을 시작할 때 모형 오브젝트(Object)를 뼈대(Armature)에 종속시켜야(Parent, Ctrl+P) 하는데 메뉴에서 Armature deform의 하위 옵션 중 하나를 선택하면 된다. 그러면 오브젝트에 뼈 이름들이랑 똑같은 점그룹(Vertex group)들이 생성되고, Armature라는 수정자(Modifier)도 생성된다.[29] 그렇게 하면 한 점그룹(Vertex group)에 속하는 피부상의 점(Vertex)들은 같은 이름의 뼈를 따라다닌다.
여기서 각각의 점그룹에 점가중치(Vertex weight)를 그려주는 것이 예술적 감각이 들어가는 부분이다.[30] 이 때 T패널의 브러쉬 설정에서 Auto normalize 옵션을 켜 주는 것이 좋다. 이걸 끄고 그리다 보면, 특정한 점이 A라는 점그룹에서 0.5, B라는 점그룹에서 0.9, C라는 점그룹에서 0.7의 점가중치(Vertex weight)를 가지는 것이 가능하다. 즉, 점가중치의 합산이 1이 되지 않는 점들이 생겨난다. 이 예시에서는 총합인 2.1을 100%로 삼겠지만, 특정 점이 속한 점그룹(Vertex group)들에서의 점가중치 합은 1이 되도록 정리하는 것이 좋다. 물론 관절같은 곳이 아닌 이상 대부분의 점은 하나의 점그룹(Vertex group)에만 100% 속하게 된다. 또한 점가중치 브러쉬(Vertex weight brush) 옵션에는 X Mirror라는 것이 있는데, 이건 안 쓰더라도 마지막 단계에서 Mirror 수정자(Modifier)로 모형의 좌우를 왼뼈 오른뼈까지 구분해서 대칭시킬 수 있으니까 쓸지 말지는 자기 마음이다.
다만 뼈대(Armature)를 잘 세운다면 일일이 점가중치(Vertex Weight)를 그려줄 필요가 없다. 뼈가 제대로 된 위치에 적절히 박혀 있다면 Parent with Automatic Weights라는 명령으로 한번에 오브젝트에 뼈대를 심을 수 있기 때문이다. 다만 몇 가지 버그와 성능상의 한계로 인한 Parent with Automataic Weights를 사용할 때의 주의사항들이 있다.
- 뼈대와 캐릭터 오브젝트를 공간 원점(World Origin)에 두고 명령을 실행시켜야 한다. 버그 때문이다. 공간 원점(World Origin)에서 몇 미터만 떨어진 상태에서 시도하면 점가중치(Vertex Weight) 분배의 정확도가 매우 떨어지는 버그다. 하나의 점이 여러 개의 뼈에 달라붙는 현상이 발생한다.
- 또한 만약 캐릭터 오브젝트의 폴리곤이 아주 빽빽(Dense)하면 Bone Heat Weighting: failed to find solution for one or more bones이라는 오류와 함께 빈 점가중치(Vertex Weights)들만 생기고 실패한다. 대체로 폴리곤 하나가 1mm 이하로 작거나, 특정 모서리가 지나치게 짧은 작고 길쭉한 모양일 때에 이 오류가 발생한다. 만약 캐릭터의 디테일을 살리고 싶다면, 기반 메쉬(Base Mesh)는 1cm 이상의 큼직한 폴리곤으로 만들고 Multi-Resolution 기능으로 세세한 디테일을 추가해 주는 것이 현명하다.
- 캐릭터 오브젝트의 폴리곤 덩어리들(Islands)이 겹겹이 둘러싸고 있을 때도 Bone Heat Weighting: failed to find solution for one or more bones이라는 오류가 발생한다. 이 경우는 보통 캐릭터에다 캐릭터가 입은 옷까지 하나의 오브젝트로 통합되어 있을 때에 발생하는 경우가 많은데, 뼈가 피부를 붙잡을지 옷을 붙잡을지 혼동스럽기 때문에 생기는 오류다. 옷은 별도의 오브젝트로 분리해서 Data Transfer 수정자(Modifier)를 이용하는 것이 현명하다. 그러면 캐릭터 피부의 점가중치가 그대로 옷으로 전달된다. 즉, 뼈를 따라다니게 할 수 있다. 다른 방법으로는 옷을 별도의 오브젝트로 분리해서 천 시뮬레이션(Cloth Simulation)을 적용하는 방식도 있다.
블렌더에는 기본으로 Rigify라는 애드온이 포함되어 있다. 제대로 뼈대 작업을 할 때에는 거의 무조건 쓰는 애드온이다. Metarig라는 특수한 뼈대를 세우고 나서 뼈대 생성(Generate Rig) 명령을 내리면, 자세를 잡을 때에 편리한 위젯까지 포함된 완전체 뼈대가 자동으로 생성된다.
9. 애니메이팅(Animating)
각종 입체 모형이 시간에 따라 움직이도록 생명력을 불어넣는 작업이다. 타임라인이 주 무대이고 키프레임과 그래프가 주 재료이다. 블렌더 자체가 애니메이션 스튜디오에서 개발되기 시작했었고, 개발자들도 애니메이션 기능들을 특히 신경써서 개발하고 있다.블렌더 오브젝트의 속성값들에는 키프레임을 적용할 수 있다. 움직임을 세부적으로 조절하는 작업은 Graph 편집기(Editor)나 Dope Sheet 편집기가 담당한다. 당연히 보간법(Interpolation)도 다양하게 선택할 수 있다.
쿼터니온[31] 회전값도 지원된다. 애니메이터의 적 Gimbal Lock[32]을 해소할 수 있다. 그 외에도 쿼터니온과 유사한 Axis Angle을 지원한다.
버전 2.80부터는 색연필 오브젝트(Grease pencil object)를 이용해서 2D 애니메이션도 그릴 수 있다. 드디어 3D 그래픽과 2D 캐릭터가 함께 움직일 수 있게 된 것이다. 선 두께, 색상, 레이어부터 투명지(Onion skinning) 기능까지 실제 애니메이션 제작에 필요한 도구가 모두 들어가 있다.
Auto-Keyframe 기능을 켜 놓으면 오브젝트를 움직이거나 속성 값을 변경하는 대로 현재 프레임에 자동으로 키프레임으로 저장해 준다. 참고로 기본값으로 사용할 보간(Interpolation)법[33]은 블렌더 설정(Preferences)의 Animation 탭에서 지정할 수 있다.
10. 물리 시뮬레이션(Physics)
블렌더에서 말하는 물리(Physics) 시뮬레이션이란 실제 물리적/공학적 해석 시뮬레이션을 의미하는게 아니라 그래픽으로 물리효과를 보여주는것을 의미한다. 속도, 중력, 바람으로 인한 현실의 각종 충돌, 흐름, 펄럭임을 시각적으로 시뮬레이션할 수 있다.
블렌더에서의 각 오브젝트는 여러 가지 역할 중 한 가지를 맡을 수 있다.
- 강체(Rigid body)
- 연체(Soft body)
- 천(Cloth)
- 유체(Fluid)
강체는 말 그대로 나무, 철 등의 딱딱한 물체에 쓰이고, 밀도와 질량을 지정해 줄 수 있다. 연체는 쿠션, 공, 풍선 등의 부드러운 물체에 쓰이고, 탄성이나 내부 기압 값을 지정해 줄 수 있다. 천은 옷이나 깃발같은 곳에 쓰이고, 당연히 바람에 민감하며 뻣뻣한 정도를 지정해 줄 수 있다. 유체는 꿀, 물 등의 액체나 수증기, 연기, 불줄기, 폭발 등의 기체를 만드는 데에 쓰인다.[34]
강체 옵션은 성능상 매우 가벼워서 수백, 수천 개의 물체를 한꺼번에 움직일 수도 있다.
공간 속에 힘(Force field)을 추가할 수도 있다. 힘도 하나의 오브젝트인데, 공간 속 어디에 배치할지도 자유다. 전기력, 자기력, 중력, 핵력, 난기류, 바람, 탄성력 등 다양한 종류의 힘이 있는데, 원하는 힘을 적재적소에 배치하면 정말 신기한 물리운동을 재현할 수 있다.
미터나 킬로그램 등 표준 단위계를 사용하게 할 수도 있고, 인치나 파운드 등 다른 단위계를 사용하게 할 수도 있다.
참고로 입자 시스템도 오브젝트와 똑같이 힘으로부터 영향을 받는다.
오브젝트는 자기만의 입자 시스템(Particle system)을 가질 수 있다. 입자 시스템은 Emitter와 Hair 2가지로 나누어진다.
Emitter라는 입자시스템을 사용하면 오브젝트 표면에서 입자가 방사된다. 초기 속도, 수명, 힘(Force)[35] 등 물리법칙을 따르게 할 수 있다. 초기 속도를 0으로 지정해 놓으면 표면 위에 가만히 분포하게 할 수 있다. 입자 모양은 경로 / 특정 오브젝트 / 특정 컬렉션 속 오브젝트들 등 원하는 대로 보이게 할 수 있다.
Hair라는 입자시스템으로 오브젝트 표면에 털이나 머리카락을 만들어 놓으면 빗기(Comb) 도구로 빗어줄 수도 있다. 묶은 머리카락, 꼬은 머리카락 등 구현할 수 있는 모양이 다양하다. 오브젝트가 움직이거나 충돌하면 털이나 머리카락도 따라서 흔들리는 물리법칙을 적용할 수 있다. 도구 자체가 매우 가벼워서 이 과정에서 랙 걱정은 하지 않아도 된다.
11. 합성하기(Compositing)
완성된 렌더 이미지를 세부적으로 조정하는 후처리(Post-processing) 작업이다. 블렌더에서는 렌더가 끝이 아니다. 렌더된 이미지를 포토샵으로 가져가지 않아도 렌더 결과를 이리저리 합성하고 변형할 수 있다.그뿐만이 아니다. 블렌더에는 시야 레이어(View layer)라는 기능이 있는데, 이 기능을 쓰면 포토샵의 레이어처럼 여러 층의 이미지로 나누어져서 렌더 결과물이 나온다. 예를 들어, 책상 위의 그릇에 담긴 사과가 있는 장면에서, 각각의 오브젝트를 다른 시야 레이어 안에 집어놓고 렌더링하면 책상 따로, 그릇 따로, 사과 따로 레이어를 가진 채로 결과물이 나온다. 그래서 렌더 결과물에서 사과를 녹색으로 바꾸거나, 그릇에만 섬광(Glare) 후처리를 하거나 할 수도 있다. 레이어별로 노이즈 제거(Denoise) 기능이나 선(Freestyle) 기능을 켜고 끌 수도 있다. PSD 파일과 유사한 EXR이라는 레이어가 구분된 이미지 파일로 저장할 수도 있다.
영상 합성에 필요한 강력한 카메라 추적(Camera tracking) 기능도 있다.
[1] 당장 가장 기본적인 오브젝트 이동을 할 때 g + x/y/z를 해야 한다는 것을 마야 또는 맥스 유저오토데스크의 노예는 부담스럽고 어색해 한다.[2] 3ds Max나 마야의 FFD 수정자(Modifier)에 해당하는 "Lattice" 수정자의 기능이 취약하다. 3ds Max에서 오브젝트에 FFD를 적용하려면 수정자 스택(Modifier stack)에서 FFD를 추가하기만 하면 되지만 블렌더에서는 Lattice 오브젝트를 생성하고, 편집을 원하는 오브젝트에 정렬시킨 후, 해당 오브젝트의 수정자 스택(Modifier stack)에서 Lattice를 추가하고, 옵션패널에서 Lattice 오브젝트를 선택한 뒤, 수정 모드(Edit mode)를 빠져나가 다시 Lattice 오브젝트를 선택하여 수정해야 한다. 해외 3D 그래픽 커뮤니티에서도 이에 대한 비토가 줄을 이을 정도이다. 물론 이 기능을 편하게 하는 '애드온'(Add-on)도 있다.[3] 3ds Max의 "Edit poly" 수정자에 해당하는 기능이 존재하지 않는다. 따라서 Curve를 만든 뒤 메시(폴리곤)로 전환하여 편집하려면 영구적인 변환만 가능하다. Curve의 편집기능에 추출(Extrude)기능은 있으나 Segment 분할이 불가능하고 Cap 기능이 없어서 호스를 만든 뒤 구멍을 닫으려면 구멍 오브젝트를 추가로 제작해야 하는 이상하고도 불편한 상황을 맞닥뜨리게 된다. 결과적으로 Curve와 Mesh 사이를 오가면서 작업하는게 어럽다.[4] 2019년부터 Pablo Dobarro가 블렌더 재단에 영입된 이후 스컬프팅 영역 개발을 도맡으면서 3D 커서나 IK(Inverse Kinematics) 브러쉬, 천(Cloth) 브러쉬 등 강력한 기능들이 도입되기 시작했다.[5] 곡선(Cuve) 오브젝트를 이용한 머리카락, 불리언(Boolean)을 이용한 형태 수정 등[6] View plane, Area plane, Tiled, 3D, Random, Stencil 방식이 있다.[7] 최소 폴리곤 크기를 지정하는 데에는 두 가지 방식이 있다. 하나는 상대적 크기(Relative)로, 화면 상에서 몇 픽셀 크기까지 분할할지 정할 수 있다. 다른 하나는 절대적 크기(Constant)로, 공간 상에서 몇 밀리미터, 몇 센티미터, 아니면 몇 미터 크기까지 분할할지 정할 수 있다.[8] 작업 후반부가 되면 브러시 질 한 번할 때, 눈에 띄게 실제 스컬팅이 늦게 이루어진다.[9] retopoflow 애드온으로 어느 정도 완화는 할 수 있으나, 86$로 비싼 편에 속한다.[10] 블렌더 프로젝트의 리토폴로지 관련 일감 : https://developer.blender.org/T67997[11] OpenVDB 코드를 사용한다.[12] 마인크래프트같은 복셀 큐브는 아니고, 버텍스 좌표가 복셀처럼 배열되는 형식이다.[13] 옵션 설정으로 알어서 매꿔줄 수도 있다[14] Quadriflow사용 시 가이드 라인을 지정해 줄 수 있는 기능 개선이 예정은 되어 있다. https://developer.blender.org/D6158[15] 상당히 드물지만 직사각형 형태의 텍스처를 사용할 수도 있다. 디지털 익스트림즈가 개발 및 유통하는 온라인 게임인 Warframe이 대표적인 업계 사례로, 텍스처 이미지의 가로세로 비율이 2:1이다.[16] 블렌더에서는 한 오브젝트에 여러 개의 UV를 만들어 놓을 수도 있지만, 그렇게 해야 하는 경우는 거의 없다.[17] 패킹에 문제가 있어 구멍이 있을 경우 거기에 자동으로 면을 채워 넣어주지 않는다. 이는 타 툴과는 달리 어느정도 일일이 수정해줘야 하는 불편함이 따른다.[18] Shader라고 하기도 함[19] UV맵이 만들어진 오브젝트여야 한다.[20] 포토샵에 있는 모든 혼합 모드가 있다.[21] 이 작업은 리깅(Rigging)와는 별도로 스키닝(Skinning)라고 표현하기도 한다.[22] 업계에서 Pose-space deformation이라고 부르는 작업.[23] 오브젝트의 움직임 및 속성을 조건부로 통제하는 기능.[24] 손가락 끝을 움직이기 위해서 윗팔, 아랫팔, 손등, 첫번째 손가락뼈, 두번째 손가락뼈, 세번째 손가락뼈 순서대로 돌려가면서 수고할 필요가 없도록, 마지막 세번째 손가락뼈만 표적(Target) 오브젝트에 묶어놓으면 그 오브젝트를 당겼을 때 모든 뼈가 알아서 따라오는, 자세잡기에 꼭 필요한 핵심 제약이다. 방향표적(Pole target) 옵션에서는 영향받는 부위에서 팔꿈치같은 관절이 어느 오브젝트를 바라볼지 지정할 수 있다. 이 Pole target 옵션에서는 대상 오브젝트를 고르고 나서, 일직선으로 바라보도록 적당한 각도 값을 직접 돌려가며 넣어야 한다.[25] 뼈가 카메라 등 특정 오브젝트를 바라보도록 저절로 돌아가게 만들어 준다.[26] 블렌더는 사람이나 동물 등을 만들기 편하도록 위해서 모든 스컬프팅(Sculpting), 리깅(Rigging), 스키닝(Skinning) 관련 도구들이 X축 대칭을 지원한다.[27] 점그룹은 자기 이름과 똑같은 이름을 가진 뼈를 따라간다.[28] 사실 여러 개여도 된다. 옷이나 안경 등 다른 것을 걸치고 있는 경우에 그렇게 하기도 한다.[29] 이 수정자는 모형을 뼈대의 자세대로 변형시켜준다. 하지만 한번 만들어지면 건드릴 일은 없다.[30] 각각의 뼈에 피부의 어디를 얼마나 세게 붙일지 그려내는 일이다.[31] 수학적으로는 사원수라는 의미로, 애니메이션 용어로는 회전값이 제대로 먹히지 않는 걸(짐벌 락) 방지하기 위해 제 4축을 사용하는 방식을 뜻한다.[32] 오일러(Euler)회전 방식에서 회전축이 다른 회전축과 겹쳐서 원하는 회전 애니메이션이 나오지 않는 현상. 맥스에서는 캐릭터 스튜디오(Biped)를 쓰기에 문제없으나 마야에서는 여전히 중요한 문제다. 마야에서도 쿼터니온은 지원하는데 축을 따로 조절하고 싶을 때 불편하다던지 커브 그래프가 안 나온다던지 하는 문제가 있기 때문에 호불호가 갈린다. 블렌더에서도 오일러 방식은 각도 재듯이 수치를 입력하면 되지만 쿼터니온은 한쪽 축으로 회전해도 2개 이상의 축 값이 변하기 때문에 손으로 각도를 입력하는 게 상당히 힘들다. 오일러와 쿼터니온은 서로 장단점이 있는 셈.[33] 선형(Linear), 상수형(Constant), 베지어곡선형(Bezior) 등[34] 블렌더에서는 고체 물리연산을 위해 Bullet이라는 오픈소스 엔진을 사용한다. 그리고 블렌더 2.82부터는 유체 물리연산에서 기존의 Elbeem 코드를 버리고 MantaFlow라는 새로운 오픈소스 코드를 활용한다.[35] 흔히 아는 브라운 운동같은 현실성 높은 움직임도 준비되어 있다.