이 튜토리얼에서는 Blender에서 UV export layout Python 함수를 사용하여 씬에 존재하는 모든 MESH 오브젝트의 UV 맵, 즉 레이아웃을 이미지로 내보내는 방법을 살펴보겠습니다.


이 튜토리얼의 동영상 버전은 현재 이 언어로 제공되지 않습니다. 영어 동영상은 다음 링크에서 확인할 수 있습니다:


영상 자막 텍스트

안녕하세요! 이 튜토리얼에서는 Blender에서 UV export layout Python 함수를 사용하여 씬에 존재하는 모든 MESH 오브젝트의 UV 맵, 즉 레이아웃을 이미지로 내보내는 방법을 살펴보겠습니다.

이 스크립트는 3D 스톡 웹사이트에 3D 씬을 게시할 때처럼 UV 맵을 이미지로 제공해야 하는 경우에 유용할 수 있습니다.

이 튜토리얼은 Blender 3.3을 사용하여 제작되었습니다. Blender 개발자들은 때때로 Blender Python API, 줄여서 BPY에 변경을 가하지만, 이 스크립트는 버전 3 이상에서 동작해야 합니다.

우리가 사용할 bpy.ops 함수는 매우 간단합니다. 생성할 이미지의 filepath와 UV 크기를 픽셀 단위로 지정하는 두 가지 파라미터만 필요합니다. 하지만 씬에 있는 모든 MESH 오브젝트에 대해 이를 사용해야 하므로, MESH 오브젝트에 대해 for 문을 사용할 것입니다.
추가로, 파일 확장자를 지정할 것인데 기본값은 PNG입니다. 실제로는 레이아웃을 PNG로 내보내겠지만, SVG나 EPS 파일로도 UV 레이아웃을 내보낼 수 있기 때문에 그 방법도 보여드리겠습니다.
자, 시작해 보겠습니다.

BLEND 파일을 여세요.
완전히 새로운 파일로 시작해도 되지만, 프로젝트와 동일한 폴더에 PNG 파일을 저장할 것이므로 반드시 어딘가에 저장해야 합니다.

기본적인 import부터 해봅시다:

import bpy

from bpy import *

앞서 말했듯이 export_layout 함수는 두 개의 파라미터를 필요로 하므로, 두 개의 변수를 정의해 보겠습니다. 함수 안에 직접 값을 써도 되지만, 가독성을 위해 여기에서 정의하겠습니다:

UVpath = bpy.path.abspath("//") + "UV-LAYOUT---"

UVsize = (2048, 2048)

보시는 것처럼, bpy.path.abspath는 BLEND 파일의 디스크 상 절대 경로를 반환합니다. 모든 PNG 파일 이름 앞에 "UV-LAYOUT---"라는 접두사를 추가할 예정인데, 이는 자유롭게 변경하거나 제거할 수 있습니다.

UVsize 파라미터는 두 개의 숫자 값을 가진 튜플이며, 생성될 이미지의 픽셀 단위 크기를 의미합니다.
여기서는 2048을 사용하여 2K 이미지를 생성하고 있습니다.

씬에 존재하는 모든 MESH 오브젝트에 대해 함수를 실행하려면 for 문을 만들어야 합니다. 다음과 같이 작성할 수 있습니다:

for o in bpy.data.objects:

그 다음, for 문 블록 안에서, 즉 들여쓰기를 한 상태에서 오브젝트 타입에 대한 “필터”를 추가합니다:

if(o.type=="MESH"):

조건은 명확합니다. 현재 bpy.data.object의 타입이 MESH여야 합니다.

이후의 구문들은 모두 if 문 안에 들어가야 하므로, 다시 한 번 들여쓰기를 잊지 마세요:

bpy.ops.objects.select_all(action='DESELECT');

이 작업은 매번 모든 다른 오브젝트의 선택을 해제하기 위해 필요합니다. 그렇지 않으면 두 개 이상의 UV 맵이 겹쳐진 이미지가 생성될 수 있습니다.

bpy.context.view_layer.objects.active = o

이 할당은 씬의 활성 오브젝트를 설정하며, 현재 메시를 context.view_layer.objects.active에 지정합니다.
이 작업이 필요한 이유는, 다음에 실행할 OPS, 즉 Blender Python 연산이 오직 하나의 활성 오브젝트에 대해서만 수행되기 때문입니다. 여러 오브젝트를 선택할 수는 있지만, 활성 오브젝트는 항상 하나뿐이라는 점을 기억하세요.

bpy.ops.uv.export_layout(filepath = UVpath + o.name, size = UVsize, mode='PNG')

이 ops 구문은 활성 오브젝트의 UV 레이아웃을 지정된 filepath로, 그리고 지정된 픽셀 크기로 내보냅니다. filepath는 UVpath 변수에 "UV-LAYOUT---" 접두사와 활성 오브젝트의 이름을 더해 만들어집니다.

앞서 말했듯이, UV 레이아웃은 PNG, EPS, SVG 형식으로 내보낼 수 있습니다. 방금 보여드린 것처럼 mode 파라미터를 사용해 출력 형식을 지정할 수 있습니다.
출력 폴더를 살펴보면, 씬에 있는 메시의 수만큼 이미지가 생성된 것을 확인할 수 있습니다.

제 “Desk set 3” 3D 모델의 메시들은 서로 겹치지 않는 UV 아일랜드를 가진 동일한 레이아웃을 공유하고 있기 때문에, 모든 오브젝트를 하나로 합친 다음 스크립트를 다시 실행하면, 에셋에 대한 하나의 겹치지 않는 UV 레이아웃 맵만 얻을 수 있습니다.

튜토리얼을 마치기 전에 과제를 하나 드리겠습니다. 이 스크립트를 수정하여, 씬에 있는 메시들의 2K와 4K UV 레이아웃을 모두 내보내 보세요. 예를 들어 "UV-2K---""UV-4K---" 같은 두 가지 서로 다른 접두사를 사용해 이미지를 제공하면 됩니다.

이 튜토리얼은 여기까지입니다!
곧 다시 만나요!

🇺🇸 Sitemap - 🇮🇹 Sitemap - 🇪🇸 Mapa del sitio - 🇧🇷 Mapa do site - 🇫🇷 Plan du site - 🇩🇪 Sitemap - 🇷🇺 Карта сайта - 🇨🇳 网站地图 - 🇯🇵 サイトマップ - 🇰🇷 사이트맵


이 사이트는 제 작업 일부를 소개하기 위한 목적만을 가지고 있으며, 어떠한 홍보 목적도 포함하지 않습니다. 현재 맞춤 작업, 컨설팅 또는 기타 어떤 형태의 업무 협업에 대한 요청도 받고 있지 않으며, 이에 대해 응답하지 않으니 양해 부탁드립니다.


확장된 개인정보 및 쿠키 사용 정책