Skip to content
Back to skills

3dsmax Rendering

ASecurity

Scripts and configures production rendering in Autodesk 3ds Max with the V-Ray and Corona renderers: output size and files, render elements, denoising, light mix, batch and command-line rendering, and network rendering. Use when a user asks to set up a production render, render several cameras in one batch, render from the command line or on a render farm, add render passes for compositing, or cut render time for archviz and product shots.

  • 142 stars
  • 0 votes
  • 0 copies
  • 11 views
  • Added May 27, 2026
toolspythongonodegit

Works with

  • terminal

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add TerminalSkills/skills --skill 3dsmax-rendering --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 3dsmax Rendering?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 3dsmax Rendering
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terminalskills-3dsmax-rendering/badge)](https://www.skillsdirectory.com/skills/terminalskills-3dsmax-rendering)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: 3dsmax-rendering
description: >-
  Scripts and configures production rendering in Autodesk 3ds Max with the
  V-Ray and Corona renderers: output size and files, render elements,
  denoising, light mix, batch and command-line rendering, and network
  rendering. Use when a user asks to set up a production render, render several
  cameras in one batch, render from the command line or on a render farm, add
  render passes for compositing, or cut render time for archviz and product
  shots.
license: Apache-2.0
compatibility: 'Windows. 3ds Max with V-Ray 7 (supports 3ds Max 2021-2027) or Corona 14; scripts run in the MAXScript Listener or through pymxs'
metadata:
  author: terminal-skills
  version: 1.1.0
  category: design
  tags:
    - 3dsmax
    - vray
    - corona
    - rendering
    - archviz
---

# 3ds Max Rendering

## Overview

Everything in the 3ds Max Render Setup dialog can be scripted. Settings that belong to 3ds Max itself are MAXScript globals (`renderWidth`, `rendOutputFilename`) and interfaces (`batchRenderMgr`, `RenderElementMgr`); settings that belong to the renderer are properties of `renderers.current`. Chaos documents only a handful of V-Ray and Corona property names and the full list depends on the installed version, so the dependable workflow is: assign the renderer, list its properties with `showProperties`, then set them. This skill covers that workflow, render elements, denoising, light mix, batch rendering, `3dsmaxcmd`, V-Ray Standalone and network rendering.

## Instructions

### 1. Assign the renderer and inspect it

```maxscript
for c in RendererClass.classes do print c     -- every installed renderer class
renderers.current = VRay()                    -- fresh V-Ray with default settings; VRayRT() is V-Ray GPU
vr = renderers.current
vrayVersion()                                 -- #(version, build)
showProperties vr                             -- every scriptable setting with its type
showProperties vr "*noise*"                   -- filter by name pattern
```

With Corona assigned (Render Setup > Common > Assign Renderer):

```maxscript
cr = renderers.current
show cr                                       -- Corona settings and current values
showInterface CoronaRenderer.CoronaFp         -- Corona functions
CoronaRenderer.CoronaFp.getVersionString()
```

### 2. Output size, frame range and file

These are 3ds Max globals. Close the Render Setup dialog first — changes made while it is open do not stick.

```maxscript
renderSceneDialog.close()

fn setResolution preset = (
    case preset of (
        "draft":    (renderWidth = 1920; renderHeight = 1080)
        "4k":       (renderWidth = 3840; renderHeight = 2160)
        "print-a3": (renderWidth = 4961; renderHeight = 3508)   -- A3 at 300 DPI
        "print-a2": (renderWidth = 7016; renderHeight = 4961)   -- A2 at 300 DPI
        "panorama": (renderWidth = 8000; renderHeight = 4000)   -- 2:1 spherical
    )
    format "Resolution %x%\n" renderWidth renderHeight
)
setResolution "4k"

rendTimeType = 1          -- 1 single frame, 2 active segment, 3 rendStart..rendEnd, 4 rendPickupFrames
rendSaveFile = true
rendOutputFilename = @"D:\renders\lobby\lobby_cam01.exr"
max quick render          -- same as the Render button; uses the dialog settings
```

The `render()` function is different: it ignores the dialog's output file and takes everything as parameters.

```maxscript
render camera:$Cam_Lobby_01 outputwidth:1920 outputheight:1080 \
    outputfile:@"D:\renders\lobby\preview.png" vfb:false
```

### 3. V-Ray quality settings

V-Ray 7 defaults already suit most stills: Progressive image sampler (min 1, max 100 subdivs), render time 0 (run until the noise threshold is reached), GI on with Brute force primary and Light cache secondary. The main quality control is the **Noise threshold**:

| Stage | Image sampler | Noise threshold | Notes |
|---|---|---|---|
| Lighting test | Progressive | 0.1 | 640x480, override material in Global switches |
| Preview | Progressive | 0.05 | highest value the denoiser handles well |
| Default | Progressive | 0.01 | |
| Final still | Progressive or Bucket | 0.005 | no visible noise without a denoiser |
| Animation, DR | Bucket | 0.005 | Light cache preset Animation (Subdivs 3000, Retrace 8) |

Halving the noise threshold roughly doubles render time.

```maxscript
vr = renderers.current
vr.gi_on = true
vr.output_saveRawFile = true                                  -- V-Ray raw image file: multichannel .exr or .vrimg
vr.output_rawFileName = @"D:\renders\lobby\lobby_cam01.exr"
showProperties vr "imageSampler*"                             -- then set what you found, for example:
vr.imageSampler_type                                          -- integer; switch the type in the UI once and read it back
```

### 4. Render elements

Elements are added through the 3ds Max Render Element Manager. V-Ray elements are classes named as in the Render Elements list.

```maxscript
re = maxOps.GetCurRenderElementMgr()
re.RemoveAllRenderElements()
passes = #(VRayReflection, VRayRefraction, VRayRawTotalLighting, VRayRenderID,
           VRayZDepth, VRayCryptomatte, VRayLightMix, VRayDenoiser)
for cls in passes do re.AddRenderElement (cls elementname:(cls as string))
re.SetElementsActive true
format "% render elements\n" (re.NumRenderElements())

zdepth = re.GetRenderElement 4        -- index is 0-based
showProperties zdepth                 -- Zdepth min / max, clamp, invert
```

While the V-Ray frame buffer is enabled, V-Ray saves render elements only through *V-Ray raw image file* (step 3) or *Separate render channels* in Render Setup > V-Ray > Frame buffer. To drive element output from the 3ds Max Render Output field or the elements' own output paths instead, turn the V-Ray frame buffer off.

Corona elements follow the same pattern with their own names: `CShading_LightMix`, `CShading_LightSelect`, `CGeometry_ZDepth`, `CMasking_Cryptomatte`, `CESSENTIAL_Reflect`.

### 5. Denoising and light mix

**VRayDenoiser** (render element) — engines: Default V-Ray denoiser, NVIDIA AI denoiser (needs an NVIDIA GPU), Intel Open Image Denoise. Presets for the default engine: Mild (strength 0.5, radius 5), Default (1, 10), Strong (2, 15). Mode *Only generate render elements* skips denoising at render time so a sequence can be denoised afterwards with frame blending:

```bat
vdenoise -inputFile="D:\renders\walkthrough\frame_????.exr"
```

`vdenoise.exe` is in `C:\ProgramData\Autodesk\ApplicationPlugins\VRay3dsMax<year>\bin` (3ds Max 2022 and later); run it from there or by full path.

**VRayLightMix** (render element) — after rendering, set the VFB layer source to LightMix and change each light's intensity and color; *To Scene* writes the result back to the lights. Start with white lights at generous intensity: raising a dim light in the mix amplifies its noise.

**Corona** — denoising modes in Render Setup > Scene: None, Only firefly removal, NVIDIA GPU AI, Intel CPU/GPU AI, Corona High Quality, Gather data for later; *Amount* can be changed after the render. LightMix needs one `CShading_LightMix` and one `CShading_LightSelect` per controllable light (the *Setup Interactive LightMix* button creates them) and is scriptable after the first render:

```maxscript
fp = CoronaRenderer.CoronaFp
for i = 0 to fp.numLightSelectChannels() - 1 do
    format "% %\n" i (fp.getLightSelectName i)
fp.setLightSelectIntensity 0 2 1.8      -- LightMix 0, LightSelect 2, intensity 1.8
fp.setLightSelectEnabled 0 3 false
fp.getStatistic 7                       -- estimated noise in percent (0 = not available yet)
fp.saveAllElements @"D:\renders\lobby\lobby_cam01.exr"
```

Corona stops on whichever limit is hit first — Pass limit, Time limit or Noise level limit (0 disables a limit). Its GI uses a primary solver plus a secondary solver: Path tracing, or UHD Cache, which is faster and slightly less accurate.

### 6. Batch render several cameras

```maxscript
fn queueCameras outDir w h = (
    for i = batchRenderMgr.numViews to 1 by -1 do batchRenderMgr.DeleteView i
    local cams = for c in cameras where superClassOf c == camera collect c   -- skips camera targets
    for cam in cams do (
        local v = batchRenderMgr.CreateView cam
        v.name = cam.name
        v.overridePreset = true
        v.width = w
        v.height = h
        v.outputFilename = outDir + "\\" + cam.name + ".exr"
        v.enabled = true
    )
    cams.count
)
queueCameras @"D:\renders\lobby" 4000 2250
batchRenderMgr.netRender = false      -- true sends the views to Backburner
batchRenderMgr.Render()
```

### 7. Command-line rendering

`3dsmaxcmd.exe` sits in the 3ds Max install folder. Separators may be `:`, `=` or a space; the scene file comes last.

```bat
cd /d "C:\Program Files\Autodesk\3ds Max 2026"

:: One camera, one frame
3dsmaxcmd -o:"D:\renders\lobby\cam01.exr" -cam:"Cam_Lobby_01" -w:4000 -h:2250 -v:5 "D:\projects\lobby\lobby_v12.max"

:: Animation range
3dsmaxcmd -o:"D:\renders\walkthrough\frame_.exr" -cam:"Cam_Walkthrough" -start:0 -end:300 -w:1920 -h:1080 "D:\projects\lobby\lobby_v12.max"

:: Every enabled view of the Batch Render dialog
3dsmaxcmd -batchRender "D:\projects\lobby\lobby_v12.max"

:: Submit to a Backburner manager instead of rendering locally
3dsmaxcmd -submit:farm-manager01 -jobName:"lobby_walkthrough" -frames:0-300 "D:\projects\lobby\lobby_v12.max"
```

V-Ray Standalone (`vray.exe`, in the same `bin` folder as `vdenoise.exe`, or the *V-Ray Standalone command prompt* in the Start menu) renders an exported scene without 3ds Max:

```maxscript
vrayExportVRScene @"D:\renders\lobby\lobby_cam01.vrscene"    -- exports the current viewport
```

```bat
vray -sceneFile="D:\renders\lobby\lobby_cam01.vrscene" -imgFile="D:\renders\lobby\lobby_cam01.exr" -imgWidth=4000 -imgHeight=2250 -display=0
```

### 8. Network rendering and proxies

- **Backburner** distributes whole frames: `-submit` above, or `batchRenderMgr.netRender = true`.
- **V-Ray distributed rendering** splits one frame across machines. Each render server runs *V-Ray DR Spawner for 3ds Max* (TCP port 20208 with DR2, 20204 with the older DR1; a V-Ray Standalone server listens on 20207) and needs a Render Node license. `vrayEditDRSettings()` opens the server list. Use the Bucket sampler. DR2 is the default since V-Ray 7 update 3.
- **Corona distributed rendering** needs the Corona DR Server application on each node; `CoronaRenderer.CoronaFp.loadDrIpFile @"D:\farm\render-nodes.txt"` loads one IP per line. For animations use Backburner so each machine renders its own frame.
- **V-Ray proxies** keep heavy geometry out of the scene file:

```maxscript
proxies = vrayMeshExport meshFile:@"D:\assets\proxies\olive_tree.vrmesh" nodes:$Olive_Tree_01 autoCreateProxies:true
```

### pymxs equivalents

```python
from pymxs import runtime as rt

rt.renderSceneDialog.close()
rt.renderWidth, rt.renderHeight = 3840, 2160
vr = rt.renderers.current
rt.showProperties(vr)
rt.render(outputFile=r"D:\renders\lobby\preview.png", vfb=False)
```

## Examples

### Example 1: Queue every camera for an overnight 4K batch

**User prompt:** "Our lobby scene has six cameras. Set up a batch that renders each one at 4000x2250 to EXR with reflection, Z-depth and Cryptomatte passes, and start it."

```maxscript
renderSceneDialog.close()
re = maxOps.GetCurRenderElementMgr()
re.RemoveAllRenderElements()
for cls in #(VRayReflection, VRayZDepth, VRayCryptomatte, VRayDenoiser) do
    re.AddRenderElement (cls elementname:(cls as string))
re.SetElementsActive true

n = queueCameras @"D:\renders\lobby" 4000 2250      -- function from step 6
format "% views queued, % render elements\n" n (re.NumRenderElements())
batchRenderMgr.Render()
```

Result: the Listener prints `6 views queued, 4 render elements`, the Batch Render dialog lists one enabled view per camera, and `D:\renders\lobby` fills with `Cam_Lobby_01.exr` … `Cam_Lobby_06.exr` as the views finish. To get the passes on disk, turn on *V-Ray raw image file* or *Separate render channels* in the scene first (step 4) — with the V-Ray frame buffer on, V-Ray writes its elements only through those two outputs.

### Example 2: Render a walkthrough from the command line and denoise it

**User prompt:** "Render frames 0–300 of Cam_Walkthrough at 1080p on the render box without opening 3ds Max, then denoise the sequence."

Prepare the scene once and save it: a VRayDenoiser element with Mode *Only generate render elements*, the Bucket image sampler, and the V-Ray raw image file so every frame is a multichannel EXR that contains the denoiser channels.

```maxscript
vr = renderers.current
vr.output_saveRawFile = true
vr.output_rawFileName = @"D:\renders\walkthrough\frame_.exr"
```

```bat
cd /d "C:\Program Files\Autodesk\3ds Max 2026"
3dsmaxcmd -cam:"Cam_Walkthrough" -start:0 -end:300 -w:1920 -h:1080 -v:5 "D:\projects\lobby\lobby_v12.max"
"C:\ProgramData\Autodesk\ApplicationPlugins\VRay3dsMax2026\bin\vdenoise.exe" -inputFile="D:\renders\walkthrough\frame_????.exr"
```

Result: `3dsmaxcmd` prints a timestamped line per completed frame (verbosity 5) for frames 0–300, and V-Ray writes one raw EXR per frame. Check the file names in the folder first: give `vdenoise` one `?` per digit of the frame number, and add the dot (`frame_.????.exr`) if *Dot-delimited frame number* is on in the raw file dialog. It reads each frame together with its neighbours and writes a new denoised image per frame, without the flicker that per-frame denoising produces.

## Guidelines

- **Inspect before you set.** Do not guess renderer property names or the integer behind a drop-down. Use `showProperties vr "pattern*"`, or change the option in the UI once and read the property back.
- **Close Render Setup before scripting it** (`renderSceneDialog.close()`), or the dialog overwrites your values.
- **`render()` is not the Render button.** It does not use the Render Setup output file or frame range; use `max quick render`, Batch Render or `3dsmaxcmd` for production output.
- **`cameras` includes camera targets.** Filter with `superClassOf c == camera`.
- **Render to EXR.** A multichannel EXR (V-Ray raw image file) keeps every element in one file, and Cryptomatte mattes are stored that way; convert to PNG or JPEG after compositing.
- **Draft first.** Check composition and lighting at low resolution and noise threshold 0.05–0.1 before a production render.
- **Denoise animations with `vdenoise`.** The in-render denoiser and the NVIDIA AI engine work per frame and flicker.
- **`vrayExportVRScene` takes render settings from V-Ray GPU**; if V-Ray GPU is not the production renderer the `.vrscene` gets default settings.
- **Licenses.** 3ds Max, V-Ray and Corona are commercial; every V-Ray DR server needs a Render Node license, and a Corona DR master uses one interface and one render node license.
- **Not for other renderers.** Arnold, the Scanline renderer and Redshift have their own settings; only the 3ds Max parts (steps 2, 4, 6, 7) apply to them.

Files in this skill

  • SKILL.md9.9 KB
  • _scores.json1.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.