Metadata-Version: 2.4
Name: yumo2
Version: 0.0.3
Summary: Voxel to surface scalar field visualization.
Author: Chaofan Luo
Project-URL: Homepage, https://luocfprime.github.io/yumo2/
Project-URL: Repository, https://github.com/luocfprime/yumo2
Project-URL: Documentation, https://luocfprime.github.io/yumo2/
Keywords: python
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <4.0,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib>=3.10.8
Requires-Dist: numpy>=2.2.6
Requires-Dist: opencv-python>=4.13.0.90
Requires-Dist: polyscope>=2.6.1
Requires-Dist: PyOpenGL>=3.1.9
Requires-Dist: pydantic>=2.12.5
Requires-Dist: structlog>=25.4.0
Requires-Dist: tqdm>=4.67.2
Requires-Dist: trimesh[easy]>=4.11.1
Requires-Dist: typer>=0.21.1
Requires-Dist: xatlas>=0.0.11
Provides-Extra: dev
Requires-Dist: pytest>=7.2.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pre-commit>=2.20.0; extra == "dev"
Requires-Dist: tox-uv>=1.11.3; extra == "dev"
Requires-Dist: mypy>=0.991; extra == "dev"
Requires-Dist: ruff>=0.9.2; extra == "dev"
Requires-Dist: mkdocs>=1.4.2; extra == "dev"
Requires-Dist: mkdocs-material>=8.5.10; extra == "dev"
Requires-Dist: mkdocstrings[python]>=0.26.1; extra == "dev"
Requires-Dist: mkdocs-static-i18n[material]>=1.3.0; extra == "dev"
Requires-Dist: mkdocs-macros-plugin>=1.3.9; extra == "dev"
Requires-Dist: tomlkit>=0.13.3; extra == "dev"
Dynamic: license-file

# yumo2

Interactive 3D visualization tool for mapping scalar fields onto mesh surfaces.

- **Repository**: <https://github.com/luocfprime/yumo2/>
- **Documentation**: <https://luocfprime.github.io/yumo2/>

## What it does

yumo2 loads a volumetric scalar field (Tecplot `.plt`) and a 3D mesh (`.stl`, `.obj`, etc.), UV-unwraps the mesh, bakes the scalar field onto it via trilinear interpolation, and renders the result interactively with [Polyscope](https://polyscope.run/).

Features:
- Colormap selection with adjustable color range
- Log/linear transformation of scalar values
- Gaussian denoising of the baked texture
- Interactive scope tool (find min/max value within a radius)
- Snapshot export with embedded colorbar

## Installation

```bash
uv tools install yumo2
```

Requires [uv](https://docs.astral.sh/uv/).

## Usage

```bash
yumo2 gui --data path/to/field.plt --mesh path/to/mesh.stl
```

## Development

```bash
make test      # run tests
make format    # ruff format + lint
make check     # pre-commit hooks + mypy
```

Run a single test:

```bash
uv run pytest tests/test_app.py::test_name -x
```
