Documentation

User guide

This guide covers both products in the CG General suite:

  • Triage, local scene diagnostics, sold on its own.
  • CG General, Triage plus Lighting Doctor, an AI lighting-analysis tool. Sold as one bundle.

One build difference runs through this whole guide: a Triage install does not contain the Lighting Doctor files at all. If you bought Triage only, skip every section marked CG General only.

Part 1 — Getting started

Requirements

  • Blender 4.2 or newer.
  • An internet connection for account sign-in/sign-up, redeeming a code, checking your balance, and AI analysis. The deterministic Triage checks are the only thing that works fully offline.
  • A CG General account, free to create from inside the add-on.

Installing

Download the .zip from your CG General account. In Blender, open Edit > Preferences > Add-ons, click the dropdown arrow in the top-right corner of the Add-ons page, and choose Install from Disk… (this replaced the old “Install” button starting with Blender 4.2). Point it at the .zip and enable the add-on once it appears in the list.

Switching between builds, uninstall first

If you're changing from CG General to Triage-only (for example, downgrading, or installing a Triage copy on a second machine): fully remove the add-on first, then install the new zip. Blender's installer does not delete files that existed in the old install but aren't present in the new one, if you skip a full removal, the lighting_doctor folder from your old CG General install is left behind on disk. It won't secretly re-enable Lighting Doctor (a separate flag baked into the Triage build closes that off regardless of what files are sitting there), but it is dead clutter in your Blender scripts folder.

If you're changing from Triage to CG General, the same advice applies for a clean install: remove the old copy first, then install the new one.

Creating an account

Open Edit > Preferences > Add-ons, find the add-on, expand it, and use the Account box at the top.

  • Toggle between Sign In and Create Account with the mode switch at the top of the box.
  • Signing up asks for an email and password (typed twice, to confirm), an optional “Send me product updates and tips” checkbox, and a required “I agree to the Terms of Service and Privacy Policy” checkbox, you can't create an account with that box unticked. Two buttons next to it open the Terms of Service and Privacy Policy pages in your browser.
  • On success you'll see “Account created, signed in as <your email>.”

Forgotten your password? Use Forgot password? under the sign-in form. It emails you a reset code; enter that code plus a new password on the screen that appears next.

Consultations and redeeming a code

A subscription or a top-up purchase credits your account automatically once checkout completes, no code needed. If you have a redemption code instead (for example, from a Superhive purchase, or a codepack), scroll to the License Key field near the bottom of the Account box, paste it in, and click Redeem.

On success, you'll see one of three messages depending on what the server sends back: a custom message from the server, a generic “+N Consultation(s) added.”, or “Code redeemed.” as a last-resort fallback. What “wrong code” actually looks like is decided by the server, not the add-on, see Part 4 for exactly what the add-on can and can't tell you about a failed redemption.

Where the panels live

  • Triage, 3D Viewport, press N to open the sidebar, then the Triage tab.
  • Lighting Doctor (CG General only), 3D Viewport sidebar, Lighting Doctor tab. A second, smaller Lighting Doctor tab also appears in the Image Editor sidebar once you have at least one render in your history, it's there for browsing/restoring past renders while looking at one full-screen.
  • Account, redeem code, and add-on-wide settings, always in Edit > Preferences > Add-ons, under the add-on's own expanded entry. This is one shared Preferences screen for both products.

Part 2 — Task-oriented guides

Run a scan

Open the Triage tab and click Run Health Check. The scan runs in the background in short chunks, so Blender doesn't freeze, you'll see a rotating status line (“Running diagnostics...”, “Politely interrogating your materials...”, and similar) while it works. If you switch to a different scene while it's running, the scan cancels itself with a warning rather than scanning the wrong scene.

When it finishes, you'll get a one-line summary in Blender's status bar (e.g. Triage: 12 issue(s) | 3 fixed | 2 new), and the panel below fills in with results grouped by category.

Read the findings

  • The Scan Summary box at the top gives you one or two plain sentences about what's actually urgent, it says nothing at all if the scene is completely healthy.
  • The row of colored counts underneath (Critical / High / Low / Info) is a quick severity tally; it's hidden entirely if every issue is Info-level, since those never need action.
  • Below that, one collapsible box per category (Performance, Lighting, Scene Organisation, Geometry, Materials, Render Settings, Animation and Rigging). A category with no issues doesn't get a box at all.
  • Inside an expanded category, each issue has up to four buttons: Select (selects the object(s) responsible and frames them, see the note below on how it handles hidden objects), Re-check (re-runs just that one check without a full re-scan), Ignore (hides that specific issue until you clear the ignore list), and, for two specific checks only, a Fix button (Purge Orphans / Find Missing Files).
  • If a check fires on the same issue across three or more objects, it's collapsed into a group row with a “Select All in Group” button, instead of listing every object separately.

About Select and hidden objects: if the flagged object is hidden or excluded from the view layer, clicking Select temporarily un-hides it (walking up the full collection chain, not just the immediate parent) so you can actually select and inspect it. This is reversible automatically, deselecting everything (or selecting something else) restores it to hidden/excluded exactly as it was, on its own, without you needing to manually re-hide it.

