# Pli — berkas transfer Blender, versi 1.0.0

Studi orisinal RenderParcel: botol keramik ungu, kerah oranye satin, label chevron di atas kertas, dan alas tanah liat. Pembingkaian dirancang untuk gambar produk dengan area kosong di sebelah kiri. Ini bukan objek klien maupun model hasil reproduksi dari sebuah foto.

## Isi sebenarnya dari unduhan

Paket ini menyediakan **generator scene**, tekstur orisinal, resep, dan kontrol. Tidak ada file `.blend` maupun render Blender yang dihasilkan di lingkungan persiapan: Blender tidak ditemukan di sana. Validasi yang dilakukan mencakup file, jalur, PNG, sintaksis Python, dan kesalahan dependensi. Baca `VALIDATION.md`.

Target rekonstruksi adalah **Blender 4.5.x LTS**, dengan Python bawaan dan Cycles. Skrip menolak cabang lain untuk menghindari menganggap kompatibilitas dugaan sebagai hasil uji. Tidak diperlukan modul Python eksternal, ekstensi Blender, font, HDRI, maupun model. Python 3.10+ independen cukup untuk memeriksa folder; pengujian yang disertakan dijalankan dengan Python 3.14.6 di Windows.

## Struktur dan titik masuk

```text
blender-v1/
  README.md, LICENSE.txt, VALIDATION.md
  scene.json                    resep, versi, dependensi, dan keluaran
  manifest.sha256.json           ukuran dan SHA-256 file yang didistribusikan
  generate_scene.py              titik masuk yang dijalankan DI DALAM Blender
  inspect_scene.py               pembukaan kontrol di Blender kedua
  validate_pack.py               pemeriksaan file TANPA Blender
  01_sources/make_texture.py     resep orisinal PNG
  02_projet/                    menerima .blend hasil rekonstruksi
  03_ressources/pli-chevron.png  tekstur sRGB yang harus dipertahankan
  04_caches/                    tidak ada cache untuk scene tetap ini
  05_rendus/                    menerima pratinjau CPU jika diminta
  06_livraison/                 lembar penerimaan dan laporan setelah eksekusi
```

Manifes mencakup file yang didistribusikan, kecuali dirinya sendiri untuk menghindari sidik jari sirkular. Keluaran yang dibuat setelahnya tidak termasuk dalam manifes ini. Sidik jari mendeteksi perbedaan file; ia tidak menjamin asal-usul maupun tampilannya. Untuk pengiriman Anda sendiri, buat inventaris baru bertanggal yang mencakup keluaran yang disetujui.

## 1. Ekstrak dan verifikasi sebelum membuka Blender

Ekstrak ZIP ke folder baru, lalu buka terminal di akar `blender-v1`. Jangan menjalankan perintah apa pun dari dalam arsip yang masih terkompresi.

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

Hasilnya harus memuat `"ok": true` dan kode keluar harus 0. File yang hilang, berubah, berada di luar folder, atau PNG yang tidak valid akan menghasilkan kegagalan (kode 1). Berhenti di sini jika pemeriksaan gagal. Jangan menulis ulang manifes hanya untuk menyembunyikan kesalahan.

Di Windows, `py -3` dapat menggantikan `python`. `blender` di bawah ini harus merujuk pada executable Blender 4.5.x Anda; jika foldernya tidak ada di PATH, gunakan jalur lengkapnya di antara tanda kutip (dengan `&` sebelum jalur tersebut di PowerShell).

## 2. Rekonstruksi dalam proses Blender khusus

Skrip membuat ulang scene kosong di memori; jangan jalankan di proyek yang belum disimpan. Dari folder hasil ekstraksi:

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

Perintah ini harus menghasilkan:

