Skip to main content
Version: 0.6.3

Image Gallery & Native Texture Vision

ClaudusBridge 0.6.x ships two complementary capabilities that close the image loop inside Unreal:

  1. Image generation as native UE assets. claudus_generate_gallery_image calls ChatGPT's image route and lands the result directly as a real Unreal Texture2D package under Content/Gallery/<Topic>/. No external file-system hop, no manual import — the asset appears in the Content Browser ready to use.
  2. Native texture reading without an external vision agent. claudus_show_texture_asset opens any Texture2D in Unreal's native Texture Editor; claudus_describe_texture_asset returns a provider-side visual description of the texture without routing through Codex or another vision agent. The provider runtime's own vision capability reads the texture and feeds the answer back into the chat.

Together: an AI can generate an image, save it as a UE asset, open it in the engine, describe it back, and decide what to do next — all inside one conversation.


The tools

ToolPurpose
claudus_generate_gallery_imageChatGPT-backed image generation → native Texture2D asset under /Game/Gallery/<Topic>/
claudus_save_image_to_gallerySame destination path, but for existing base64 or local image bytes
claudus_show_texture_assetOpen a Texture2D in the native Texture Editor + save preview evidence
claudus_describe_texture_assetProvider-side visual description of a Texture2D (no external vision agent)
preview_texture_assetLight fallback — produce a PNG evidence file for a texture without opening the editor

All four texture-side tools accept either a long asset path (/Game/Gallery/Perro/T_Dog.T_Dog) or a unique short asset name (asset_path: T_Gallery_060438). For describe/preview you can also pass image_file: C:/path/to/preview.png when the bitmap exists on disk outside the Content Browser.


Generating an image as a native asset

cb call claudus_generate_gallery_image '{
"prompt": "A holographic UI panel with cyan and magenta gradient, dark studio background, square 1024x1024",
"topic": "HoloPanels",
"size": "1024x1024",
"name": "HoloPanel_Cyan_v1"
}'

What happens:

  1. ChatGPT generates the bitmap via the local Claudus provider runtime.
  2. The encoded bytes get cached under Saved/ClaudusBridge/GallerySourceCache/HoloPanels/T_HoloPanel_Cyan_v1_<timestamp>.png for provenance.
  3. A real Texture2D package is created at Content/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_<timestamp>.uasset and mounted under /Game/Gallery/HoloPanels/.
  4. The response returns the asset path, the cache path, the size, and the topic.

If you omit topic, Claudus derives a compact topic from the prompt (HoloPanels, Perro, LobosLuna, …). If you omit subfolder, the topic is the subfolder. If you omit name, a timestamped slug is used.

Auto-execution from provider chat

Providers (Claude / ChatGPT / Gemini) can emit image_generation action requests directly:

[Claudus Action Request]
target: claudus
capability: image_generation
prompt: A holographic UI panel with cyan and magenta gradient ...
topic: HoloPanels
size: 1024x1024

In Full Access, the Claudus Gallery Executor auto-runs the block — the user sees the texture asset appear in the Content Browser without an external agent having to claim and forward the work. In Limited Access, the block stays queued for an execution agent to claim and run.

Provenance + safety

Both claudus_generate_gallery_image and claudus_save_image_to_gallery modify project content, so they require Full Access or an explicit confirm_project_write=true on each call. The original encoded bytes are always cached alongside the generated asset so you can audit which bitmap produced which Texture2D, even after the asset has been re-saved or edited.


Saving an existing image

When the bytes already exist (an external agent produced them, or you have a local PNG/JPG you want to convert into a UE asset), use claudus_save_image_to_gallery:

# From base64
cb call claudus_save_image_to_gallery '{
"image_base64": "iVBORw0KGgoAAAANSU…",
"topic": "ConceptArt",
"name": "Forest_Glade_Lighting"
}'

# Or from a local file
cb call claudus_save_image_to_gallery '{
"image_file": "C:/tmp/forest_glade.png",
"topic": "ConceptArt"
}'

Same destination paths and provenance cache as claudus_generate_gallery_image. Accepts PNG and JPG.


Opening a texture in the native editor

cb call claudus_show_texture_asset '{
"asset_path": "/Game/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_074203.T_HoloPanel_Cyan_v1_074203",
"show_to_user": true
}'

Claudus calls into the editor's asset-editor subsystem and opens the Texture Editor window for the asset. A PNG preview is also saved to Saved/ClaudusBridge/Vision/ as evidence (so a watcher sub-agent or the user can confirm what was opened without having to look at the engine).

Provider action contract equivalent:

