| 1 | # Paperdoll Renderer |
| 2 | |
| 3 | Desktopeditor voor `.ppd`-projecten, modelimport en een geanimeerde 3D-preview. |
| 4 | |
| 5 | ## Starten |
| 6 | |
| 7 | Rust 1.96.0 staat in `rust-toolchain.toml`. Op Debian/Ubuntu gebruik je voor bouwen en het venster `pkg-config`, `libxcb1-dev`, `libx11-dev`, `libxkbcommon-dev`, `libxkbcommon-x11-dev` en `libgl1-mesa-dev`. De native filepicker gebruikt XDG Desktop Portal met een GTK/KDE-backend, of Zenity. |
| 8 | |
| 9 | ```bash |
| 10 | cargo run |
| 11 | cargo run -- "/pad met spaties/character.ppd" |
| 12 | cargo run -- --preview-fixture |
| 13 | cargo run -- --status |
| 14 | ``` |
| 15 | |
| 16 | ## Project en bodies |
| 17 | |
| 18 | Het startvenster biedt **Project laden** en **Nieuw project**, beide met een systeembestandkiezer. Nieuw project maakt `character.ppd` en de mappen `assets/body/`, `assets/equipment/`, `presets/`, `cache/` en `renders/`. De CC0-testlichamen worden in `assets/body/` voorbereid. `--preview-fixture` maakt een tijdelijk voorbeeldproject en opent de mannelijke body. |
| 19 | |
| 20 | De eerste projectweergave toont de bodies. **Kies man / Kies vrouw** selecteert een model. Een extern bestand wordt naar de projectmap gekopieerd; bij een bestaande naam krijgt de kopie een eigen naam. Modellen met bijbestanden kun je met hun relatieve mappenstructuur in de projectmap zetten en daar selecteren. **Importoverzicht** toont meshes, materialen, textures, joints en clips van glTF/GLB, FBX en OBJ+MTL. |
| 21 | |
| 22 | **Open man / Open vrouw** opent de body. Een geskind glTF/GLB-model is in de live preview zichtbaar: |
| 23 | |
| 24 | - Sleep om te orbiten, scroll om te zoomen. Een 24-bits depthbuffer zorgt dat voorste oppervlakken achterliggende delen afdekken. |
| 25 | - Kies een animatieclip en gebruik **Pauze / Speel**. |
| 26 | - **Yaw − / Yaw +** volgen twaalf hoeken van 30°; **pitch -30 / 0 / 30** kiezen de hoogte. Yaw 0 kijkt naar de voorkant van de testlichamen (−Z). |
| 27 | - **Render** maakt een gekleurd PNG-stilbeeld van de huidige pose en camera in `renders/body-male-still.png` of `body-female-still.png`. De preview toont achtereenvolgens de hoge resolutie en de ingestelde doelresolutie, met nearest-neighbor uitvergroot en een voortgangsbalk. Iedere pass behoudt zijn beeldverhouding en staat gecentreerd met zwarte balken waar nodig. **Live 3D** keert terug naar het model. |
| 28 | - Stel breedte, hoogte en fps in de Bodies-weergave in. |
| 29 | |
| 30 |  |
| 31 | |
| 32 | ## Equipment en opslaan |
| 33 | |
| 34 | Vanuit een body opent **Equipment** de lijst. Kies een definitie of **Nieuw**. De configuratie bewaart een unieke naam (kleine letters, cijfers, `-` en `_`) en een gekozen model. **Verwijder** verwijdert de definitie uit de projectlijst. **Opslaan** bewaart het project en equipment-configuraties in `presets/`. |
| 35 | |
| 36 | Bij sluiten of **Ander project / Nieuw project** met wijzigingen kies je **Opslaan**, **Niet opslaan** of **Annuleren**. Als opslaan mislukt, blijft het project open. Annuleren in de bestandkiezer behoudt je huidige werk. |
| 37 | |
| 38 | ## Openen met |
| 39 | |
| 40 | - **Windows:** start de uitgepakte `.exe` eenmaal om de editor voor het huidige account aan *Openen met* toe te voegen. Kies daarna bij een `.ppd` **Openen met → Paperdoll Renderer** (of selecteer de `.exe` via Bladeren). |
| 41 | - **Debian/Arch:** de pakketten installeren de `.ppd`-MIME-koppeling, desktopstarter en iconen. Kies de editor in **Openen met**. |
| 42 | - **Linux AppImage/losse binary:** bewaar het bestand op zijn vaste plek en voer `"/pad/Paperdoll.AppImage" --install-desktop` uit. Hiervoor zijn `shared-mime-info` en `desktop-file-utils` nodig. Daarna staat de editor in **Openen met**. Herhaal dit na verplaatsen van de AppImage. |
| 43 | |
| 44 | Het venster, de Linux-starter en de Windows-executable gebruiken Tims applicatie-icoon. |
| 45 | |
| 46 | ## Tests |
| 47 | |
| 48 | ```bash |
| 49 | cargo fmt --check |
| 50 | cargo check --workspace --all-targets --locked |
| 51 | cargo clippy --workspace --all-targets --locked -- -D warnings |
| 52 | cargo test --workspace --locked |
| 53 | # Linux GPU-regressie (Xvfb + Mesa): echte overlappende geometrie en pixelreadback |
| 54 | xvfb-run -a cargo run --example preview_depth_probe --locked |
| 55 | ``` |
| 56 | |
| 57 | De testlichamen komen uit `scripts/generate_test_bodies.py`. Het FBX-testbestand wordt met Blender via `scripts/convert_test_body_to_fbx.py` gemaakt. |