- `02_projet/renderparcel_pli_v1.blend`: scene tetap, gambar 1, kamera `Pli_Camera`, Cycles CPU, 1.200 × 750 piksel, dan 64 sampel;
- `05_rendus/pli_controle_cpu.png`: **jika render berhasil**, pratinjau CPU 480 × 300 piksel, 16 sampel, tanpa denoising;
- `06_livraison/reconstruction.json`: versi Blender yang benar-benar digunakan, objek, perangkat yang dipilih, dan status render yang sebenarnya.

Hapus `-- --render-preview` untuk hanya membangun `.blend`. Laporan kemudian akan mencantumkan `renderExecuted: false`. Skrip menyimpan scene pada definisi kerjanya sebelum komputasi tereduksi; jadi `.blend` tidak digantikan oleh pengaturan pratinjau. Perintah-perintah ini tidak pernah menjalankan GPU.

Keluaran yang sudah ada akan ditolak. Untuk percobaan baru, ekstrak ulang paket ke folder lain, alih-alih menimpa hasil yang sudah disetujui. Pengecualian dilaporkan ke sistem melalui `--python-exit-code 1`; simpan pesan terminal jika terjadi kegagalan.

## 3. Membuka kembali scene di proses kedua

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

Pemeriksaan membuka `.blend` tanpa menjalankan skrip internalnya, memverifikasi sepuluh objek, kamera, Cycles CPU, pengaturan, rentang satu gambar, AgX, tekstur yang disematkan, dan jalur relatifnya. Hasilnya disimpan di `06_livraison/inspection-blender.json`. Pemeriksaan ini tidak menilai keindahan gambar dan tidak menggantikan pembacaannya.

Selanjutnya buka PNG dengan penampil gambar. **Salin** `06_livraison/modele-reception.csv` ke file baru `06_livraison/reception-executee.csv`, lalu isi salinan tersebut: botol utuh dalam bingkai, motif krem/ungu/oranye pada sisi depan, kontak dengan alas, tidak ada tekstur magenta, pantulan yang terbaca. Templat tetap tidak berubah untuk mempertahankan sidik jarinya; salinan yang telah diisi adalah keluaran yang harus diinventarisasi dalam pengiriman Anda sendiri. Kriteria ini adalah niat yang harus diverifikasi setelah rekonstruksi; tidak ada render acuan Blender yang disertakan dalam versi yang didistribusikan.

## 4. Memverifikasi transfer tanpa sumber daya lama

Salin **seluruh folder hasil rekonstruksi** ke mesin tujuan atau ke lingkungan tempat jalur komputer kreasi tidak dapat diakses. Jalankan pemeriksaan file lalu buka salinan `.blend`. Memindahkan begitu saja di komputer yang sama tidak cukup jika jalur absolut lama masih dapat digunakan.

Tekstur eksternal disimpan di `03_ressources`. Di dalam `.blend`, jalur yang direncanakan adalah `//../03_ressources/pli-chevron.png`, karena `//` bersifat relatif terhadap file Blender yang berada di `02_projet`. Generator memuat tekstur lalu menyematkannya melalui `Image.pack()` sebelum penyimpanan. Kedua bentuk ini memungkinkan Anda mengubah sumber sekaligus mengendalikan penyematan; setelah perubahan, muat ulang/sematkan dan simpan versi yang dipilih.

Untuk proyek yang sudah ada: simpan di folder tujuan; gunakan File → External Data → Make Paths Relative; jalankan Report Missing Files. Find Missing Files dapat memperbaiki tautan tetapi membuatnya menjadi absolut: periksa kembali. Pack Resources tidak memuat semua data eksternal, terutama video. Pustaka yang ditautkan memerlukan prosedurnya sendiri; paket ini tidak menggunakan satu pun.

## 5. Menyesuaikan resep dengan proyek Anda

Mulailah dengan salinan terpisah, karena setiap perubahan pada sumber akan membatalkan manifes aslinya. Catat perangkat lunak/versi, kamera, scene, mesin render, resolusi, sampel, transformasi tampilan, tekstur, ekstensi, dan tujuan keluaran dalam inventaris tersendiri. PNG dalam paket ini adalah warna dasar sRGB, bukan peta normal atau displacement.

