Skip to main content

MAPPE

Purpose

MAPPE (Mesh Assessment via Point Cloud and Projection Estimators) is a full-reference mesh quality assessment framework. It combines image quality features from rendered views with PointPCA3 features from sampled point clouds. This repository is the entry point for the MAPPE experiments and regression-based evaluation.

The Python distribution and import are both named mappe.

Project Role
mesh-projector-pylib Python interface for rendering views and sampling colored point clouds.
mesh-projector-rs Rust mesh processing, CPU rendering, and GPU rendering backend.
pointpca3-pylib Python interface for PointPCA3 feature extraction.
pointpca3-rs Rust PointPCA3 backend with Voxelization-based Spatial Sampling (VoSS).
pointpca2-pylib Python interface for the alternative PointPCA2-RS backend.
pointpca2-rs Rust PointPCA2 implementation, also used by PointPCA3.

Requirements

  • Python 3.11 or 3.12 and uv.
  • Git to clone the repository and network access to download Python packages.
  • Mesh datasets, including OBJ files and any associated MTL files and texture images.

The package requires Python >=3.11,<3.13; its mesh-projector dependency uses enum.StrEnum, which requires Python 3.11 or later. A GPU is optional for the default CPU mesh renderer and CPU PyTorch execution. GPU execution requires compatible hardware and drivers.

Installation

Clone MAPPE and install the default environment:

git clone https://github.com/arthurhscarvalho/mappe.git mappe
cd mappe
uv sync --python 3.12

MAPPE installs mesh-projector==1.0.0 and pointpca3==1.0.0 from PyPI. Their published wheels include the Rust extensions, so supported platforms require no Rust toolchain or sibling repository checkouts. pointpca2 is also resolved from PyPI.

For the configured AMD ROCm environment, use:

uv sync --python 3.12 --no-default-groups --extra rocm

This selects the ROCm 6.3 package index configured in pyproject.toml. Use a compatible ROCm installation and GPU. Run subsequent uv run commands with --no-default-groups --extra rocm as well, for example uv run --no-default-groups --extra rocm python scripts/main_experiment.py.

Usage

from math import pi

import mappe
import mesh_projector as mp

light_config = mp.PointLights(
    positions=[(-1.0, 1.0, 1.0), (1.0, 1.0, -1.0)],
    global_ambient=(0.6, 0.6, 0.6),
    global_diffuse=(0.6, 0.6, 0.6),
    global_specular=(0.0, 0.0, 0.0),
)
mqa_config = mappe.MQAConfig(
    search_size=361,
    render_config=mp.RenderConfig(resolution=512, ignore_opacity=True),
    iqa_projection_config=mp.ImageProjectionConfig(light_config=light_config),
    pcqa_projection_config=mp.PointCloudProjectionConfig(
        density_factor=0.3,
        light_config=light_config,
    ),
    view_angles=[
        (0.0, 0.0, 0.0),
        (0.0, pi, 0.0),
        (0.0, pi / 2, 0.0),
        (0.0, -pi / 2, 0.0),
        (pi / 2, 0.0, 0.0),
        (-pi / 2, 0.0, 0.0),
    ],
)

features = mappe.process_mqa(
    "reference.obj",
    "distorted.obj",
    mqa_config=mqa_config,
    device="cpu",
    max_workers=8,
)
print(features)

Experiments

The scripts/ directory contains dataset experiments, ablation studies, parameter searches, and regression evaluations. Dataset-specific configurations are in scripts/dataset_configs.py, and metadata CSVs are in data/. Configure dataset paths and experiment parameters before running these scripts.

Publications

  1. Arthur Henrique Silva Carvalho and Pedro Garcia Freitas. “MAPPE: Mesh Assessment via Point Cloud and Projection Estimators.” Signal Processing: Image Communication, vol. 150, article 117722, 2027. DOI: 10.1016/j.image.2026.117722. Available online 5 October 2026.
@article{carvalho2027mappe,
  author  = {Carvalho, Arthur Henrique Silva and Freitas, Pedro Garcia},
  title   = {{MAPPE}: Mesh Assessment via Point Cloud and Projection Estimators},
  journal = {Signal Processing: Image Communication},
  volume  = {150},
  pages   = {117722},
  year    = {2027},
  doi     = {10.1016/j.image.2026.117722}
}

License

MIT License.

Metadata

Release files for mappe 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mappe 1.0.0
File Size Uploaded Provenance
mappe-1.0.0.tar.gz 6.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mappe 1.0.0
File Interpreter ABI Platform
mappe-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.1 kB

Release files / mappe-1.0.0.tar.gz

Download URL mappe-1.0.0.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1f664ee1a193da7219ca8d29cf8661440ce0d36f57b6c8482ff32e2a2be663d8
BLAKE2b-256 checksum
How to use checksums
60cae8e1448e9d311b56016fe2b3e4e599a8d6af8c0b5b485a26a02c1ac49c83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / mappe-1.0.0-py3-none-any.whl

Download URL mappe-1.0.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
301b73c764dec6fea91a73a7d6239f19309401f39bd22e457a4f8fa1480a5c61
BLAKE2b-256 checksum
How to use checksums
2824c7a04ed54d1ec52c54bbfc3216a65cfb9e1ef61531b99fc2a79a5c0a07c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for mappe 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page