# Pli — pacchetto di trasferimento Blender, versione 1.0.0

Uno studio originale RenderParcel: flacone in ceramica viola, collarino arancione satinato, etichetta a chevron su carta e base in argilla. L'inquadratura è pensata per un'immagine di prodotto con una zona libera a sinistra. Non si tratta né di un oggetto cliente né di un modello riprodotto da una fotografia.

## Cosa contiene realmente il download

Questo pacchetto fornisce un **generatore di scena**, una texture originale, una ricetta e dei controlli. Nessun file `.blend` né render Blender è stato prodotto nell'ambiente di preparazione: Blender non è stato trovato. La validazione effettuata riguarda i file, i percorsi, il PNG, la sintassi Python e gli errori di dipendenze. Leggi `VALIDATION.md`.

La destinazione di ricostruzione è **Blender 4.5.x LTS**, con il suo Python integrato e Cycles. Lo script rifiuta un altro ramo per evitare di far passare una compatibilità presunta per un test. Non è richiesto alcun modulo Python esterno, estensione Blender, font, HDRI o modello. Un Python 3.10+ indipendente è sufficiente per il controllo della cartella; i test forniti sono stati eseguiti con Python 3.14.6 su Windows.

## Struttura e punto di ingresso

```text
blender-v1/
  README.md, LICENSE.txt, VALIDATION.md
  scene.json                    ricetta, versioni, dipendenze e output
  manifest.sha256.json           dimensione e SHA-256 dei file distribuiti
  generate_scene.py              punto di ingresso da avviare DENTRO Blender
  inspect_scene.py               apertura di controllo in un secondo Blender
  validate_pack.py               controllo dei file SENZA Blender
  01_sources/make_texture.py     ricetta originale del PNG
  02_projet/                    riceve il .blend ricostruito
  03_ressources/pli-chevron.png  texture sRGB da conservare
  04_caches/                    nessuna cache per questa scena fissa
  05_rendus/                    riceve l'anteprima CPU se richiesto
  06_livraison/                 scheda di ricezione e rapporti dopo l'esecuzione
```

Il manifest copre i file distribuiti, a eccezione di se stesso per evitare un'impronta circolare. Gli output creati in seguito non fanno parte di questo manifest. Un'impronta rileva una differenza di file; non certifica né la sua provenienza né il suo aspetto. Per la tua consegna, crea un nuovo inventario datato che includa gli output approvati.

## 1. Estrarre e verificare prima di aprire Blender

Estrai lo ZIP in una nuova cartella, poi apri un terminale nella radice `blender-v1`. Non avviare alcun comando dall'interno di un archivio ancora compresso.

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

Il risultato deve contenere `"ok": true` e il codice di uscita deve essere 0. Un file mancante, alterato, fuori dalla cartella o un PNG non valido produce un fallimento (codice 1). Fermati qui se il controllo fallisce. Non riscrivere il manifest semplicemente per mascherare un errore.

Su Windows, `py -3` può sostituire `python`. `blender` qui sotto deve indicare il tuo eseguibile Blender 4.5.x; se la sua cartella non è nel PATH, usa il percorso completo tra virgolette (con `&` prima di quel percorso in PowerShell).

## 2. Ricostruire in un processo Blender dedicato

Lo script ricrea una scena vuota in memoria; non eseguirlo in un progetto non salvato. Dalla cartella estratta:

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

Questo comando deve creare:

- `02_projet/renderparcel_pli_v1.blend`: scena fissa, immagine 1, camera `Pli_Camera`, Cycles CPU, 1.200 × 750 pixel e 64 campioni;
- `05_rendus/pli_controle_cpu.png`: **se il render riesce**, anteprima CPU di 480 × 300 pixel, 16 campioni, senza denoising;
- `06_livraison/reconstruction.json`: versione Blender realmente utilizzata, oggetti, dispositivo scelto e stato reale del render.

Rimuovi `-- --render-preview` per costruire solo il `.blend`. Il rapporto indicherà allora `renderExecuted: false`. Lo script salva la scena alla sua definizione di lavoro prima del calcolo ridotto; il `.blend` quindi non viene sostituito dalle impostazioni di anteprima. I comandi non avviano mai una GPU.

Gli output esistenti vengono rifiutati. Per un nuovo tentativo, estrai di nuovo il pacchetto in un'altra cartella, invece di sovrascrivere un risultato conservato. Un'eccezione viene segnalata al sistema da `--python-exit-code 1`; conserva i messaggi del terminale in caso di fallimento.

## 3. Riaprire la scena in un secondo processo

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

Il controllo apre il `.blend` senza eseguire i suoi script interni, verifica i dieci oggetti, la camera, Cycles CPU, le impostazioni, l'intervallo di un'immagine, AgX, la texture incorporata e il suo percorso relativo. Il risultato va in `06_livraison/inspection-blender.json`. Questo controllo non valuta la bellezza dell'immagine e non sostituisce la sua lettura.

Aprire poi il PNG con un visualizzatore di immagini. **Copiare** `06_livraison/modele-reception.csv` in un nuovo file `06_livraison/reception-executee.csv`, quindi compilare questa copia: flacone intero nell'inquadratura, motivo crema/viola/arancione sulla faccia anteriore, contatto con il basamento, assenza di texture magenta, riflessi leggibili. Il modello resta invariato per preservarne l'impronta; la copia compilata è un output da inventariare nella tua consegna. Questi criteri sono intenzioni da verificare dopo la ricostruzione; nessun render di controllo Blender è incluso nella versione distribuita.