Scene ini **tidak menggunakan animasi, cache simulasi, suara, font, maupun pustaka yang ditautkan**. Jika Anda menambahkan asap, kain, atau geometri beranimasi, inventarisasi jenis cache, lokasinya, rentang lengkapnya, dan prosedur prakomputasinya. Bekukan cache sebelum menyalinnya. Periksa gambar perantara dan setiap file dalam urutan: satu gambar 1 yang benar tidak memvalidasi sebuah animasi.

Ukuran ZIP tidak mengukur VRAM render. Pratinjau CPU beresolusi rendah tidak dapat digunakan untuk memperkirakan waktu GPU. Untuk merencanakan produksi Anda, ukur scene lengkap Anda pada resolusi akhir dan verifikasi puncak memori dengan margin untuk tahap-tahap yang menuntut. Simpan cadangan independen hingga penerimaan.

## Rekonstruksi tekstur, opsional

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

Perhitungan motif bersifat deterministik dan hanya menggunakan operasi bilangan bulat. Dalam pengujian yang dipublikasikan, byte PNG hasil rekonstruksi cocok dengan file yang dikirimkan menggunakan pustaka zlib yang sama. Antara versi kompresi yang berbeda, bandingkan juga pikselnya daripada mengasumsikan byte terkompresi yang identik.

## Sumber prosedur

- [Manual Blender 4.5, data yang disertakan](https://docs.blender.org/manual/sr/4.5/files/blend/packed_data.html): cakupan Pack Resources, penyimpanan, dan pustaka tertaut.
- [Manual Blender 4.5, External Data](https://docs.blender.org/manual/ja/4.5/interface/window_system/topbar.html): jalur relatif dan pencarian file yang hilang.
- [API Blender 4.5, Wm Operators](https://docs.blender.org/api/4.5/bpy.ops.wm.html): penyimpanan dan pembukaan dengan skrip internal dinonaktifkan.
- [API Blender 4.0, Image](https://docs.blender.org/api/4.0/bpy.types.Image.html): gambar eksternal/disertakan dan operasi `pack`; referensi yang dapat diakses telah ditinjau, halaman 4.5 tidak dapat diakses selama persiapan ini.
- [Manual Blender 4.5, baris perintah](https://docs.blender.org/manual/es/4.5/advanced/command_line/arguments.html): eksekusi skrip dan kode keluar Python.
- [Manual Blender 4.5, manajemen warna](https://docs.blender.org/manual/sr/4.5/render/color_management.html): interpretasi tekstur dan transformasi tampilan.
- [Manual Blender 4.5, prakomputasi](https://docs.blender.org/manual/fr/4.5/physics/baking.html): pemrosesan terpisah untuk cache dan rentang simulasi.

Terjemahan resmi digunakan ketika halaman bahasa Inggris tidak merespons. Terjemahan tersebut mendokumentasikan operasi, tanpa menggantikan uji coba Blender yang masih harus dilakukan. Tautan komersial dan pilihan GPU tercantum dalam panduan RenderParcel, bukan dalam resep teknis.

## Kompatibilitas folder lama

Rekonstruksi baru menyimpan `02_projet/renderparcel_pli_v1.blend`. Tidak ada file yang sudah dibuat yang dipindahkan atau diganti namanya. Jika keluaran baru ini tidak ada, `inspect_scene.py` masih dapat membuka `02_projet/prismora_pli_v1.blend`, nama keluaran historis. Jika kedua file ada, inspeksi memilih keluaran baru.

Pengidentifikasi skema `prismora.blender-transfer.v1` dan `prismora.integrity.v1`, properti teknis `prismora_pack_version` dan `prismora_purpose`, serta nama modul internal `prismora_validator`, tetap stabil untuk pembacaan folder v1. Ini adalah kunci kompatibilitas, bukan merek yang ditampilkan pada folder.
