Enable Arnold Denoising in 3ds Max with MAXScript
Learn how to turn on Arnold denoising programmatically, see a ready‑to‑run MAXScript example, and understand the limits and verification steps.
19 Jul 2025, 05:55 UTC

Enable Arnold Denoising via MAXScript in 3ds Max
The useful answer: Arnold denoising can be turned on through the Render Setup dialog or, more reliably for batch jobs, by setting a few properties in MAXScript. This lets you apply the same denoising settings to every render without manual clicks.
How it works (mechanism)
Arnold’s denoiser is controlled by two renderer properties: denoiserOn (Boolean) and denoiserType (enum). When denoiserOn is true, Arnold runs the selected denoiser after the beauty pass. The denoiser type can be #optix (NVIDIA RTX‑accelerated) or #openimagedenoise (CPU‑based). Changing these properties before the render starts ensures the denoiser is active for that frame.
Worked example
The following MAXScript opens a scene, assigns Arnold as the active renderer, enables OptiX denoising, sets a low sample count for quick testing, renders to a file, and then restarts the renderer to its previous state. Replace the placeholders with your own paths.
-- USER SETTINGS ----------------------------------------------------
scenePath = "C:/Projects/MyScene.max"
outputPath = "C:/Renders/MyScene_denoised.exr"
-- -----------------------------------------------------------------
-- Store current renderer so we can restore it later
originalRenderer = renderers.current
-- Load the scene (if not already open)
if not (getFileNameScene() == scenePath) do (
maxFilePath = scenePath
maxFileLoad quiet:true
)
-- Ensure Arnold is the active renderer
arnoldRenderer = arnoldRenderer
if arnoldRenderer == undefined do (
messageBox "Arnold renderer not found. Install Arnold for 3ds Max." title:"Error"
exit
)
renderers.current = arnoldRenderer
-- Enable denoising and choose OptiX (requires RTX GPU)
renderers.current.denoiserOn = true
renderers.current.denoiserType = #optix
-- Optional: reduce samples for a fast preview; adjust as needed
renderers.current.aaSamples = 3
-- Render to the specified output file
render outputPath filenameOnly:true useFileName:true
-- Restore original renderer (optional, useful in batch scripts)
renderers.current = originalRenderer
messageBox "Render complete. Denoised image saved to " + outputPath title:"Done"
Run this script from the MAXScript Editor (Ctrl+Shift+M) while 3ds Max is open. The script does not modify the scene file itself; it only changes renderer settings for the duration of the script execution.
Limits and common mistakes
- Insufficient samples: Denoising works best with a reasonable number of samples (typically ≥2 for preview, ≥4‑6 for production). Very low sample counts can produce blotchy or over‑smoothed results because the denoiser lacks enough signal to work with.
- Wrong denoiser type: If you set
#optixon a machine without an RTX GPU or with outdated drivers, Arnold will fall back to the CPU OpenImageDenoise path, which can be much slower. Verify the GPU driver version matches the OptiX requirement. - Missing denoiser activation: Changing
denoiserTypewithout also settingdenoiserOn = trueleaves the denoiser off, so the render looks identical to a non‑denoised pass. - Temporal flicker in animations: The spatial denoisers (OptiX, OpenImageDenoise) treat each frame independently. For animation sequences, enable the temporal denoiser (
#optixTemporalif available) or use a consistent seed and filter size to reduce flicker. - Scene state persistence: Renderer changes made by the script remain in the current 3ds Max session until you manually reset them or reload the scene. If you run the script multiple times without resetting, you may unintentionally keep denoising on for subsequent renders.
Verification steps
- After running the script, open the generated EXR (or converted PNG/JPEG) in an image viewer. Look for reduced grain compared to a render with denoising off.
- Check the Arnold log (Window → Arnold → Log) for a line such as
Denoiser: OptiX enabledorUsing OpenImageDenoise. This confirms the denoiser was active. - Render a second frame with denoising disabled (
renderers.current.denoiserOff = false) and compare render times. Denoising usually adds a small overhead (5‑15 %) but significantly lowers noise. - If you suspect the denoiser fell back to CPU, look for
Falling back to CPU denoiserin the log; this indicates the OptiX path failed.
Risks and rollback
The script modifies renderer properties, which persist in the active 3ds Max session. To roll back, either:
- Reload the original scene file (
maxFileLoadwith the original path), or - Manually reset the properties:
renderers.current.denoiserOn = falseandrenderers.current.denoiserType = #none(or your preferred default).
No file‑system changes are made beyond the output image, so there is no risk of corrupting the scene file itself. Always save your scene before running batch scripts in case you need to revert to a known state.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.