Skip to content

Standardize panel and orient products - #7

Merged
Danyals-code merged 2 commits into
mainfrom
standardize-panel-and-orient-products
Oct 29, 2026
Merged

Danyals-code merged 2 commits into
mainfrom
standardize-panel-and-orient-products

Conversation

@Danyals-code

Copy link
Copy Markdown
Owner

No description provided.

…3.0)

Three parts
- A Part switcher at the top of the sidebar picks Clay, Patches or
  Variants; every panel polls on it, so Clay never shows a texture
  control and Patches never shows a camera one
- Top-level panels per part: Clay 8, Patches 6, Variants 11, in
  place of one stack of 18 that showed everything at once
- The part writes through to render_mode, pool_variants and
  pool_patches rather than replacing them, so the renderer, the
  command line, the manifest and provenance need not know parts
  exist; it fires only on a change, so Clay can still be set to
  Full or Both from its own Output panel
- Lighting, the ground and the base material poll on needs_lighting()
  rather than on the part: clay carries Workbench's own studio light
  and the ground is hidden for any non-Full render, so they show only
  when something in the run is lit by the scene
- Products holds the render list, and in Variants each product's own
  material choice, which is what decides whether it takes a draw
- Camera protocols, annotations, drawings, randomization and the
  manifest moved into one collapsed Dataset & research section
- The guide is written per part

Material patches as a part of their own
- Render All plans patch jobs with no product, no camera and no
  stage, so patches gained the progress bar, the time left, Esc,
  Skip Existing and manifest rows the standalone operator lacked
- Texture Size is hidden for patches, which show one repeat filling
  the frame whatever size the real part would be
- part = PATCHES runs from a job file with no inputs at all

Pre-flight
- The Patches part is no longer asked about products, cameras,
  views, naming clashes or lighting
- New error: patches with Workbench as the engine and the Cycles
  add-on off, which used to raise mid-run when the stand-in swap
  to Cycles had nothing to swap to

Rename
- bl_info, the sidebar tab, panel labels, the status bar, console
  prefixes, the manifest's tool field and the citation say CADshot
- The add-on folder, the MV_ collections, the mv. operator names and
  the lighting preset folder keep theirs, so blend files and job
  files written before the rename open unchanged

Documentation
- README: a Three parts section, Workflow reordered to follow the
  panels (Products, Standardize, Views, Stage, Texture Pool,
  Output), troubleshooting for a hidden panel and a missing Stage
  control, and a sentence in Orient Products that had lost its start

Tests
- test_parts.py: the write-through, which panels each part polls in,
  every draw() run through a layout shim, patches rendered with no
  product in the scene, mode-aware pre-flight, and a patches-only
  job file through the command line
A patch is now a grid rather than two fixed tiles: the shapes ticked
in the Patch panel run across it, the lighting conditions ticked
there run down it, and the whole thing is one image per material in
materials/ as before.

Shapes
- Flat swatch, sphere, cube and cylinder, ticked individually; the
  default pair reproduces the patch earlier versions rendered
- The solids are built to sit inside one bounding sphere and share
  one three-quarter camera, so each fills as much of its tile as its
  own form allows and the texture reads at one scale across a row.
  Framing solves asin(r/d) against the sphere, not the tangent
  against a bounding box, which left the subject at a fifth of its
  tile
- The cylinder lies on its side. Upright, every wall normal is
  horizontal while a preset's lights are all above, so the lower
  half turned away from all of them at once and the base went black
- Only the flat swatch takes the straight-on orthographic camera, so
  one repeat fills its tile exactly

Lighting conditions
- Taken from the lighting presets the Stage panel uses, built-in and
  saved, ticked in a list of their own and refreshed on demand.
  Switching to the Patches part fills the list, so it is never stale
  from another file or machine
- No Lights is left out: a patch scene has no HDRI and the swatch
  would come out black. With nothing ticked, one row under a
  built-in studio rig
- Presets are stored relative to the subject's size, so they rebuild
  around a patch shape unchanged: a swatch under Studio Soft is lit
  the way a product at a Target Size of 1.0 is
- Pre-flight warns when a ticked preset can no longer be read, which
  would otherwise drop a row without saying so

Grid
- Column headings, row labels and the material's name, drawn with
  the same blf path the contact sheets use, and switchable off
- Tiles render on transparent film and composite onto the grid's
  white background
- Tile Size is now the size of one tile rather than of one half

Variants
- The Patch panel is gone from the Variants part, which is about
  textures on products. A job file can still set pool_patches for a
  run that wants both

Tests
- test_parts.py covers the shape meshes, which camera each asks for,
  the lighting list and its ticks surviving a refresh, grid growth
  in both axes, and how much of its tile each shape fills
- test_materials.py reads tiles at computed offsets with labels off,
  rather than splitting the image in half
@Danyals-code
Danyals-code merged commit 3f26d78 into main Oct 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant