Tutorials · NanoRender
By Marcin Sroka · Studio3D · 9 min read · 3ds Max 2025 · Corona and V-Ray
An AI render is only as good as what it is told. Gemini receives two things: a shot of your camera view and an English prompt describing the scene. Anything the shot does not show and the prompt does not state, it guesses, and guessing is where matte floors turn glossy, lamps appear out of nowhere and zinc flashing becomes wood. NanoRender builds both inputs from your 3ds Max scene. This guide covers how to prepare that scene so the first render comes out right.
1. How NanoRender reads your scene
During analysis the plugin reads:
- Materials visible in the frame: the Material Editor name, color, textures and Corona/V-Ray parameters (reflection, refraction, metalness, self-illumination, displacement).
- Lights: type, color temperature, on/off state, position and the Visible directly option.
- Windows, mirrors and glass, including off-frame windows up to 12 m away, because they light the interior.
- Scene type: interior or exterior, which you pick yourself (terraces and loggias count as exterior).
The general rule: the viewport tells the truth about shape and color, the material name tells what the viewport cannot show (metal, finish, type of glass). Color and wood species are taken from the shot, not from text.
[ SCREENSHOT 1 ]
2. Scene and viewport setup
The shot is the untouchable base of the render. Gemini keeps its geometry and layout, so whatever is in the shot ends up in the image.
| What | How to set it | Why |
|---|---|---|
| Software | 3ds Max 2025, Corona (V-Ray materials are read too) | The configuration NanoRender is tested on |
| View | Active viewport is a camera, not Perspective | The plugin works from a camera list and keeps a separate prompt per camera |
| Frame | Render resolution 4:3 (e.g. 1600 × 1200), Safe Frame on | The shot is cropped to a Gemini-supported ratio; 4:3 loses nothing |
| Display mode | Realistic with maps visible | Analysis in Clay mode gives false color and glass readings |
| Textures | Highest viewport texture quality | A blurry texture in the shot means a blurry material description; the plugin also raises the texture limit for the capture |
| View outside | Surroundings visible in the viewport (model, backdrop or HDRI) | Gemini takes the window view from the shot; an empty window gets a random landscape |
| Clean-up | Hide helpers, dummies, grids and working layers | Everything visible goes into the image |
[ SCREENSHOT 2 ]
Do not tweak viewport settings after the plugin sets them. For the capture it switches to 2 default lights and turns off highlights and environment reflections, so shots from different cameras stay comparable. You do not need to hide cameras; the plugin never turns their visibility on.
3. Naming materials
The Material Editor name takes priority over the object name. A specific material named in it goes straight into the prompt description, which is the cheapest way to stop Gemini confusing sheet metal with wood.
- Name materials, not objects. Models from ArchiCAD come with auto-generated object names; leave them and give the material a readable name.
- Use English, in the pattern
Material_element_finish. - State the finish:
matte,satin,glossy,polished,brushed,rough. A material with no stated finish is protected as matte. - For bitmap-textured materials, leave color out of the name; color and species come from the shot.
- Name hard-to-preview materials explicitly (metal, acrylic, tinted glass): the word in the name reinforces a class confirmed by parameters.
| Good | Bad | What happens with the bad name |
|---|---|---|
Oak_floor_matte |
Material #25 |
Floor may come out glossy |
Zinc_flashing_metal |
Flashing_01 |
Sheet metal rendered as wood |
Concrete_wall_rough |
Wall_A |
Concrete described as smooth plaster |
Brushed_steel_handle |
Mat_handle |
Handle loses its metallic sheen |
Green_acrylic_bathtub |
Bath_mat |
The solid may lose its transparency |
[ SCREENSHOT 3 ]
A name only helps. A material class (glass, mirror, metal) enters the prompt as certain only when its parameters confirm it (section 5).
4. Naming objects and layers
You do not have to rename objects, but a few words in the object or material name tell the plugin what kind of element it is. Short words count only as whole words: Bath 01 is a bathtub, Bathroom glass door is not; Cup is a cup, Cupboard is not.
| Element | Words recognized in the name | Effect in the prompt |
|---|---|---|
| Windows | Window_*, a windows layer |
Window description and daylight; glass with an outside view becomes a window even without a name |
| Bathtub, shower tray, washbasin | bath, bathtub, tub, shower tray, washbasin |
3D solid with a rim and walls, described as acrylic |
| Vase, bowl | vase, bowl |
Glass solid, not a flat sheet |
| Glassware | glassware, wine glass, goblet, cup, mug, flute |
Solid with walls and refraction, kept in frame |
| Glass decor | figurine, ornament, decor, sculpture |
Same as above |
| Acrylic | acrylic in the material name |
Forces an acrylic description instead of glass |
| Mirrors | mirror (as a hint) |
Parameters decide; the name only helps |
Objects with several materials (for example a glass door with a frame and glazing bars on Multi/Sub) are fine: only the glass sub-material is marked as glass, the frame stays a frame. Just keep the pane and the frame on separate material IDs.
[ SCREENSHOT 4 ]
5. Glass, mirrors, metal and transparent solids
The viewport does not show these materials faithfully, so the plugin recognizes them from parameters and adds markers to the shot. Set the parameters truthfully.
| Material | What to set | What the plugin does |
|---|---|---|
| Clear glass | Refraction on, glass IOR | White outline in the shot, glass description; an outside view makes it a window |
| Tinted glass and acrylic | Color in the material’s Volumetric Scattering (absorption) | Tints the pane in the shot and states color and transmission |
| Mirror | Reflection 1.0, glossiness 1.0 | Bakes the real scene reflection into the mirror with a grey outline, lights seen in the mirror included |
| Metal | Metalness on, plus a metal word in the name | Metal description from parameters (the viewport cannot show it) |
| Matte: plaster, concrete, floors | Low reflection and low glossiness | Protects the matte finish in the prompt |
| Displacement | Displacement map in the material | Surface relief described in the prompt |
[ SCREENSHOT 5 ]
- Every glass element gets an outline, wine glasses and small decor included, because glass raises photorealism. Glass smaller than about 40 px in frame is treated as invisible.
- Transparent solids (bathtub, washbasin, vase) get an extra shading capture, so the rim and walls show instead of a flat stain on the floor.
- A pane in front of a mirror does not spoil the reflection; mirrors are baked before glass.
- Glass reflections (the real interior reflected in large panes) is a separate chip, off by default. In interiors it applies to panes that are not windows; in exteriors to windows as well.
- Chrome and mirror spheres do not get a faithful reflection yet; keep them out of the foreground.
[ SCREENSHOT 6 ]
6. Lights
Gemini is not allowed to add a light source that is not in the shot. Every lamp you want in the render must exist in the scene.
- Visible fixtures (strips, bulbs, wall lights): enable Visible directly in Corona. The plugin bakes them into the shot and describes them in the prompt.
- Concealed LEDs (ceiling coves, behind a mirror): leave them hidden. The plugin describes them as concealed and renders the glow on the lit surface or a halo around the mirror.
- LEDs behind cabinet glass, under wall cabinets and under countertops do not always reach the shot yet. Until that is fixed, give the strip itself a self-illuminated material so it shows in the viewport.
- Light materials (Corona Light Material, self-illumination) are detected and treated as light sources.
- Lights switched off in the scene are described as off. Switch off the ones you do not want in the shot.
- Color temperature: set it on every light (e.g. 2700 K for warm LEDs). The temperature field under the Lights chip overrides the scene only when you turn it on.
- Sun: sun streaks come from the Corona Sun in the scene and take priority over the lighting preset. If you do not want sun, turn it off with the Sun toggle in the plugin.
[ SCREENSHOT 7 ]
7. Textures, proxies and scatters
The shot needs full geometry with textures. Some tools are switched by the plugin for the capture and restored afterwards; the rest you set by hand.
| Tool | What the plugin does | What you do |
|---|---|---|
| CProxy (Chaos Cosmos trees, shrubs, models) | Switches proxies in frame to Full Mesh | Nothing |
| Chaos Scatter | Converts instances in frame to temporary geometry with bitmaps; above 50 000 instances it only raises preview limits | Check the shot on very dense scatters |
| Forest Pack, RailClone, VRayProxy | Not switched yet | Set full preview by hand (Full Mesh, 100% of instances) |
| Floor Generator with Corona MultiMap | The viewport shows only one bitmap | Replace with MaterialByElement and Multi/Sub-Object |
| UVW randomizers | Adds an anti-tiling rule (also for grass, soil, gravel without a randomizer) | Use a large texture and a larger tile to keep repeats few |
Viewport color must match render color. A material whose map is not visible in the viewport will be described with the wrong color.
[ SCREENSHOT 8 ]
8. The shortest path to an image
For the first render, leave lighting, weather and season at their defaults. The whole path is the numbered buttons in the RENDER tab plus one step in EDITOR.
[ SCREENSHOT 9 ]
Manual mode (Gemini in the browser)
- Click the camera on the camera strip under the preview.
- Pick the scene type with the Scene button above the Analyze buttons. It stays red until you choose, and the first choice carries over to the other cameras.
- Check the chips in section 03 Describe. A disabled chip is always red: a red Mirrors or Glass chip means those elements will not reach the shot or the prompt.
- 1. Analyze camera. Max and the plugin window freeze for a few seconds; progress shows in the bar.
- 2. Open Gemini and start a new chat for every generation. After 2-3 images in one chat, Gemini carries elements over from earlier ones.
- 3. Copy shot and paste it into Gemini.
- 4. Copy prompt, paste it under the shot and send.
- Download the result. With auto-load on, the plugin picks it up by itself; otherwise click 5. Load.
- In the EDITOR tab: 2× upscaler, tone adjustments, export.
[ SCREENSHOT 10 ]
API mode: pick the camera, Analyze camera, Generate, then EDITOR. Every API call is independent, so images never bleed between generations.
Many cameras: Analyze all, then Export pack. The pack’s HTML page collects shots and prompts for every camera in one place.
[ SCREENSHOT 11 ]
You can toggle chips after analysis: the plugin rebuilds the shot and the prompt instantly, without a new analysis.
[ SCREENSHOT 12 ]
9. Checklist before analysis
- Active view is a camera, resolution 4:3, Safe Frame on
- Viewport in Realistic mode, textures at highest quality
- Materials in frame have English names with material and finish
- Glass has refraction; tinted glass has its color in Volumetric Scattering
- Mirrors have full reflection and glossiness 1.0; metals have metalness on
- Matte materials have low gloss in their parameters
- Pane and frame on separate material IDs
- MultiMap floors replaced with MaterialByElement and Multi/Sub
- Every lamp I want in the render exists in the scene and has a temperature
- Visible fixtures have Visible directly; unwanted lights are off
- Corona Sun on or off on purpose (Sun toggle)
- Surroundings visible through the windows
- Forest Pack, RailClone and VRayProxy on full preview
- Helpers and working layers hidden
- Scene type chosen; no needed chip in 03 Describe is red
10. Common problems
| Symptom in the render | Cause | Fix |
|---|---|---|
| Matte floor came out glossy | No finish information | Low gloss in parameters and matte in the material name |
| Sheet metal rendered as wood | Metal invisible in the viewport | Metalness on and a name like Zinc_flashing_metal |
| No mirrors in the render | Mirrors chip off (red) | Turn the chip on; the shot rebuilds without re-analysis |
| Mirror read as a doorway to another room | Mirror covering a whole wall | The plugin adds a grey outline and a wall description; check the Mirrors chip is on |
| Acrylic bathtub vanishes or becomes a stain | Solid type not recognized | bathtub in the name, color in Volumetric Scattering |
| Glass door loses its frame | Pane and frame share one material | Split into Multi/Sub with a separate pane ID |
| A lamp that is not in the scene | Lamp description added to the prompt by hand | Remove it; keep concealed LEDs concealed |
| Missing LEDs under cabinets or behind glass | Known capture limitation | Self-illuminated material on the strip itself |
| Repeating patches of grass or gravel | Randomizer does not work in the viewport | Larger texture and larger tile |
| Vegetation as flat colored blobs | Scatter or proxy in simplified preview | Set Forest Pack and RailClone to full preview by hand |
| Elements from an old image in a new one | Several generations in one Gemini chat | New chat per generation, or API mode |
| A forest appears after changing the season | Gemini invents surroundings | Keep surroundings visible in the shot; state in the prompt what not to add |
| Colors and glass readings are off | Analysis done in Clay mode | Analyze in Realistic mode only |
Get NanoRender
NanoRender ships inside the ArchViz Toolkit installer and runs after account activation. Works with 3ds Max 2025.