Get AI Insights

This needs a completed scan and a signed-in account. Click Analyse with AI (or Re-analyse, if you've already run one) in the AI Insights box below the category list.

The first time you ever do this on a given machine, you'll see a one-time popup describing exactly what's sent, a structured summary of check names, severities, object names and numeric measurements. No images and no .blend file are ever sent for a Triage analysis. Cancelling this popup sends nothing and just reappears next time.

The AI reply groups its advice into Start here, Fix now, Fix soon, and When you have time, roughly ordered by urgency, plus, if relevant, notes on how issues compound with each other and what's likely to become a problem later if left alone.

Run a lighting analysis (CG General only)

Open the Lighting Doctor tab. You need a camera in the scene and a signed-in account. Click Consult the Doctor.

Lighting Doctor doesn't just read your light settings, it renders a preview and a flat-lit reference pass, looks at both, and reasons about what you'd actually see, the way a human lighting artist critiquing your shot would. Analysis normally takes noticeably longer than a Triage AI Insights run (it can run for several minutes on a complex scene) because of this render-then-reason step.

By default it figures out your subject automatically from the camera framing. If you'd rather point it at something specific, including something currently off-camera, like an animation subject that leaves frame, see Use the Subject Box below.

If your scene already has things like street lamps, ceiling fixtures, windows or signage modelled in it, don't be surprised if a suggested light lands directly inside one of them rather than floating free in the scene, see Fixture-based placement in Part 3 for how that works and its limits.

Apply and undo suggestions (CG General only)

Each suggestion card has Apply and Skip buttons. Apply can add or adjust more than one light in a single click if the suggestion covers a batch of similar fixtures.

  • Apply All and Skip All appear once there's more than one pending suggestion, each behind Blender's standard confirm popup. Apply All is deliberately built as a single undoable action, one Ctrl+Z undoes the whole batch, not one press per light.
  • Skip is not undo-tracked by Blender (it's bookkeeping only, not a scene change), but it isn't permanent either, a skipped suggestion gets an Undo Skip button in its place.
  • If two suggestions are presented as alternatives to each other (“Either / or”), applying one automatically skips the other, also reversible via Undo Skip.
  • If a suggestion you already applied no longer matches what's actually in the scene (for example, you undid it manually, or deleted the light yourself), its card switches to a red “Undone, reapply?” state with fresh Reapply/Skip buttons.

Use the Subject Box (CG General only)

Click Set Subject Box in the Lighting Doctor panel. This drops an orange cube-shaped Empty named “LD Subject Box” into the scene, auto-sized around your visible geometry. Scale and move it in the viewport to cover whatever you actually want treated as the subject, anything whose center falls inside the box (on all three axes) is used for subject-position and subject-size calculations instead of the automatic camera-based guess.

Unlike automatic detection, the box works even for something currently off-camera, that's the point of it for animation work. If the box's contents genuinely aren't visible in the current frame, you'll get an explicit warning before the analysis runs, with the option to fall back to automatic detection instead.

Set Subject Box again after clicking Clear (the X icon) restores the same box with your sizing intact, clearing hides it rather than deleting it.

Browse render history and restore a previous lighting state (CG General only)

Every successful analysis adds one entry to the Render History box, up to 10 kept at a time. The first-ever analysis for a scene is pinned as “Original”, it's kept alongside your 9 most recent passes and is never evicted just for being old, even across many passes and even after closing and reopening the file. Deleting it yourself via the trash icon permanently removes the “Original” designation for that scene; no other entry inherits the label. Each entry shows a thumbnail, a pass number · style label (“Original” for the pinned entry instead), and, if a lighting snapshot was captured with it, a Restore This Lighting button.

There is no confirmation dialog before a restore. Clicking Restore immediately reverts every light in the scene to what it was at that render, including deleting any AI-created lights added after that point, and undoing any AI adjustments to your own pre-existing lights. If you want to keep what you have now, save your file (or manually note it) before restoring an older pass.

The trash icon on each entry deletes that history entry, also with no confirmation.

Check and top up your balance

Your Consultation balance is shown in Preferences > (add-on) > Account, once signed in.

  • Refresh Balance re-fetches your current number from the server.
  • Top Up opens a Lemon Squeezy checkout for more Consultations, already linked to your signed-in account, your balance updates automatically once the purchase completes.
  • If you refresh your balance during or immediately after an AI analysis, you may see it drop by the full reserve amount (3 Consultations for Triage, 10 for Lighting Doctor) rather than the smaller real cost. That's expected, the reserve is held up front and reconciled down to the actual cost once the analysis finishes; refresh again in a moment and it'll settle.

Part 3 — Complete feature reference

Preferences panel

Path: Edit > Preferences > Add-ons, add-on's own expanded entry. Described top to bottom exactly as it draws.

Account box

ElementWhat it doesRequires
Sign In / Create Account toggleSwitches the form below between the two modes
Email / Password fieldsSign-in or sign-up credentials. A show/hide eye toggle is shared across whichever password field is currently on screen
Confirm Password (sign-up only)Must match Password before the account is created (checked locally, never sent to the server if it doesn't match)
“Send me product updates and tips” (sign-up only)Optional newsletter opt-in
“I agree to the Terms of Service and Privacy Policy” (sign-up only)Required checkbox; account creation is blocked without it
Sign Up / Sign In buttonsCreate the account or log into an existing oneinternet
Forgot password?Starts the reset-code flowinternet
Signed-in state: “Signed in as <email>”Confirms who you're logged in as
Consultations totalYour Consultation balancesigned in
Refresh BalanceRe-fetches your balance from the serverinternet, signed in
Sign OutClears your local session
Top UpOpens a Lemon Squeezy checkout for more Consultations, linked to your account, credited automatically on completioninternet, signed in
License Key field + RedeemRedeems a code for Consultationsinternet, signed in

Disclosure box (always shown)

A short note on what gets sent for AI analysis (worded differently depending on whether Lighting Doctor is present in your build), plus Privacy Policy and Terms of Service links.

Other checkboxes (always shown, either build)

  • “Include geometry issues on imported/library assets”, off by default. When off, Triage's geometry checks are skipped for objects it detects as likely third-party/imported content (library-linked objects, Blender asset-browser items, or objects carrying a known generator add-on's custom property, or a recognized asset-pack name prefix). Turn it on to include them.
  • “Save debug logs for each analysis” (CG General only), writes a debug log to Desktop/lighting_doctor_logs for every Lighting Doctor analysis. With this on, an Open Logs Folder button, a Send Feedback button, and a Clear button appear. Send Feedback packages up your recent logs (by default the 3 most recent passes, or all of them if you tick “Include all passes”) plus an optional message describing what went wrong, and sends that bundle to CG General for troubleshooting, nothing is sent until you click Send. The Send/Clear buttons are disabled with a note (“No diagnostic logs yet...”) until logging is on and at least one analysis has run.

Triage panel (N-panel, “Triage” tab)

ElementWhat it doesRequires
Run Health CheckRuns a full scan
Reset (X icon)Clears the current report
Return to Full ViewOnly shown while Local View isolation from a Select click is active; exits it
Severity tally rowQuick counts of Critical/High/Low/Info issues; hidden if only Info issues exista completed scan
Scan Summary boxOne or two plain-language sentences on what's urgent; empty scenes get no box at alla completed scan
AI Insights boxSee next sectiona completed scan
Show: filter rowFour icon toggles to show/hide issues by severitya completed scan
Clear IgnoredUn-hides every issue you'd previously ignoredat least one ignored issue
Session diff banner“N fixed / N improved / N new / N remaining” since your last scan this sessiona second-or-later scan in this session
Focus blockShown when you've clicked “Show Issues for This” on an AI-flagged item; filters the list to just that object's issues
Category boxes (×7: Performance, Lighting, Scene Organisation, Geometry, Materials, Render Settings, Animation and Rigging)Collapsible per-category issue lists; a category with nothing wrong is skipped entirelya completed scan
Per-issue Select / Re-check / Ignore / Fix buttonsSee Part 2varies, Select needs the object(s) to still exist
Purge Orphans (Fix button, orphan-data issue only)Runs Blender's own orphan-data purge, then re-checks just that one item
Find Missing Files (Fix button, broken-image-path issue only)Opens Blender's built-in Find Missing Files dialog

AI Insights section (inside the Triage panel)

StateWhat's shown
No scan yet“Run a scan first.”
Not signed in“Sign in to your account in Preferences to enable AI analysis.”
Signed in, no analysis yetAnalyse with AI button
Analysis running“Analysing…”
Analysis completeStart here / Fix now / Fix soon / When you have time / compounding-issues / future-risk sections, whichever the AI populated, plus a Re-analyse button
ErrorSee Part 4

Cost: AI Insights is not a flat fee. The server holds a conservative 3-Consultation reserve up front, then charges the real amount based on actual token usage once the reply comes back, refunding the difference if the real cost was lower, or (capped at what your balance can cover) collecting a little more if it was higher. In practice most Triage analyses land at or under 3 Consultations. Both Triage and Lighting Doctor currently call the same underlying Claude model.

Lighting Doctor panel (CG General only)

ElementWhat it doesRequires
Style dropdownPhotoreal (“physically grounded, natural ratios”) or Cinematic (“deliberately crafted, colour-as-mood”), changes the AI's design brief
Consult the DoctorRuns a full analysiscamera in scene, signed in
Cancel (X, while running)Stops an in-progress analysis
Clear (X, once results exist)Wipes the current results and render history. Does not touch any lights already placed
Scene read / Delta / Strengths / Issues / “Also worth noting”The AI's plain-language observations; whichever sections it populateda finished analysis
Render History boxSee Part 2at least one completed pass
“Lighting looks solid” boxShown instead of suggestions when the AI has nothing left to propose
Suggestion cards: Apply / Skip / Apply All / Skip All / Undo Skip / ReapplySee Part 2
“Last apply result” logUp to the 5 most recent apply/skip outcomes, success or failureat least one apply attempt
Set Subject Box / Clear Subject Box / “Show Subject” toggleSee Part 2
Quick Setup: 3-Point RigAdds/repositions a key, fill and rim Area light around the selected object, relative to the camera, a rough starting point, not an AI suggestionan object selected
Quick Setup: Set Up World HDRIBuilds the World shader node setup if missing, then opens a file browser for an .hdr/.exr/image file
Quick Setup: Clean Up Unused TargetsRemoves leftover invisible aim-target Empties from lights that were deleted outside the normal Apply/Skip flow

A second, smaller panel appears in the Image Editor's sidebar (same “Lighting Doctor” tab name) once render history exists, it's a compact prev/next/restore/delete browser for stepping through your renders while looking at one full-screen.

Cost: a Lighting Doctor consultation reserves 10 Consultations up front, then reconciles to the real token-based cost the same way a Triage analysis does, refunding the difference if it cost less, or (capped at what your balance can cover) collecting a little more if it cost more. It's the same reconciliation logic behind both products; Lighting Doctor's reserve is higher than Triage's 3 because it sends images and expects a longer reply, not because of a different pricing rate. A fully failed consultation (see Part 4) refunds the reserve in full, it should cost you 0 Consultations in the normal failure case.

Cancel and timeouts: clicking Cancel, or the add-on giving up after its own 240-second wait, only stops the add-on from waiting on a result, it doesn't reach across and stop the analysis on the server. If the server was still working when you gave up, it finishes on its own, and your balance updates correctly (charged the real cost, or refunded if it failed) once it does, the add-on just won't show you that result, since it's no longer watching for it. Re-running the analysis is safe either way; it doesn't stack with or wait for an abandoned one.

Fixture-based placement: before it reasons about your lighting, the add-on scans your scene for objects that already look like light sources, street lamps, ceiling lights, sconces, pendants, chandeliers, windows and glass panes, illuminated signs, candles and torches, headlights and taillights, spotlights and floodlights, based on the object's name or, failing that, its material (something set up to glow but currently off, or something genuinely glass/transparent). When the AI proposes a light for one of these, the light isn't placed by the usual azimuth/distance reasoning, it's placed using the fixture's own geometry instead.

For windows specifically, the add-on also checks whether the camera can actually see the window before offering it at all: it casts a small bundle of sight lines from the camera toward the window and only proposes it if most of them reach it without hitting something else first. A window that's blocked from view, facing away, or outside the frame is left out of the analysis entirely, you won't see it mentioned. Other fixture types don't get this same check; how much of the frame they occupy is used to decide which fixtures the AI hears about first if there are many, not to rule any of them out.

Placement itself works differently for windows versus everything else. A window light is placed just inside the glass, facing outward along the window's own surface direction. For other fixtures, the add-on looks for the specific part of the object that actually emits light or is glass, and places the light there; if it can't isolate a glowing sub-area, it falls back to the upper portion of the object, which is what puts a light in a street lamp's head rather than partway down its pole. The light is then nudged slightly toward whatever the analysis considers your subject. This is a best-effort placement based on the fixture's own shape, not a check that confirms the light has ended up sealed inside solid geometry, an oddly-shaped or very open fixture can still receive a light this way.

Wattage for these lights is also fixture-specific rather than calculated the normal way: a streetlight, a window, a candle, and a floodlight are each given a fixed energy value appropriate to what they are (a candle reads far dimmer than a streetlight, for instance), and that value overrides whatever the AI itself might otherwise have chosen for a new light's brightness.

Nothing in the panel marks a fixture-based suggestion as different from an ordinary new-light suggestion, it's the same card, the same Apply/Skip buttons. The only place you'd know a light was fixture-anchored is the AI's own description text, which usually names the fixture it used. If nothing in your scene resembles a fixture, none of this changes anything, no suggestions of this kind appear, and there's no message telling you a fixture search happened at all. There's also no requirement that a fixture be a sealed, watertight shape; an open lamp shade or a flat illuminated sign is still eligible.

The 98 checks, by category

Each row below is one distinct kind of finding the scanner can produce, this is the count that matches what you'd actually see as a separate line item in the Triage panel. Counted as raw functions in the code instead, the same set of checks is 78, since a few functions (notably the geometry scanner) each produce several genuinely different findings; 98 is the number that matches what you see on screen, so that's what's used throughout this guide. 98 counts distinct checks, not distinct places a finding can appear, see the note on Unapplied object scale below, which appears in two category tables but is one check.

One check, Unapplied object scale, is listed in two tables below (Geometry and Scene Organisation) because which category it reports under depends on your scene. It's counted once, under Geometry, in the 98 total, its Scene Organisation-table row isn't a second check, just a second place the same check's output can show up.

Performance (23)

CheckFires when
Scene statisticsInformational only, shown once the scene has ≥50,000 verts or ≥100 objects
Dominant heavy objectScene has ≥500,000 total faces and ≥5 mesh objects; one of the 5 heaviest objects has ≥50,000 faces and is >20% of total scene geometry
High subdivision levelA Subdivision Surface modifier's level is ≥5, or reaches a lower coverage-scaled threshold (≥5 for a hero object filling >10% of frame, ≥4 at >2%, ≥3 for background/off-screen objects)
Heavy object disabled for renderA mesh with ≥10,000 faces has its render-visibility (camera icon) off
Heavy object hidden but still renderingSame 10,000-face floor, but hidden in the viewport while still set to render
Off-screen heavy objectA render-visible mesh with ≥10,000 faces has zero screen coverage in the current frame (only evaluated when a camera exists)
Oversized texture on small/background objectAn image exceeds 4096px on either side, and (where a camera exists) nothing using it covers more than 5% of the frame
Unused orphan data-blocksAny zero-user image, mesh, material (excluding Grease Pencil materials), action, or node group exists in the file
Too many modifiers stackedAn object has more than 5 modifiers
High Array modifier countAn Array modifier's count exceeds 20
Too many Boolean modifiersAn object has more than 2 Boolean modifiers
High particle countAn EMITTER system (or a HAIR system with dynamics on) has more than 10,000 particles
Unbaked Cloth simulationA Cloth modifier's point cache isn't baked
Unbaked Soft Body simulationA Soft Body modifier's point cache isn't baked
Unbaked/unverified Fluid domainA Fluid Domain modifier has no baked cache (or, if baked-state can't be read on your Blender version, a softer prompt to check manually)
Unbaked Rigid Body worldThe scene's Rigid Body World is enabled, has objects assigned, and isn't baked
Duplicate texture datablocksThe same image file on disk is loaded as more than one Blender image datablock
Uncompressed large textureA non-float PNG/TIFF/TGA/BMP image exceeds roughly 1024×1024 pixels
Volumetric shading in useAny Volume object exists, or a material has a Volume Scatter/Absorption/Principled Volume node
Heavy collection instanceA collection-instance object's instanced collection totals ≥50,000 faces
Heavy particle instance loadParticle count × instanced object/collection face count reaches ≥50,000 faces at render
High Rigid Body sub-stepsThe Rigid Body World's sub-steps-per-frame exceeds 20
Unbaked high-count particle systemAn EMITTER (or dynamics-enabled HAIR) system has more than 1,000 particles and isn't baked

Lighting (8)

CheckFires when
No effective light sourcesNo light has positive energy and render-visibility on, and the World isn't providing ≥0.5 background strength or a lit HDRI
Extreme light-intensity ratioAmong non-Sun lights, the brightest is more than 10× the dimmest's energy
Zero-energy light objectsA light's energy is 0 or less
Oversized World HDRIThe World's environment image exceeds 8 megapixels (4096×2048)
Oversized area lightAn Area light's size exceeds 50m
Extremely narrow spotlight coneA Spot light's cone angle is under 2°
Excessive light countMore than 20 light objects exist in the scene
Very high World background strengthThe World Background node's Strength exceeds 50

Scene Organisation (5, plus one shared with Geometry)

CheckFires when
Default/unrenamed object names2+ objects share an un-renamed default name (Cube, Sphere, Camera, etc.) and aren't all grouped into one common named sub-collection
Loose objects in the master collectionAn object sits directly in the scene's root collection rather than a named sub-collection
Empty collectionsA collection in the hierarchy contains zero objects, recursively
Deep collection hierarchyCollection nesting exceeds 5 levels
Unapplied object scale (not counted separately, see Geometry)Same check as Geometry's row below, counted once there. Reports here instead, at lower severity, when the object has no deforming modifier attached
Ungrouped objects with copy-suffixesAn object has a .001-style suffix, isn't a default name, and is loose in the master collection

Geometry (16)

CheckFires when
Negative object scaleAny scale axis is negative, on an object not driven by physics
Mesh too dense to scanInformational, a mesh exceeds 250,000 polygons, so detailed geometry analysis is skipped for it
Inconsistent face normals / windingTwo faces sharing an edge are wound in conflicting directions
Non-manifold geometryAn edge is shared by 3 or more faces
Non-planar n-gon facesA face with more than 4 sides deviates from flat beyond tolerance
Zero-area facesA face's computed area is effectively zero
Loose verticesA vertex belongs to no face
Overlapping/duplicate verticesCoincident verts found within 0.0001 units (meshes under 100,000 verts only)
Extreme face aspect ratio under SubdivisionOnly checked on meshes with a Subdivision modifier, under 50,000 faces; a face's longest edge is over 15× its shortest
Missing UV map on textured meshThe object has an image-texture material but no UV layer
Overlapping UV islandsUV-face areas sum to more than 1.05× the tile (non-tiling layouts, under 20,000 polygons only)
Empty meshA mesh object has zero vertices
Modifier disabled at render timeA modifier has render-visibility off
Duplicate modifier type stackedThe same modifier type (excluding Array/Boolean/Hook) appears more than once on one object
Unapplied object scaleA non-physics-driven mesh/curve/font/surface/metaball has non-unit, non-negative scale. Counted here, in Geometry, for the 98 total. Reports here, at higher severity, specifically when the scale is non-uniform and the object has a deforming modifier (Subdivision/Bevel/Mirror/Solidify); otherwise it reports in the Scene Organisation table instead, at lower severity, same check, one of the two tables, never both
Geometry Nodes modifier with no node groupA Geometry Nodes modifier has no node group assigned

Materials (13)

CheckFires when
No material assignedA mesh with faces has no material in any slot
Empty material slotA material slot exists with nothing assigned to it
Missing/broken image file pathAn unpacked image's file path doesn't resolve on disk
Absolute texture pathAn unpacked image's path isn't Blender-relative (doesn't start with //)
Too many material slotsAn object has more than 10 material slots
Unused material slotA material slot exists that no face actually uses
Duplicate material (accidental)A material's name matches a .001-style suffix pattern where the base name also exists
Unpacked external textureOnly checked on a never-saved file, an image references an external file but isn't packed
Disconnected/orphaned shader nodesA material's node tree has 5+ nodes with unconnected outputs (excluding output/frame/reroute nodes)
Image texture wired directly into Normal socketAn Image Texture feeds a BSDF's Normal input with no Normal Map node in between
Zero roughness with no textureA Principled BSDF's Roughness is unconnected and under 0.01
Very high emission strengthAn Emission node's Strength is unconnected and over 100
Wrong color space on non-color textureAn Image Texture feeding Normal/Roughness/Metallic/etc. is set to sRGB instead of Non-Color

Render Settings (19)

CheckFires when
No active camera setThe scene has no active camera
Very high Cycles render samplesCycles samples exceed 1024
Very high render resolutionEffective resolution exceeds roughly 8K pixel count
Motion blur enabled with no animationMotion Blur is on but nothing in the scene has real keyframe/NLA/VSE animation
High samples with no Adaptive Sampling/DenoisingCycles samples exceed 256 with both features off
Render output path not setOutput file path is empty or the default //
Very high EEVEE samplesEEVEE's render samples exceed 256
Low Cycles samples without denoisingCycles samples are under 64 with Denoising off
Default frame range with animated objectsFrame range is still 1–250 but the scene has real keyframed animation
Standard color managementView Transform is “Standard” rather than Filmic/AgX
Very high light bounce countCycles' Max Bounces exceeds 64
Persistent Data off on a heavy sceneInformational, Cycles, Persistent Data off, and the scene exceeds 500,000 total faces
CPU rendering with GPU availableCycles is set to CPU while GPU devices exist in Preferences
Camera clip start/end at extreme valueA camera's Clip Start is under 0.001, or Clip End exceeds 100,000
Depth of Field enabled with no focus targetDoF is on with no Focus Object and a Focus Distance ≤0.01
Active Viewer nodes slow the compositorThe compositor has an un-muted Viewer node
Compositor enabled with no Render Layers nodeUse Nodes is on but no Render Layers node exists
Render Layers node output not connectedA Render Layers node exists but none of its outputs are wired
File Output node with no path setA File Output node's base path/directory is blank

Animation and Rigging (14)

CheckFires when
Broken Armature modifierA mesh's Armature modifier has no armature assigned
Unweighted mesh under an Armature modifierAn active Armature modifier exists with no vertex groups on the mesh at all
Broken constraintA constraint that needs a target has none
Targetless constraint on a likely shake rigSame as above, but downgraded to informational when the object's name suggests a procedural camera-shake rig
No animation despite a long frame rangeFrame range spans more than 10 frames (and isn't the 1–250 default) but nothing has real keyframe data
Keyframes outside the render rangeAn action has a keyframe outside the scene's Start/End
Constant keyframe interpolationInformational, any keyframe uses CONSTANT interpolation
Vertex group with no matching boneA vertex group name doesn't match any bone in the linked armature
IK constraint with no targetA bone's IK constraint has no target
Broken driverA driver variable's object target is unset
Overlapping NLA stripsTwo non-muted strips on the same track overlap in time
Cloth simulation with no Collision objectsThe scene has a Cloth modifier but nothing has a Collision modifier
Physics object with unapplied scaleAn object with Rigid Body/Cloth/Soft Body/Fluid physics, or a particle system, has non-unit scale
Extreme force field strengthA Force Field's strength exceeds 10,000

Part 4 — Troubleshooting

Format: what you see → why → what to do.

Scan-time errors

“Scan cancelled, active scene changed” (warning) → you switched to a different scene while a Triage scan was running. → Just click Run Health Check again in the scene you actually want scanned.

“Scan aborted due to an internal error, see the System Console for details.” (warning) → something unexpected crashed the scan loop itself. → Open Window > Toggle System Console for the actual Python error, and consider reporting it.

A synthetic “Info” issue reading “N check(s) skipped due to internal errors, see Blender's System Console...” → one or more individual checks threw an exception, but the scan kept going around it rather than stopping entirely. → The rest of your results are still valid. Check the System Console to see which check(s) failed and why, this usually points at something unusual in your scene data (a corrupted node, an odd modifier state) rather than a bug in every check.

“Unknown check '...' - try a full re-scan.” → you clicked Re-check on an issue whose check no longer exists (rare, would only happen with a stale saved report from an older add-on version). → Run a full Health Check instead.

“Couldn't find any object for this issue” / “Couldn't select, the object may have been deleted.” → the object the issue refers to no longer exists under that name. → Re-run the scan to refresh the report.

Wrapped note: “Imported geometry detected, geometry checks skipped for N object(s).” → this isn't an error, Triage is deliberately not flagging geometry issues on things it thinks are third-party assets. → If you want those checked too, turn on “Include geometry issues on imported/library assets” in Preferences.

Triage AI Insights messages

You seeWhyWhat to do
“Sign in to your account in Add-on Preferences to enable AI analysis.”Not signed inSign in via Preferences
“Run a Triage scan first.”No completed scan yetRun Health Check first
“An analysis is already running in scene '...', wait for it to finish.”You clicked Analyse twice, or in two scenes at onceWait for the first one to finish
“AI Analysis failed: session expired, sign in again in Preferences.”Your stored login session was genuinely invalid (not just offline)Sign back in
“AI Analysis failed: could not parse the response.”The reply from the AI service didn't come back in the expected shapeTry again; if it keeps happening, this is worth reporting
“Bad response, try re-importing.”A previously-stored AI result is corrupted (can happen if a .blend was hand-edited)Re-run the analysis
“You're out of Consultations.”Your Consultation balance is emptyTop up
“AI service unavailable, try again shortly.”The add-on's request to the backend never got a real response at all, a dropped connection, or the backend returning something unreadableCheck your connection and try again in a minute
“AI Analysis failed: The AI call failed. Please try again.”The backend was reached and sent your request on, but that attempt failed, after one automatic retry on its side. The reserve for this attempt is refunded the same way as the row belowWait a minute and try again; if it keeps happening, it's worth reporting
“AI Analysis failed: The consultation service is temporarily unavailable... no Consultations have been charged. Please try again later.”The AI provider itself refused the request for billing/capacity reasons on the backend's own account, not yoursTry again later, this message explicitly confirms the refund
“Your session expired, sign in again in Preferences.”Shown from the panel redraw path if your session died between actionsSign back in

A failed AI call is retried automatically once on the server, a fixed 10-second wait for a busy/overloaded response, or a fixed 30-second wait for a server-side error, with no progress shown to you while that happens; your Analyse click just appears to sit there for up to that long before either succeeding or failing. If the model's reply gets cut off mid-answer, the server automatically asks it to finish once and stitches the two parts together, you never see this happen, but you are billed for the combined token cost of both parts, not just the first.

Lighting Doctor consultation messages (CG General only)

You seeWhyWhat to do
“No camera in this scene, add one to run analysis.”Lighting Doctor always needs a cameraAdd and position a camera
“Analysis already running, wait for it to finish.”Double-click, or a second scene's analysis while one's in flightWait
“Sign in to your account in Add-on Preferences to enable AI analysis.”Not signed inSign in
“Your Subject Box's contents are not visible in the current camera view...”Your Subject Box is set, but nothing inside it is actually on screen right nowReframe, change frame, or fall back to automatic detection for this run
“Scene setup failed: ...” / “Render setup failed: ...”Something failed while preparing the render pass itselfThe specific error text tells you what, often a render-engine or file-path issue outside the add-on's control
“AI returned an empty response.” / “'suggestions' must be a list.”The AI's reply came back malformedTry again
“You're out of Consultations.”Balance is emptyTop up
“The Doctor is unavailable right now, try again shortly.”The add-on's request never reached the backend at allCheck connection, retry
message ending “...The AI call failed. Please try again.”The backend was reached and forwarded your request on, but that attempt failed even after one automatic retryWait a minute, try again; report it if it persists
message ending “...no Consultations have been charged. Please try again later.”The AI provider refused the request for billing/capacity reasons on the backend's accountTry again later
“Your session expired, sign in again in Preferences.”Session genuinely invalidSign back in
“The lighting looks solid...”The AI found nothing worth suggesting this roundNot an error, this is the “nothing to fix” outcome
“N issue(s) found, but no fix is being shown this round...”The AI saw problems but every candidate fix was either too subtle to matter or would just undo something you already changedTry a bigger change, or accept the scene as-is

Analysis timeout: an analysis request is allowed up to 240 seconds on the add-on's own side before it gives up and reports a failure. A Send Feedback upload of your logs is allowed up to 120 seconds.

Account, sign-in and redemption

“Enter both email and password.” / “Passwords don't match.” / “Please agree to the Terms of Service and Privacy Policy to continue.” → pre-flight checks the add-on runs locally before it even contacts the server. → Fix the specific field named.

“Could not reach the account server. Check your connection and try again.” → a genuine network failure, distinct from a bad password. → Check your connection.

“Sign in failed.” → a generic fallback used whenever the server's response doesn't include a recognizable reason. → Double check your details; if you're fairly sure the account/email is fine, this may be a server-side issue worth reporting.

“Not signed in.” → shown if a refresh-balance, redeem, or buy-credits action is triggered with no session stored at all. → Sign in.

Your session silently signed itself out with “Your session expired, please sign in again.” → this fires when your refresh token is genuinely invalid or revoked. → Sign back in; nothing about your account or balance was affected by this.

Redeem-code messages

The add-on itself only owns one fallback string, “Redeem failed.”, shown if the server rejects your code without giving a reason. Every specific reason below is written by the backend, the add-on just displays it as-is. Codes are matched case-insensitively.

You seeMeaning
“A code is required.”The field was empty
“That code isn't recognized.”The code doesn't exist. Double check you've copied it exactly as it arrived by email
“This code has already been redeemed.”Covers two distinct cases that read identically: the code was already used once, or the code had an expiry date attached and that date has passed
“Too many attempts. Please try again later.”You've tried more codes than the account-wide limit allows in the last hour

On success, the add-on shows either a message the server supplies, or a generic +N Consultation(s) added., or Code redeemed. as a last resort.

Known limitations

  • Single scene per analysis. Both Triage's report and every piece of Lighting Doctor state (results, suggestions, applied/skipped status, render history) are stored per-scene. Nothing carries over automatically if you copy work into a different scene, and Lighting Doctor's own storage is keyed by the scene's name, renaming a scene after analysing it orphans that scene's saved Lighting Doctor state.
  • Disabling and re-enabling the add-on signs you out. A known, currently-unfixed side effect of how Blender re-registers the add-on's preferences in-session, not expected from a normal quit-and-reopen of Blender.
  • Wide or thin area lights can render as squares. A rectangular Area light requested by the AI can silently come out square in some cases. If a suggested light looks square when the description implied otherwise, check its Shape setting in the Light Data properties and switch it to Rectangle manually if needed.
  • Very dense scenes can produce a false “can't be placed” result for a suggested light, because the placement search's line-of-sight check has a limited number of ray-steps and can exhaust its budget on heavily cluttered scenes.
  • Very small scenes (well under real-world room scale) may not be recognized as an enclosed space by the automatic detection.
  • Raycast domain differences. Lighting Doctor's placement and occlusion logic uses Blender's own scene ray-casting against evaluated geometry, which may not always agree with what your active render engine (Cycles path-traced vs. EEVEE rasterized) actually shows for edge cases like transmissive or volumetric materials.

Part 5 — Privacy and data

This section is a plain-language summary of the current Privacy Policy.

What's sent, and when

Triage, its checks run entirely on your computer. If, and only if, you click Analyse with AI, the add-on sends a structured summary only: check identifiers, severities, object names where relevant, and whitelisted numeric values. No images and no free text are ever sent from Triage, and nothing is sent unless you explicitly request AI Insights.

Lighting Doctor (CG General only), every consultation you request sends: the rendered preview image, a flat-shaded reference image showing your material colors under generic studio lighting, and (on a follow-up round) the previous image and previous advice for continuity; plus a structured scene summary, your object and material names exactly as typed, object positions/approximate sizes/camera visibility, scene bounds and floor/ceiling heights, light settings, camera position/orientation/field of view, world/background settings, color-management settings and measured brightness statistics, and a short auto-generated scene description.

Your .blend file itself is never uploaded, in either product. Nor are your model or texture files, any filename or file path, image paths, your computer's username, or your Blender preferences.

Both products' AI features go to the same place: Anthropic's Claude, via CG General's own backend, as a commercial API customer. Anthropic states it does not use commercial API inputs/outputs to train its models by default, and deletes API inputs/outputs within 30 days except where its Usage Policy enforcement or legal requirements apply.

What's retained, and for how long

  • Anthropic side: 30 days, with the stated exceptions above.
  • CG General's backend, two stages: after 90 days, the AI's response and all rendered images are permanently deleted; after 6 months, the entire consultation record (including object/material names) is permanently deleted.
  • Account data: kept while your account exists.
  • Feedback you send via the Send Feedback button: kept 90 days, then deleted in full, images, scene information and your message together, all at once.
  • Redeemed license keys and self-issued codes: the code itself is kept permanently (even after a refund or account deletion), specifically to stop the same code being redeemed twice. Account deletion clears the link to your account from that row, but not the code, its amount, or its redemption timestamp. No other personal information is kept alongside it.

Every one of the windows above is enforced automatically, by scheduled jobs that run daily.

Account deletion

There's no self-serve “delete my account” button. To request deletion, email support@cggeneral.net from the address on your account; support processes the request by hand, which removes your account and personal identifiers within the legally required window.