Skip to content

Releases: scenario-labs/blender-plugin

v0.9.9

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Fixed

  • Blockout from prompt no longer comes back empty. The Scenario LLM's answer is read from the text asset, whose preview the API caps at ~1024 characters; a blockout plan is much longer, so it was cut off mid-element and failed to parse. The full content is now fetched from the asset URL when the preview is capped (hasFullPreview is false), and the parser also recovers the complete elements from a truncated array as a fallback. "room" now designs a full interior instead of failing.

v0.9.8

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Added

  • Prompt to Blockout is now its own tab and a real scene-design system, not a box dropper. Describe a scene and the Scenario LLM designs a structured greybox: rich primitives (box, cylinder, plane, wedge/ramp, cone, sphere), rotation, and a semantic category per element (floor, wall, structure, prop, furniture, vegetation, vehicle, water, light) that sets its colour and its sub-collection. A scene-type and scale steer the layout. The flow is design -> review (a summary of element counts by category and group) -> build (grouped, colour-coded, in a "Blockout" collection) -> refine ("add a second floor", "taller tower") which re-designs from the current plan. Rebuild and Clear act on the stored plan without another LLM call. About 0.5 CU per design.

Changed

  • The old "Blockout from prompt" button in the 3D tab is replaced by the Blockout tab.

v0.9.7

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Added

  • Blockout from prompt (3D tab): describe a scene and the Scenario LLM lays out a rough greybox as grey boxes in a "Blockout" collection, to refine by hand or replace with generated 3D assets one box at a time. About 0.5 CU. The layout is sanitised (sizes and coordinates clamped) so a bad answer never places a runaway cube.
  • Camera-path holds: a shot can pause. Write "hold 2 s" (or "pause", "stay for 3 seconds") in the description and the camera holds on arrival; or select a Shot marker and set its "Hold (s)" field. The move steals the remaining time, so a held path still fits its duration.
  • Two MCP tools for agents building scenes: blender_api_help (look up a bpy operator/type/collection's docstring and properties before writing Python) and datablocks_summary (counts of the objects, meshes, materials, etc. in the open file). Inspired by Blender's own blender_mcp project (GPL-3.0), written fresh.

v0.9.6

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Fixed

  • Enum settings no longer get stuck on "Loading..." after opening a saved .blend. A parameter's choices (Minimax H3's Resolution and Aspect Ratio, and every other enum setting on every model) are kept in an in-memory cache that a saved file does not carry, so the dropdowns were empty until the model was re-synced. The dropdown now rebuilds its choices from the model schema on the spot when the cache is empty, so it is always populated.

v0.9.5

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Fixed

  • The selected scene mesh is now attached automatically to a model's 3D character input (any lane), so a text-to-motion model like Uthana Text to Motion uses your mesh without hunting for a button. A selected mesh shows pinned as "Selected mesh: "; deselect for a text-only generation, or Upload a model file to override. (Before, you had to click a button that was easy to miss, so generations ran without the mesh.)
  • Reload parameters now restores the sub-selector that gates the model list: reloading a Meshy 7 Retexture (or any Edit-lane model) switches to the right Edit task, and a Generate-lane model switches to the right input mode, so the model, prompt and settings actually come back. The Edit-lane mesh is no longer restored as a stale asset (it comes from the current selection).
  • The camera-path Plan button is clearer: it reads keywords (one move + seconds + lens), not AI; when several moves are named ("dolly in and then orbit") the first one written wins, so the result is predictable. Placeholder and tooltip updated.

Added

  • A trash button on the prompt to delete its text (greyed out when empty).
  • Collapse all / Expand all for the generation list.
  • Full error messages: a failed generation shows a red error control whose tooltip is the whole message (with the Error ID), and clicking it opens the full text with a Copy button, instead of a line cut off at 70 characters.

