# Pli — Blender-overdrachtsdossier, versie 1.0.0

Een originele RenderParcel-studie: keramische fles in paars, satijnen oranje kraag, chevronetiket op papier en een onderstuk van klei. De kadrering is bedoeld voor een productbeeld met een vrije zone aan de linkerkant. Het is geen klantobject en geen model dat uit een foto is nagemaakt.

## Wat de download werkelijk bevat

Dit pakket levert een **scènegenerator**, een originele textuur, een recept en controles. Er is geen `.blend`-bestand en geen Blender-render gemaakt in de voorbereidingsomgeving: Blender is daar niet gevonden. De uitgevoerde validatie betreft de bestanden, de paden, de PNG, de Python-syntax en de afhankelijkheidsfouten. Lees `VALIDATION.md`.

Het reconstructiedoel is **Blender 4.5.x LTS**, met de ingebouwde Python en Cycles. Het script weigert een andere branch om te vermijden dat een veronderstelde compatibiliteit voor een test wordt aangezien. Er is geen externe Python-module, Blender-extensie, lettertype, HDRI of model nodig. Een zelfstandige Python 3.10+ volstaat voor de controle van het dossier; de meegeleverde tests zijn uitgevoerd met Python 3.14.6 onder Windows.

## Mapstructuur en ingangspunt

```text
blender-v1/
  README.md, LICENSE.txt, VALIDATION.md
  scene.json                    recept, versies, afhankelijkheden en uitvoer
  manifest.sha256.json           grootte en SHA-256 van de gedistribueerde bestanden
  generate_scene.py              ingangspunt dat IN Blender moet worden gestart
  inspect_scene.py               controleopening in een tweede Blender
  validate_pack.py               bestandscontrole ZONDER Blender
  01_sources/make_texture.py     origineel recept van de PNG
  02_projet/                    ontvangt het gereconstrueerde .blend
  03_ressources/pli-chevron.png  sRGB-textuur om te bewaren
  04_caches/                    geen cache voor deze vaste scène
  05_rendus/                    ontvangt de CPU-preview indien gevraagd
  06_livraison/                 ontvangstfiche en rapporten na uitvoering
```

Het manifest dekt de gedistribueerde bestanden, met uitzondering van zichzelf om een circulaire vingerafdruk te vermijden. De uitvoer die daarna wordt aangemaakt, maakt geen deel uit van dit manifest. Een vingerafdruk detecteert een verschil in een bestand; hij certificeert niet de herkomst of het uiterlijk ervan. Maak voor je eigen levering een nieuwe gedateerde inventaris die de goedgekeurde uitvoer bevat.

## 1. Uitpakken en controleren voordat je Blender opent

Pak het ZIP uit in een nieuwe map en open vervolgens een terminal in de hoofdmap `blender-v1`. Voer geen enkel commando uit vanuit een nog gecomprimeerd archief.

```sh
python validate_pack.py --root . --json
```

Het resultaat moet `"ok": true` bevatten en de exitcode moet 0 zijn. Een ontbrekend, gewijzigd of buiten de map geplaatst bestand of een ongeldige PNG leidt tot een fout (code 1). Stop hier als de controle mislukt. Herschrijf het manifest niet louter om een fout te verbergen.

Onder Windows kan `py -3` `python` vervangen. `blender` hieronder moet verwijzen naar je Blender 4.5.x-uitvoerbaar bestand; als de map ervan niet in het PATH staat, gebruik dan het volledige pad tussen aanhalingstekens (met `&` vóór dat pad in PowerShell).

## 2. Reconstrueren in een toegewijd Blender-proces

Het script maakt een lege scène opnieuw aan in het geheugen; voer het niet uit in een niet-opgeslagen project. Vanuit de uitgepakte map:

```sh
blender --background --factory-startup --python-exit-code 1 --python generate_scene.py -- --render-preview
```

Dit commando moet het volgende aanmaken:

