#!/bin/sh # The whole Grouper pipeline, headless, one Blender at a time: # build (a new file) -> checks -> drawn textures -> surfaces (UVs, decals, bakes, materials) # -> landmarks + concept camera fit -> export (FBX + Grouper_layout.json) -> Cycles pictures -> Workbench wireframes # -> comparison sheets. sh build/run_all.sh [TAG] [SAMPLES] (TAG names the picture set, default v01) # A geometry rebuild always needs the surfaces pass again (it replaces the meshes, their UVs and the decal mesh). B="/e/Steam/steamapps/common/Blender/blender.exe" P="/e/Tools/Programs/Python/python.exe" cd "$(dirname "$0")/.." TAG=${1:-v01} SAMPLES=${2:-128} # a NEW file every time (round 1): the file holds nothing made by hand; a fresh build carries the skin's UV chart (UV_Grid) # and the strip fields the surfaces pass needs "$B" -b --factory-startup --python build/run_build_headless.py 2>&1 | grep -E "SAVED|FAILED|Traceback|Error" ; true sh build/run_checks.sh "$P" build/gr_decals_draw.py "$B" -b Tender_Grouper.blend --python build/gr_surfaces.py 2>&1 | grep -E "BAKE|SURFACES OK|Traceback|Error" | cut -c1-200 ; true "$B" -b Tender_Grouper.blend --python build/gr_landmarks.py 2>&1 | grep -E "LANDMARKS|Traceback|Error" | cut -c1-200 ; true "$P" build/gr_concept_fit.py "$B" -b Tender_Grouper.blend --python build/gr_export.py 2>&1 | grep -E "EXPORT OK|Traceback|Error" ; true "$B" -b Tender_Grouper.blend --python build/gr_render.py -- "$TAG" "$SAMPLES" studio water concept lookalike 2>&1 | grep -E "RENDERS OK|Traceback|Error" ; true "$B" -b Tender_Grouper.blend --python build/gr_preview.py -- wire tag="$TAG" 2>&1 | grep -E "PREVIEW OK|Traceback|Error" ; true "$P" build/gr_pairs.py echo "ALL DONE $TAG"