[Claudus Action Request]
target: claudus
capability: texture_view
asset_path: /Game/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_074203.T_HoloPanel_Cyan_v1_074203
show_to_user: true

The asset_path field accepts either the long form or a unique short name (asset_path: T_HoloPanel_Cyan_v1_074203). When the short name doesn't disambiguate, Claudus returns the candidate list instead of guessing.


Describing a texture without an external vision agent

This is the half of the loop that doesn't require Codex or any other vision-capable execution agent. The local Claudus provider runtime has its own vision capability; claudus_describe_texture_asset routes a texture through that capability and returns the description back into the chat.

cb call claudus_describe_texture_asset '{
"asset_path": "/Game/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_074203.T_HoloPanel_Cyan_v1_074203",
"question": "What does this texture show? Describe the dominant colors and any UI elements."
}'

What happens:

  1. Claudus extracts the bitmap from the Texture2D asset and saves it as Saved/ClaudusBridge/Vision/<asset>_preview.png for evidence.
  2. The bitmap + question route through the active provider runtime's /claudus/vision endpoint (currently ChatGPT-backed).
  3. The provider's description lands in the chat with source=claudus, provider_identity=Native Vision, and the preview path attached.

Provider action contract equivalent:

[Claudus Action Request]
target: claudus
capability: vision
asset_path: /Game/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_074203.T_HoloPanel_Cyan_v1_074203
question: What does this texture show? Describe the dominant colors and any UI elements.

You can also pass a raw image_file instead of asset_path when the bitmap exists outside the Content Browser:

image_file: C:/Users/.../Saved/ClaudusBridge/Vision/external_screenshot.png

Evidence discipline

Providers must actually queue the vision action to get a description. Status-only chat prose like "Native Vision is now analyzing the texture..." is treated as invalid — the watcher and the auto-observation hook both expect an action result before any visual claim. If a provider says it described an image without an action having fired, that's a verification-gap violation. See EYES MANDATORY for the broader rule.


When to use which

GoalTool
Create a new bitmap and save it as a UE assetclaudus_generate_gallery_image
Convert an existing PNG/JPG/base64 into a UE assetclaudus_save_image_to_gallery
Show an existing Texture2D to the user in the editorclaudus_show_texture_asset
Read what's in an existing Texture2D (provider-side vision)claudus_describe_texture_asset
Need only a PNG of a Texture2D (no editor open, no vision call)preview_texture_asset

A few common combinations:

Generate + verify:

cb call claudus_generate_gallery_image '{"prompt": "...", "topic": "HoloPanels"}'
# → Texture2D at /Game/Gallery/HoloPanels/T_...

cb call claudus_describe_texture_asset '{"asset_path": "T_HoloPanel_...", "question": "Does this match: holographic cyan-magenta UI panel?"}'
# → provider visual verdict, evidence PNG saved

External agent produced the bytes, want them as an asset:

# Codex generates an image via DALL-E, saves to C:/tmp/foo.png
cb call claudus_save_image_to_gallery '{"image_file": "C:/tmp/foo.png", "topic": "ConceptArt"}'
# → Texture2D at /Game/Gallery/ConceptArt/T_...

Read a texture during debugging:

# What does T_Smoke_01 actually look like? Don't open the editor; just get a PNG.
cb call preview_texture_asset '{"asset_path": "T_Smoke_01"}'
# → Saved/ClaudusBridge/Vision/T_Smoke_01_preview.png

Storage layout summary

<Project>/
Content/
Gallery/
HoloPanels/
T_HoloPanel_Cyan_v1_074203.uasset ← native Texture2D, mounted at /Game/Gallery/HoloPanels/...
ConceptArt/
T_Forest_Glade_Lighting.uasset
Perro/
T_DancingDogWater_010606.uasset

Saved/
ClaudusBridge/
GallerySourceCache/
HoloPanels/
T_HoloPanel_Cyan_v1_074203.png ← original encoded bytes, provenance
ConceptArt/
T_Forest_Glade_Lighting.png
Vision/
T_HoloPanel_Cyan_v1_074203_preview.png ← evidence PNG from show/describe/preview calls
external_screenshot.png ← evidence PNGs from describe_texture_asset on raw image_file

Content/Gallery/ is shippable project content; Saved/ClaudusBridge/ is local-only working state.


Where to go next

  • EYES MANDATORY — Why provider-side visual verification matters and how the evidence discipline works
  • Native Editor Conversation — How image_generation, texture_view, and vision action requests fit into the shared multi-AI transcript
  • Access Mode Controls — Why these tools require Full Access or explicit confirm_project_write=true
  • Auto-Observations — Each successful ai_create (including gallery images) writes an asset_created entry to the journal