- `02_projet/renderparcel_pli_v1.blend`: vaste scène, afbeelding 1, camera `Pli_Camera`, Cycles CPU, 1.200 × 750 pixels en 64 samples;
- `05_rendus/pli_controle_cpu.png`: **als het renderen lukt**, CPU-preview van 480 × 300 pixels, 16 samples, zonder denoising;
- `06_livraison/reconstruction.json`: werkelijk gebruikte Blender-versie, objecten, gekozen engine en werkelijke status van de render.

Verwijder `-- --render-preview` om alleen het `.blend` te bouwen. Het rapport vermeldt dan `renderExecuted: false`. Het script slaat de scène op volgens zijn werkdefinitie vóór de beperkte berekening; het `.blend` wordt dus niet vervangen door de preview-instellingen. De commando's starten nooit een GPU.

Bestaande uitvoer wordt geweigerd. Pak voor een nieuwe poging het pakket opnieuw uit in een andere map, in plaats van een bewaard resultaat te overschrijven. Een uitzondering wordt aan het systeem gemeld via `--python-exit-code 1`; bewaar de terminalberichten bij een fout.

## 3. De scène heropenen in een tweede proces

```sh
blender --background --factory-startup --python-exit-code 1 --python inspect_scene.py
```

De controle opent het `.blend`-bestand zonder de interne scripts ervan uit te voeren, controleert de tien objecten, de camera, Cycles CPU, de instellingen, het bereik van één frame, AgX, de ingebedde textuur en het relatieve pad ervan. Het resultaat gaat naar `06_livraison/inspection-blender.json`. Deze controle beoordeelt niet de schoonheid van het beeld en vervangt het bekijken ervan niet.

Open daarna de PNG met een beeldviewer. **Kopieer** `06_livraison/modele-reception.csv` naar een nieuw bestand `06_livraison/reception-executee.csv` en vul die kopie in: volledige flacon in het kader, crème/paars/oranje motief op de voorzijde, contact met de sokkel, geen magenta textuur, leesbare reflecties. Het model blijft ongewijzigd om zijn vingerafdruk te behouden; de ingevulde kopie is een output die je in je eigen levering moet inventariseren. Deze criteria zijn bedoelingen om na reconstructie te verifiëren; er is geen enkele Blender-referentierender opgenomen in de gedistribueerde versie.

## 4. De overdracht verifiëren zonder de oude bronnen

Kopieer **de volledige gereconstrueerde map** naar de doelmachine of naar een omgeving waar de paden van de creatiemachine niet toegankelijk zijn. Voer de bestandscontrole uit en open vervolgens de kopie van het `.blend`-bestand. Een simpele verplaatsing op dezelfde machine volstaat niet als de oude absolute paden bruikbaar blijven.

De externe textuur wordt bewaard in `03_ressources`. In het `.blend`-bestand is het voorziene pad `//../03_ressources/pli-chevron.png`, want `//` is relatief ten opzichte van het Blender-bestand in `02_projet`. De generator laadt de textuur en bedt die vervolgens in via `Image.pack()` vóór het opslaan. Deze twee vormen maken het mogelijk de bron te wijzigen en tegelijk de inbedding te controleren; na wijziging opnieuw laden/inbedden en de gekozen versie opslaan.

Voor een bestaand project: sla op in de doelmap; gebruik File → External Data → Make Paths Relative; start Report Missing Files. Find Missing Files kan de koppelingen herstellen maar ze absoluut maken: controleer ze opnieuw. Pack Resources bevat niet alle externe gegevens, met name video's. Gekoppelde bibliotheken vereisen hun eigen procedure; dit pack gebruikt er geen.

## 5. Het recept aanpassen aan je project

Begin met een aparte kopie, want elke wijziging van de bronnen maakt het oorspronkelijke manifest ongeldig. Bewaar software/versie, camera, scène, engine, resolutie, samples, weergavetransformatie, texturen, extensies en bestemming van de outputs in een eigen inventaris. De PNG van het pack is een sRGB-basiskleur, geen normal- of displacement-map.

