업데이트: 이 저장소는 더 이상 사용되지 않습니다. 단순히 텍스처 메쉬를 생성해야 하는 경우 Meshfinity 또는 공식 TripoSR 저장소를 사용하세요. 텍스처를 굽기 전에 생성된 메시 형상을 수정해야 하는 경우를 대비해 이 저장소의 콘텐츠는 온라인 상태로 유지되지만 많은 사용자에게는 이 기능이 필요하지 않습니다.
TripoSR은 2D 메쉬에서 3D 모양 및 질감 데이터를 추론하기 위한 탁월한 오픈 소스 모델입니다. 생성적 3D 그래픽을 위한 최신 기계 학습 기반 모델과 마찬가지로 TripoSR은 기존 다각형 메시와 달리 3D 데이터에 NeRF(신경 방사 필드) 체적 표현을 사용합니다. TripoSR 저장소에는 Marching Cubes 알고리즘을 사용하여 생성된 NeRF를 메시로 변환하는 코드가 포함되어 있지만 색상 데이터를 텍스처 대신 정점 색상으로 저장하여 해상도를 심각하게 제한하고 색상 데이터를 파괴하지 않고 형상의 추가 조작(예: 메시 단순화)을 방지합니다.
TripoSR Bake는 메시를 내보내는 과정을 두 부분으로 나눕니다. 01-mesh.py
에서는 Marching Cubes를 사용하여 메시의 근사치가 추출되고 .obj
(원본 TripoSR 저장소에서와 같이)에 기록되지만 TripoSR 모델 추론의 NeRF 예측이 포함된 .pkl
파일 도 저장됩니다. .obj
파일은 메쉬의 경계가 유지되는 한(즉, 메쉬를 전체적으로 크기 조정/회전/변환하지 않는 한) 수동으로 편집할 수 있습니다(예: 다듬기 또는 단순화). 메시 편집 후 02-texture.py
스크립트를 사용하여 메시에 대한 UV 아틀라스를 생성하고 NeRF 데이터를 이 UV 맵에 굽습니다. 이 방법을 사용하면 낮은 폴리 메시에도 원래 NeRF 출력의 고해상도 색상 세부 정보가 포함될 수 있습니다. 메시 정점이 메시의 원래 볼륨에서 더 멀리 변형되면 텍스처 품질이 저하된다는 점에 유의하세요. 평소와 같이 결과는 입력 이미지, 생성된 메시의 품질, 메시 텍스처링 전에 적용된 필터/편집 및 패킹된 UV 아틀라스의 효율성에 따라 달라집니다.
git clone https://github.com/iffyloop/TripoSR-Bake.git
cd TripoSR-Bake
# TripoSR requires a real virtualenv environment,
# not the built-in venv that comes with Python
pip install virtualenv
python -m virtualenv venv
# Now we install dependencies for this repo
source venv/bin/activate # venvScriptsactivate.bat on Windows
pip install torch # For CUDA support, follow the instructions at https://pytorch.org/get-started/locally/
pip install -r requirements.txt
사용 가능한 옵션에 대한 전체 설명을 보려면 python 01-mesh.py --help
및 python 02-texture.py --help
실행하세요.
# Generate Marching Cubes mesh
python 01-mesh.py --input input/chair.png --output-mesh output/chair.obj --output-scene-codes output/chair.pkl --no-remove-background --density-threshold 15.0 --marching-resolution 512 --marching-oversampling 1 --tsr-chunk-size 8192 --device cpu
# Bake texture
# Before this stage, you probably want to smooth and remesh the generated chair.obj mesh in MeshLab,
# then use that as the --input-mesh below instead of the raw Marching Cubes mesh.
# Editing the mesh is merely a suggestion, not a requirement. The original mesh can also be textured.
python 02-texture.py --input-mesh output/chair.obj --input-scene-codes output/chair.pkl --output-mesh output/chair-textured.obj --output-texture output/chair-textured.png --texture-resolution 1024 --texture-padding 2 --tsr-chunk-size 8192 --device cpu