v0.9.4

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Fixed

  • The selected scene mesh now reaches models that take a mesh in any lane, not just the 3D Edit lane. Text-to-motion and other txt23d/img23d models can carry an optional 3D character input (Uthana Text to Motion's "Character 3D model", characterFile, kind 3d); the plugin only auto-attached the selection in the Edit lane, so those inputs were silently ignored. A file input of kind 3D now offers Selected mesh and Upload (never an image capture); attaching the selected mesh exports it as GLB at generate time, the same as the Edit lane.
  • The reference "Add" options now match each input's kind: a 3D input offers the mesh or an upload, an image input offers stills, a video input offers clips. Before, every input offered the same list (a viewport still could be attached to a 3D character input).
  • Either/or inputs expressed as required: {ifNotDefined: {...}} are now parsed (Cartwheel Text to Motion: a 3D character mesh or a reference image). Neither is forced; the plugin asks for one of them.

Changed (tests)

  • Render Video duration tests updated to the 0.9.2 contract (the model's duration is the source; the base Video lane keeps deriving it from the timeline). These headless tests had been passing against a stale install and were re-verified against the built extension.

v0.9.3

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Fixed

  • Rodin Hyper3D Bang (Retexture / Parts) no longer demands a reference image when a texture prompt is written. Its schema marks the reference image required: true, but the description makes it an alternative to the prompt ("... if no prompt is provided"). A required file whose own description reads conditional and which sits next to a prompt is now relaxed to optional, and the plugin requires at least one of the pair, showing one line ("Provide one of: Reference Image or Texture Prompt") only when neither is given. General and driven by the live schema, so it covers any future model phrased the same way.
  • Three curated model ids that no longer resolve on the catalog (so they silently never appeared) were corrected: Seedream 5.0 (non-Pro) -> model_bytedance-seedream-5-0-lite, Veo 3.1 -> model_veo3-1, Kling -> model_kling-v3-omni-video.

Added

  • tools/audit_payloads.py: audits every surfaced model's live schema against the payload the plugin builds (required flags, either/or inputs, mesh detection, dropped params). Report in docs/MODEL_PAYLOAD_AUDIT.md. 68/68 models clean after the fixes, the one remaining note (Trellis 2 Retexture needs mesh + style image) is correct by design.

v0.9.2

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Changed (UI)

  • Model is now a section like "Clip to render" and "Camera path": a boxed header with an icon, then the wide "Choose a model" button and the fallback dropdown.
  • Settings header carries an icon, matching the other sections.
  • Rendering Style is a plain section (an icon and the title): the chevron and the collapse are gone, it is always open.

Changed (duration)

  • The video model's Duration (cost) in Settings is the single source of the clip length for Render Video. With Match timeline on, the camera path's Duration (s) follows it automatically and is read-only, with a note under the planner ("The clip is captured at X s to match the video duration"). With Match timeline off, the two are edited separately.
  • The base Video lane keeps the reverse direction (the model duration follows the scene frame range); only Render Video was flipped.
  • Removed the now-backwards "Clip padded/trimmed for the model" note from the Render Video "Clip to render" box; the camera-path note states the captured length instead.

v0.9.1

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

Changed (UI)

  • Lane tabs and the picker tabs are continuous full-width segmented controls whose cells fill each row (a row of two cells is wider than a row of three); the icon and label are Blender's own for the enum.
  • Rendering Style header now matches "Clip to render" and "Camera path" (an icon and the title on the left, the triangle collapses it).
  • A boolean setting is a single checkbox (the enable + value pair read as two toggles); it is always sent.
  • The look toggle is one line, "Write the look with Prompt Spark", with the 0.75 CU detail in its tooltip; the long inline sentences under the look and in the camera-path planner are gone (hover a control for its tooltip).
  • The camera-path description field carries placeholder text; the reference lists in Rendering Style are drawn flat (no boxes nested inside the section).
  • Match timeline no longer prints a redundant "Video duration, same as the clip" line; it only notes padding or trimming.
  • Clear path asks "Clear the camera path?" with a Clear button, not Replace.

Fixed

  • The audio reference input is back in the render lanes (it was hidden with the other non-image inputs).

v0.9.0

Choose a tag to compare

@edemaistre edemaistre released this 30 Aug 10:07

First release-candidate pass: a coherent UI and a production-readiness sweep of the code.

Changed (UI)

  • Every row of choices (lane tabs, the model picker's modality tabs and category chips, the Edit 3D tasks) is one continuous segmented control: cells touch, each takes an equal share of the full width edge to edge, and the icon is glued to its label with the pair centred in the cell.
  • Consistent spacing: a separator between the tabs and the form and above the Generate button, which is the single prominent action (larger, always priced).
  • Clearer wording: the account strip reads "Connected" instead of a second "Scenario"; the video clip box is "Scene clip".
  • A UI style guide (docs/UI_STYLE.md) codifies the tab, section, button, wording, tooltip and icon conventions so the plugin stays coherent.

Fixed (robustness, from an audited review)

  • MCP estimate_cost and wait_for_job no longer run on the HTTP thread: they read Blender data (preferences, paths, the job manager), so they now go through the main-thread executor. This also removes an off-thread mutation of the shared model cache.
  • A corrupt catalog cache no longer wedges the add-on in a permanent retry loop: load_list_cached and get treat an unreadable cache as a miss and re-fetch.
  • The floating composer's circuit breaker no longer removes its own draw handler or writes preferences from inside a draw callback; the teardown is deferred to a timer.
  • The Log Level preference now actually sets the logging level.

Security

  • The MCP "run Python" permission is off by default. Connected agents keep the fifteen read and scene tools; running arbitrary bpy code is now a deliberate opt-in.

Removed (dead code)

  • The archived render-to-real prompt helper and its constants; the unused operators scenario.set_lane and scenario.use_first_frame; the unused helpers is_render_lane, is_video_output, modality_icon, _sh_dim, order_image_inputs; the unused generate_audio property; three stray imports; the "Edit prompt" dialog. The lane-to-kind map, previously copied in four places, now lives once in core/api/catalog.py.