Metadata-Version: 2.4
Name: hakowan
Version: 0.5.2
Summary: Hakowan: A 3D data visualization grammar
Author-email: Qingnan Zhou <qnzhou@gmail.com>, Zhicheng Liu <leozcliu@umd.edu>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: License :: OSI Approved :: Apache Software License
License-File: LICENSE
Requires-Dist: adobe-lagrange>=6.44
Requires-Dist: numpy>=2.0
Requires-Dist: Pillow>=11.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: tqdm>=4.66
Requires-Dist: colorcet>=3.2.1,<4
Requires-Dist: pygltflib>=1.16.5,<2
Requires-Dist: bpy>=5.1,<6 ; extra == "blender" and ( python_version == '3.13')
Requires-Dist: mkdocs>=1.5 ; extra == "docs"
Requires-Dist: mkdocs-material>=9.0 ; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.24 ; extra == "docs"
Requires-Dist: mitsuba~=3.8 ; extra == "mitsuba"
Provides-Extra: blender
Provides-Extra: docs
Provides-Extra: mitsuba

# Hakowan

![Hakowan teaser](docs/images/teaser.webp)

Hakowan is a 3D data visualization grammar. It is inspired by the grammar of graphics, and it is
designed for easily creating beautiful 3D visualizations.

## Install

Hakowan relies on [Lagrange](https://opensource.adobe.com/lagrange-docs/) for geometry processing
and supports three rendering backends:

| Backend | Description | Extra |
|---------|-------------|-------|
| **WebGL** (default) | Interactive browser viewer — ships with base install | *(none)* |
| **Mitsuba** | Photorealistic offline renderer | `hakowan[mitsuba]` |
| **Blender** | Cycles/EEVEE renderer (requires Python 3.13) | `hakowan[blender]` |

```sh
# WebGL only (default)
pip install hakowan

# Mitsuba backend
pip install hakowan[mitsuba]

# Blender backend (Python 3.13 required)
pip install hakowan[blender]

# All backends
pip install hakowan[mitsuba,blender]
```

Note that Hakowan requires Python 3.11 and above (Python 3.13 for the Blender backend).

To check which backends are available in your environment:

```py
import hakowan as hkw
print(hkw.list_backends())
```

## Quick start

The following example renders an interactive HTML viewer using the WebGL backend:

```py
import hakowan as hkw

layer = (
    hkw.layer("mesh.obj")
    .mark(hkw.mark.Surface)
    .channel(material=hkw.material.Diffuse(reflectance="orange"))
)

result = hkw.render(layer, filename="viewer.html", backend="webgl")
# Open viewer.html in any modern browser
```

## Documentation

[HTML](https://hakowan.github.io/hakowan/)

```bibtex
@software{hakowan,
    title = {Hakowan: A 3D Data Visualization Grammar},
    version = {0.5.2},
    year = 2026,
}
```

