Paperdoll Renderer
Desktopeditor voor .ppd-projecten, modelimport en een geanimeerde 3D-preview.
Starten
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. Live 3D vereist OpenGL 3.3.
cargo run
cargo run -- "/pad met spaties/character.ppd"
cargo run -- --preview-fixture
cargo run -- --status
Project en bodies
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.
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.
Open man / Open vrouw opent de body. Een geskind glTF/GLB-model is in de live preview zichtbaar:
- Sleep om te orbiten, scroll om te zoomen. Een 24-bits depthbuffer zorgt dat voorste oppervlakken achterliggende delen afdekken.
- Kies een animatieclip en gebruik Pauze / Speel.
- Yaw − / Yaw + volgen twaalf hoeken van 30°; pitch -30 / 0 / 30 kiezen de hoogte. Yaw 0 kijkt naar de voorkant van de testlichamen (−Z).
- Render maakt een gekleurd PNG-stilbeeld van de huidige pose en camera in
renders/body-male-still.pngofbody-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. - Stel breedte, hoogte en fps in de Bodies-weergave in.
!Bodyweergave met animatie- en camerabediening
Equipment en opslaan
Vanuit een body opent Equipment de lijst. Kies een definitie of Nieuw.
1. Geef een unieke naam van maximaal 64 kleine letters/cijfers/-/_, zonder spaties; body is gereserveerd. 2. Kies Man / Vrouw voor het lichaam dat je bekijkt; Geldig voor bepaalt op welke geslachten het preset van toepassing is. 3. Onderdeel toevoegen (OBJ) opent de systeembestandkiezer. Rigide OBJ-onderdelen worden inclusief MTL en relatieve PNG-bijbestanden ingesloten. De preview gebruikt diffuse kleur/texture en alpha-cutout (grens 0,5). Bronbestanden mogen de modelmap niet verlaten. 4. Vouw Skeleton / botten uit en kies het doelbot. Stel relatieve positie XYZ en rotatie XYZ in graden in (Rz·Ry·Rx). Het onderdeel beweegt met dat bot tijdens walk/attack of een andere geïmporteerde bodyclip. Iedere sekse heeft een eigen botbinding; de numerieke offsets zijn gedeeld. 5. Kies shinymap (PNG) moduleert de instelbare glanssterkte. Wis shinymap keert terug naar een uniforme glanssterkte. Vul desgewenst Herkomst / licentie in. Meerdere onderdelen kunnen verschillende botten gebruiken. 6. Opslaan bewaart het project plus zelfbevattende binaire .ppe-snapshots in presets/ (geometrie, bronpayloads, materialen/textures, transformaties, bindingen, seksevlaggen en herkomst). Er worden geen bronpaden buiten het project nodig om die opnieuw te laden.
Preset importeren leest een .ppe uit bijvoorbeeld een ander project. Bij een andere rig moet je de botten opnieuw kiezen; er wordt niet stil geretarget. Onvolledige configuraties kunnen worden opgeslagen, maar onopgeloste onderdelen worden niet op een gegist bot getekend. Verwijder onderdeel haalt een onderdeel uit het werkpreset; Verwijder equipmentdefinitie haalt de definitie uit de projectlijst. Oude project-snapshots blijven voor herstel bewaard. Opslaan vereist een bestandssysteem met hardlinks; bij een fout wordt een bestaande snapshot niet overschreven.
Een preset is begrensd op 32 MiB, 32 onderdelen/bestanden en textures van maximaal 2048×2048. Een project heeft maximaal 64 presets en 64 MiB aan presetbestanden. De volledige containerbeschrijving staat in design.md.
# Zelfbevattend CC0-zwaardvoorbeeld in een nieuw tijdelijk project
cargo run --example equipment_fixture --locked
!Werkelijke equipment-editor met geanimeerd lichaam en handgebonden OBJ
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.
Openen met
- Windows: start de uitgepakte
.exeeenmaal om de editor voor het huidige account aan Openen met toe te voegen. Kies daarna bij een.ppdOpenen met → Paperdoll Renderer (of selecteer de.exevia Bladeren). - Debian/Arch: de pakketten installeren de
.ppd-MIME-koppeling, desktopstarter en iconen. Kies de editor in Openen met. - Linux AppImage/losse binary: bewaar het bestand op zijn vaste plek en voer
"/pad/Paperdoll.AppImage" --install-desktopuit. Hiervoor zijnshared-mime-infoendesktop-file-utilsnodig. Daarna staat de editor in Openen met. Herhaal dit na verplaatsen van de AppImage.
Het venster, de Linux-starter en de Windows-executable gebruiken Tims applicatie-icoon.
Tests
cargo fmt --check
cargo check --workspace --all-targets --locked
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked
# Linux GPU-regressie (Xvfb + Mesa): echte overlappende geometrie en pixelreadback
xvfb-run -a cargo run --example preview_depth_probe --locked
De testlichamen komen uit scripts/generate_test_bodies.py. Het FBX-testbestand wordt met Blender via scripts/convert_test_body_to_fbx.py gemaakt.