
연구 코드명: Project J3D-BlenderAddon_MeshTexturing
핵심 기술: Python, Blender Python API (bpy), Cycles 렌더 엔진
해결 과제: 3D 스캐너로 취득한 메쉬 데이터를 파트별로 분리, 머티리얼 적용 후 텍스쳐가 통합된 OBJ 파일로 생성 과정이 분산 된 메뉴기능으로 이루어져 과다한 시간 소모 및 휴먼 에러 빈번히 발생.
Blender 애드온으로 메뉴를 구조화하고 단순화하여 초보자도 쉽게 메쉬에 컬러 텍스쳐링을 할수 있도록 함.
핵심 방향 : Blender 사이드바(View3D ▶ Sidebar ▶ J3D)에서 ① Import → ② Separate → ③ Material → ④ Preset → ⑤ Texture & Mapping → ⑥ Merge → ⑦ Export 까지 7단계를 순서대로 실행하는 단일 UI 패널로 구현.
기술 스택 : Python 3.x · Blender 4.5+ Python API (bpy) · Cycles 렌더 엔진 · PBR Principled BSDF · Equal-Area UV Grid 알고리즘

Issue: 여러 머티리얼 슬롯을 하나의 텍스쳐 이미지로 베이크할 때, Blender 기본 방식으로는 각 파트가 UV 공간에서 차지하는 면적이 불균등하게 배치됨. 작은 파트는 수 픽셀만 할당되어 외부 3D 뷰어에서 색상이 뭉개지거나 소실되는 현상 발생.
Approach: 머티리얼 슬롯 수에 따라 균등 격자(cols×rows)를 계산. 편집 모드에서 슬롯별 Smart UV Project로 0-1 공간 배치 후, 오브젝트 모드에서 uv_layer.data[li].uv 직접 대입 방식으로 각 슬롯을 격자 셀에 재배치. 모든 파트가 동일한 픽셀 영역을 점유하도록 보장.
Issue: PBR Metallic 값이 1.0인 금속 재질은 Cycles DIFFUSE 베이크 시 검정으로 출력됨. 금속 파트의 색상 정보가 텍스쳐에 기록되지 않아 최종 생성 파일의 재질 표현이 불가능한 치명적 문제
Approach: 베이크 직전에 각 머티리얼의 Base Color 소켓을 Emission 노드로 라우팅한 뒤 EMIT 타입으로 베이크(Emit Trick). 베이크 완료 즉시 Emission 노드를 제거하고 원본 Surface 연결을 복원. 머티리얼 그래프가 완전히 원상태로 복구되므로 부작용 없음.
Issue: Blender 4.x 시리즈에서 임포터(wm.obj_import ↔ import_scene.obj) 스마트파라미터 구조, Principled BSDF 입력 이름(Transmission → Transmission Weight, Specular → Specular IOR Level)이 버전별로 변경. 단일 버전만 지원 시 다른 버전 사용자는 애드온이 즉시 오류로 종료
Approach: 헬퍼 함수에 try/except 폴백 체계를 내장. 신규 API를 먼저 시도하고 TypeError/AttributeError 발생 시 구버전 API로 자동 전환. 코드 중복 없이 단일 파일로 Blender 4.x 전 버전 대응
파트별 PBR 머티리얼이 적용된 스캔 메쉬를 단일 OBJ+MTL+JPG 파일 세트로 원클릭 내보내기 시연



❌ Before (기존 방식)
메쉬 분리, UV 언랩, 베이크, 내보내기를 별도 도구와 다수 수작업 단계를 수행해야 하는데 분산 되어 있음
초보자는 블랜더의 메뉴가 너무 많아 메쉬에 머터리얼 및 컬러 텍스쳐링을 배우는데 너무 많은 노력과 시간 필요.

✅ After (개선된 방식)
7단계 순서형 UI 패널로 Import부터 Export까지 단일 패널에서 완결
Equal-Area UV Grid 알고리즘으로 모든 파트가 텍스쳐에 균등 면적 보장
Emit Trick으로 금속·투명 재질 포함 전체 PBR 재질의 정확한 색상 베이크
한글 Blender 4.x 전 버전 자동 폴백으로 버전 무관 동작


J3D, 구매 고객의 만족도 상승 : 3D스캐너 구매고객에 불편을 듣고 만든 프로그램, 3D스캐너 활용성 높아짐
학습 곡선 개선: 블렌더를 몰라도 역설계 된 메쉬을 Import 후 순차적으로 버튼을 입력하면 메쉬의 컬러 텍스처링 가능
이미지 베이킹을 통한 UV Map화 된 obj 생성 : 보통 머터리얼 및 컬러텍스처링까지는 어찌 어찌했으나 하나의 map 화 된 obj를 못하였지만 이미지 베이킹 작업까지 추가하여 하나의 obj 파일로 생성

