Photo to Storybook
Turn a person’s photo into an editable storybook/anime-inspired 3D character in Blender. Runs locally, with no API key, subscription, or image upload.
This is an experimental photo-guided template generator. The photo guides colors and broad face proportions; hair, clothing, and the standing pose use adjustable presets. It does not reconstruct an exact likeness or arbitrary outfits. See limitations.
Get it
Install the Python package from PyPI, or download the Blender add-on and standalone script from GitHub Releases. The repository and release downloads are public.
Blender users — no Python setup
- Download
photo_to_storybook_blender-1.0.1.zipfrom the release. - In Blender, open Edit → Preferences → Add-ons → Install from Disk, select the ZIP, and enable Photo to Storybook 3D.
- Open the 3D viewport’s N sidebar → Storybook.
- Select a photo and save folder, adjust the presets, and click Create Storybook Character.
The generated project is created in a separate Blender process. Your current project is left open. Save your current work before opening the result.
Alternatively, download photo_to_storybook.py and run it from Blender’s Text Editor. The Blender guide explains that workflow and the controls.
Command line
Install directly from PyPI:
python -m pip install photo-to-storybook
photo-to-storybook doctor
photo-to-storybook generate --image person.jpg --output results
Or install from a clone:
gh repo clone binaydhakal/photo-to-storybook
cd photo-to-storybook
python -m pip install .
Blender must be installed separately. The launcher finds it on your PATH or in common macOS/Windows locations. If needed:
photo-to-storybook generate \
--blender "/Applications/Blender.app/Contents/MacOS/Blender" \
--image "/path/to/person.jpg" \
--output "/path/to/results" \
--hair swept --sunglasses off --head-scale 1.25
BLENDER_BIN is another way to select the executable. Use photo-to-storybook generate --help for all options.
What it creates
.blend: separate body, clothes, hair, face details and optional accessories; Eevee cel materials, outline meshes, lights, cameras, and a packed photo reference..glb: optional portable export with simpler PBR materials. It does not preserve Blender-specific cel shading.- PNG preview: optional render from the generated scene.
- Recipe JSON: reusable input settings, plus a separate diagnostic settings file.
Existing outputs receive numbered names unless --overwrite is explicitly supplied. The character uses a static standing pose, with no animation rig. Unseen surfaces and lower legs are inferred.
Customization
Presets include neutral/masculine/feminine adult body templates, swept/bob/long/bald hair, sunglasses, a short beard, and a wristwatch. Adjust head proportions, eye size, shirt lettering, and sampled colors.
photo-to-storybook generate --image person.jpg --output results \
--config examples/config.json --hair bob --sunglasses off
Colors in JSON are sRGB triples from 0–1; null samples the photograph. --face-box LEFT TOP WIDTH HEIGHT selects a face manually using normalized image coordinates with a top-left origin.
On macOS, local Apple Vision can locate a face through the system Swift toolchain. OpenCV is optional on other platforms if already available inside Blender. Otherwise, manual framing and color overrides work without either detector. Multiple-face photos use the largest detected face unless overridden.
Other commands
photo-to-storybook doctor
photo-to-storybook addon --output storybook-addon.zip
photo-to-storybook script --output storybook.py
python -m photo_to_storybook --version
The Python package contains no host-runtime dependencies. Blender supplies its own Python and NumPy. All base assets are included; nothing is downloaded during generation.
Compatibility
- Host Python 3.10+ for the optional command-line launcher.
- Blender 4.2+. The generator was tested with Blender 5.2.1 on macOS.
- Package tests cover Windows, macOS and Linux in CI; that does not imply the full Blender rendering workflow has been validated on each platform.
- Use Eevee for the native cel-shaded look.
Limitations
A clear frontal portrait works best. Profiles, children, occlusion, complex costumes and unusual poses need substantial manual modeling. Facial identity, precise expression, hair geometry, logos, clothing patterns and pose are not automatically reconstructed. Color sampling can include photo lighting and filters. The result is a starting point for further editing.
Generated outline meshes are separate; update or remove them after substantial manual reshaping. GLB has mesh hair and portable materials, while the native file retains editable curves and Blender shaders.
Development
python -m venv .venv
# Activate the environment using your platform's normal command.
python -m pip install -e ".[dev]"
python -m pytest -q
python -m build
python -m twine check "dist/*.whl" "dist/*.tar.gz"
python tools/build_release.py
The readable generator is src/photo_to_storybook/resources/engine.py.in; base data and the local face detector are adjacent resources. distribution.py assembles them into a self-contained script or Blender add-on. Host imports do not import bpy.
See contributing, release instructions, and the changelog.
Licenses
Python/Swift application code: MIT. Embedded MakeHuman base mesh, morph and rigging data: CC0 1.0. The combined distribution declares MIT AND CC0-1.0.
Asset source: MakeHuman Community. No affiliation with Studio Ghibli or Blender Foundation. No personal reference photographs or generated portraits are included in this source package.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file photo_to_storybook-1.0.1.tar.gz.
File metadata
- Download URL: photo_to_storybook-1.0.1.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f6a48ff873e5655ece8d823e3d358d26ec0d652187fc952c2240f2fccdfdd3c
|
|
| MD5 |
178e2c39cdf35408662dfe0d4724eccc
|
|
| BLAKE2b-256 |
e41737d8581158f324094cef750eb542ce0edda80e183487c556b78a5ef6793e
|
File details
Details for the file photo_to_storybook-1.0.1-py3-none-any.whl.
File metadata
- Download URL: photo_to_storybook-1.0.1-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa6793d0e89afaf9832d66d8d2b1be6c40615d4b2c6f87582c897e81dcd4a3ee
|
|
| MD5 |
a3a874ca790ba39ee341b8e035d6046b
|
|
| BLAKE2b-256 |
c9e854e0b8924f94ae5cbea8a27a7a9cb8981e8a812f2156e99daab33a1b8e7c
|