Deze scène gebruikt **geen enkele animatie, geen enkele simulatacache, geen enkel geluid, geen enkel lettertype en geen gekoppelde bibliotheek**. Als je rook, stof of geanimeerde geometrie toevoegt, inventariseer dan het cachetype, de locatie ervan, het volledige bereik en de precompute-procedure. Bevries de caches voordat je ze kopieert. Controleer de tussenliggende frames en elk bestand van de sequentie: één correct frame 1 valideert geen animatie.

Het volume van de ZIP meet niet de VRAM van de render. Een verkleind CPU-voorbeeld laat niet toe een GPU-tijd te schatten. Om je productie te dimensioneren, meet je volledige scène op de uiteindelijke resolutie en verifieer je de geheugenpiek met een marge voor de veeleisende stappen. Bewaar een onafhankelijke back-up tot de oplevering.

## Reconstructie van de textuur, optioneel

```sh
python 01_sources/make_texture.py --output 05_rendus/motif-reconstruit.png
```

De berekening van het motief is deterministisch en gebruikt alleen gehele bewerkingen. In de gepubliceerde tests komen de gereconstrueerde PNG-bytes overeen met het geleverde bestand met dezelfde zlib-bibliotheek. Vergelijk tussen compressieversies ook de pixels in plaats van identieke gecomprimeerde bytes te veronderstellen.

## Bronnen van de procedure

- [Blender 4.5-handleiding, ingebedde data](https://docs.blender.org/manual/sr/4.5/files/blend/packed_data.html): bereik van Pack Resources, opslaan en gekoppelde bibliotheken.
- [Blender 4.5-handleiding, External Data](https://docs.blender.org/manual/ja/4.5/interface/window_system/topbar.html): relatieve paden en het zoeken naar ontbrekende bestanden.
- [Blender 4.5-API, Wm Operators](https://docs.blender.org/api/4.5/bpy.ops.wm.html): opslaan en openen met interne scripts uitgeschakeld.
- [Blender 4.0-API, Image](https://docs.blender.org/api/4.0/bpy.types.Image.html): externe/ingebedde afbeelding en `pack`-bewerking; geraadpleegde referentie beschikbaar, de 4.5-pagina was niet toegankelijk tijdens deze voorbereiding.
- [Blender 4.5-handleiding, opdrachtregel](https://docs.blender.org/manual/es/4.5/advanced/command_line/arguments.html): uitvoering van het script en Python-exitcode.
- [Blender 4.5-handleiding, kleurbeheer](https://docs.blender.org/manual/sr/4.5/render/color_management.html): interpretatie van texturen en weergavetransformatie.
- [Blender 4.5-handleiding, bakken](https://docs.blender.org/manual/fr/4.5/physics/baking.html): afzonderlijke verwerking van caches en simulatieduiken.

De officiële vertalingen worden gebruikt wanneer de Engelse pagina niet reageerde. Ze documenteren de bewerkingen, maar vervangen de Blender-test die nog moet worden uitgevoerd niet. Commerciële links en de keuze van GPU staan in de RenderParcel-gids, niet in het technische recept.

## Compatibiliteit met eerdere mappen

Nieuwe reconstructies slaan `02_projet/renderparcel_pli_v1.blend` op. Bestaande bestanden worden niet verplaatst of hernoemd. Als deze nieuwe uitvoer ontbreekt, kan `inspect_scene.py` nog steeds `02_projet/prismora_pli_v1.blend` openen, de historische uitvoernaam. Als beide bestanden bestaan, kiest de inspectie de nieuwe uitvoer.

De schema-identificaties `prismora.blender-transfer.v1` en `prismora.integrity.v1`, de technische eigenschappen `prismora_pack_version` en `prismora_purpose`, en de interne modulenaam `prismora_validator` blijven stabiel voor het lezen van v1-mappen. Dit zijn compatibiliteitssleutels, niet de weergegeven merknaam van de map.
