Image Gallery & Native Texture Vision
ClaudusBridge 0.6.x ships two complementary capabilities that close the image loop inside Unreal:
- Image generation as native UE assets.
claudus_generate_gallery_imagecalls ChatGPT's image route and lands the result directly as a real UnrealTexture2Dpackage underContent/Gallery/<Topic>/. No external file-system hop, no manual import — the asset appears in the Content Browser ready to use. - Native texture reading without an external vision agent.
claudus_show_texture_assetopens anyTexture2Din Unreal's native Texture Editor;claudus_describe_texture_assetreturns 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
| Tool | Purpose |
|---|---|
claudus_generate_gallery_image | ChatGPT-backed image generation → native Texture2D asset under /Game/Gallery/<Topic>/ |
claudus_save_image_to_gallery | Same destination path, but for existing base64 or local image bytes |
claudus_show_texture_asset | Open a Texture2D in the native Texture Editor + save preview evidence |
claudus_describe_texture_asset | Provider-side visual description of a Texture2D (no external vision agent) |
preview_texture_asset | Light 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:
- ChatGPT generates the bitmap via the local Claudus provider runtime.
- The encoded bytes get cached under
Saved/ClaudusBridge/GallerySourceCache/HoloPanels/T_HoloPanel_Cyan_v1_<timestamp>.pngfor provenance. - A real
Texture2Dpackage is created atContent/Gallery/HoloPanels/T_HoloPanel_Cyan_v1_<timestamp>.uassetand mounted under/Game/Gallery/HoloPanels/. - 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:
- Claudus extracts the bitmap from the
Texture2Dasset and saves it asSaved/ClaudusBridge/Vision/<asset>_preview.pngfor evidence. - The bitmap + question route through the active provider runtime's
/claudus/visionendpoint (currently ChatGPT-backed). - 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
| Goal | Tool |
|---|---|
| Create a new bitmap and save it as a UE asset | claudus_generate_gallery_image |
| Convert an existing PNG/JPG/base64 into a UE asset | claudus_save_image_to_gallery |
Show an existing Texture2D to the user in the editor | claudus_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, andvisionaction 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 anasset_createdentry to the journal