본문 바로가기
개발/Python

OBJ파일 스케일 일괄 조정

by 비트-바이트 2024. 5. 9.
반응형
import os

# 스케일 조정 비율 (원래 크기의 0.001배)
scale_factor = 0.1

# OBJ 파일이 있는 최상위 디렉토리 경로
directory_path = 'F:\\에셋데이터'

# 수정된 파일들의 리스트
modified_files = []

# 디렉토리 및 하위 디렉토리 내 모든 OBJ 파일 처리
for root, dirs, files in os.walk(directory_path):
    for filename in files:
        if filename.endswith(".obj"):
            new_lines = []
            path = os.path.join(root, filename)
            
            with open(path, 'r') as file:
                lines = file.readlines()
                for line in lines:
                    if line.startswith('v '):  # vertex 데이터만 찾기
                        parts = line.split()
                        x = float(parts[1]) * scale_factor
                        y = float(parts[2]) * scale_factor
                        z = float(parts[3]) * scale_factor
                        new_line = f"v {x} {y} {z}\n"
                        new_lines.append(new_line)
                    else:
                        new_lines.append(line)

            # 변경된 데이터로 파일 다시 쓰기
            with open(path, 'w') as file:
                file.writelines(new_lines)
            
            # 수정된 파일 리스트에 추가
            modified_files.append(path)

# 수정된 파일 리스트 출력
print("모든 OBJ 파일의 스케일이 조정됨. 수정된 파일 목록:")
for file in modified_files:
    print(file)

 

3D 데이터 애셋 200여개를 패키징 하던도중 여러문제점을 발견하였다.

 

스케일 문제... 편집한 3D툴마다 스케일이 10배~100배의 차이가 나는 문제가 있었다.

 

모든 파일을 열어 스케일을 맞추기 어려워. 한번에 변경하는 코드로 해결하였다.

 

 

 

 

반응형