Seamlessly erase seams from your favorite 3D models.
Project description
Seam Erasure
Seamlessly erase seams from your favorite 3D models.
Erases texture seams to prevent visible seams or tearing in various texture maps (color, normal, displacement, ambient occlusion, etc.).
Overview
Textures seams often produce errors when bi-linearly interpolated. This results in a visible seam line or other undesired artifacts. The goal of this project is to devise a numerical solution to this problem by minimizing the energy/error between interpolated values of edge pairs.
Dependencies
Install all required dependencies using: pip install -r requirements.txt
Dependencies include:
numpy
: linear algebrascipy
: sparse matrix operationsrecordclass
: simple data objectspillow
: saving/loading texture image files
Usage
Command-Line
To use the seam eraser tool, first install the required packages, then enter the following into a command-line:
python main.py path/to/input_model path/to/input_texture [-h] [-o path/to/output_texture] [-g] [--sv {none,texture,lerp}] [-d]
Positional arguments:
path/to/input_model
: Path to input mesh file.path/to/input_texture
: Path to input texture image or directory to load all textures from.
Optional arguments:
-o path/to/output_texture
,--output path/to/output_texture
: Name of output texture or directory to save batch textures.-g
,--global
: Should the minimization have global effects? (default: False)- This should be used if the texture has global discontinuities. This will propagate changes from the seam inward (see the teaser image for a example of global discontinties).
--sv {none,texture,lerp}
: What method should be used to compute the seam value energy? (default:none
)none
: do not use a seam value termtexture
: use difference in original texturelerp
: use linearly interpolated values along the edge- Values are provided at the vertices in the
.obj
as additional entries after the xyz triplet (e.g.v <x> <y> <z> [<r>] [<g>] [<b>] [<a>] ...
where the additional channels are optional and must match the number of channels in the texture image).
- Values are provided at the vertices in the
-d
,--data
: Should the input texture(s) be loaded as a.data
files? (default: False)
Files
seam_erasure/
: Python package for Seam-Erasuremain.py
: Command-line interface for seam erasure.server.py
: Flask based Python code for handling web inputs.examples/
: examples 3D model and texture files for testingstatic/
: Static web page content including style sheetstemplates/
: HTML template pages
Web Browser UI
This repository also includes a Flask based server implementation that can be run locally. This provides a simple webpage interface to provide model/texture input and select options. To get this user interface run:
python server.py
This will start a server on the localhost. Navigate to the outputted address in your choice of web browser to view the interface.
Results
Diffuse Textures
Before | After |
---|---|
Normal Maps
Before | After |
---|---|
Ambient Occlusion
Before | After |
---|---|
Geometry Images
Before | After |
---|---|
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.