## 4. Verificare il trasferimento senza le vecchie risorse

Copiare **tutta la cartella ricostruita** sulla macchina di destinazione o in un ambiente in cui i percorsi della postazione di creazione non sono accessibili. Eseguire il controllo dei file e poi aprire la copia del `.blend`. Un semplice spostamento sulla stessa postazione non basta se i vecchi percorsi assoluti restano utilizzabili.

La texture esterna è conservata in `03_ressources`. Nel `.blend`, il percorso previsto è `//../03_ressources/pli-chevron.png`, perché `//` è relativo al file Blender collocato in `02_projet`. Il generatore carica la texture e poi la incorpora tramite `Image.pack()` prima del salvataggio. Queste due forme permettono di modificare la sorgente controllando al tempo stesso l'incorporazione; dopo la modifica, ricaricare/incorporare e salvare la versione scelta.

Per un progetto esistente: salvare nella cartella di destinazione; usare File → External Data → Make Paths Relative; avviare Report Missing Files. Find Missing Files può riparare i collegamenti ma renderli assoluti: controllarli di nuovo. Pack Resources non contiene tutti i dati esterni, in particolare i video. Le librerie collegate richiedono una propria procedura; questo pacchetto non ne utilizza nessuna.

## 5. Adattare la ricetta al tuo progetto

Iniziare da una copia distinta, perché qualsiasi modifica delle sorgenti invalida il manifest originale. Conservare software/versione, camera, scena, motore, definizione, campioni, trasformazione di visualizzazione, texture, estensioni e destinazione degli output in un inventario proprio. Il PNG del pacchetto è un colore di base sRGB, non una mappa di normali o di spostamento.

Questa scena non utilizza **alcuna animazione, alcuna cache di simulazione, alcun suono, alcun font né libreria collegata**. Se aggiungi fumo, tessuto o geometria animata, inventaria il tipo di cache, la sua posizione, l'intervallo completo e la procedura di precalcolo. Congela le cache prima di copiarle. Controlla le immagini intermedie e ogni file della sequenza: un'immagine 1 corretta non convalida un'animazione.

Il volume dello ZIP non misura la VRAM del render. Un'anteprima CPU ridotta non permette di stimare un tempo GPU. Per dimensionare la tua produzione, misura la tua scena completa alla definizione finale e verifica il picco di memoria con un margine per le sue fasi più esigenti. Mantieni un backup indipendente fino alla ricezione.

## Ricostruzione della texture, facoltativa

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

Il calcolo del motivo è deterministico e utilizza solo operazioni intere. Nei test pubblicati, i byte PNG ricostruiti corrispondono al file fornito con la stessa libreria zlib. Tra versioni di compressione, confronta anche i pixel invece di supporre byte compressi identici.

## Fonti della procedura

- [Manuale Blender 4.5, dati incorporati](https://docs.blender.org/manual/sr/4.5/files/blend/packed_data.html): ambito di Pack Resources, salvataggio e librerie collegate.
- [Manuale Blender 4.5, External Data](https://docs.blender.org/manual/ja/4.5/interface/window_system/topbar.html): percorsi relativi e ricerca dei file mancanti.
- [API Blender 4.5, Wm Operators](https://docs.blender.org/api/4.5/bpy.ops.wm.html): salvataggio e apertura con script interni disattivati.
- [API Blender 4.0, Image](https://docs.blender.org/api/4.0/bpy.types.Image.html): immagine esterna/incorporata e operazione `pack`; riferimento accessibile consultato, la pagina 4.5 non era accessibile durante questa preparazione.
- [Manuale Blender 4.5, riga di comando](https://docs.blender.org/manual/es/4.5/advanced/command_line/arguments.html): esecuzione dello script e codice di uscita Python.
- [Manuale Blender 4.5, gestione del colore](https://docs.blender.org/manual/sr/4.5/render/color_management.html): interpretazione delle texture e trasformazione di visualizzazione.
- [Manuale Blender 4.5, precalcolo](https://docs.blender.org/manual/fr/4.5/physics/baking.html): trattamento distinto delle cache e degli intervalli di simulazione.

Le traduzioni ufficiali vengono utilizzate quando la pagina inglese non rispondeva. Documentano le operazioni, senza sostituire la prova su Blender che resta da effettuare. I link commerciali e la scelta della GPU figurano nella guida RenderParcel, non nella ricetta tecnica.

## Compatibilità delle cartelle precedenti

Le nuove ricostruzioni salvano `02_projet/renderparcel_pli_v1.blend`. Nessun file già creato viene spostato o rinominato. Se questo nuovo output è assente, `inspect_scene.py` può ancora aprire `02_projet/prismora_pli_v1.blend`, il nome di output storico. Se entrambi i file esistono, l'ispezione sceglie il nuovo output.

Gli identificatori di schema `prismora.blender-transfer.v1` e `prismora.integrity.v1`, le proprietà tecniche `prismora_pack_version` e `prismora_purpose`, nonché il nome del modulo interno `prismora_validator`, restano stabili per la lettura delle cartelle v1. Sono chiavi di compatibilità, non il marchio visualizzato della cartella.
