Maya Maya

Poly Haven in Maya, without the Hypershade tax

The official Poly Haven addon is Blender-only, so Maya artists download a ZIP and rebuild the same shading network by hand every time. The exact node names for Arnold, Redshift, V-Ray and RenderMan, the colour management rule behind most of the 'why does this look wrong' threads, and the one-click version.

Most Maya Poly Haven problems are not wiring problems. They are colour space problems, and they are insidious because nothing fails — you get a render that is merely wrong, with roughness reading too glossy and displacement scaled oddly, and no error anywhere to point at. So start there.

Colour management, before anything else

Maya has shipped an ACES OCIO configuration by default since 2022. Every file node has a Color Space attribute, and Maya guesses it from the file format when you load an image. For an 8-bit JPG or PNG it guesses sRGB — correct for base colour, wrong for every other map in a PBR set, because those maps are data, not pictures. A roughness value of 0.5 means 0.5; running it through a transfer curve makes it mean something else.

Map Goes to file node colour space
_diff baseColor / diffuse sRGB
_rough specularRoughness Raw
_metal metalness Raw
_nor_gl via normal map node Raw
_disp displacement Raw
_ao optional, multiply into base Raw
_spec specular level Raw

One map in green, everything else in amber. If you remember nothing else from this page, remember that ratio — and check the Color Space dropdown on every file node you create, because Maya will not check it for you.

The node names, per renderer

The shape of the graph is the same in all four; only the node names and the displacement plumbing change. Worth bookmarking if you move between renderers on different jobs.

Renderer Surface shader Normal HDRI dome Displacement
Arnold aiStandardSurface aiNormalMap → normalCamera aiSkyDomeLight displacementShader + aiDisplacement
Redshift RedshiftStandardMaterial RedshiftNormalMap → bump RedshiftDomeLight RedshiftDisplacement + tessellation
V-Ray VRayMtl VRayNormalMap → bump slot VRayLightDome VRayDisplacement on the shape
RenderMan PxrSurface PxrNormalMap → bump normal PxrDomeLight PxrDisplace + displacement bound
reviewed 20 September 2026

Building the network by hand, in Arnold

Written for Arnold because it is the Maya default; substitute node names from the table above for the others and the sequence is unchanged.

  1. Unpack the download somewhere permanent. Poly Haven ZIPs extract to a folder of maps sharing a name stem. Put it inside your project's sourceimages, or in a central library folder you will not reorganise later — Maya stores the path, and moving the folder afterwards breaks every file node pointing at it.
  2. Create an aiStandardSurface and assign it. Assign to your geometry before wiring anything, so you can judge each connection as you make it.
  3. Create one file node per map — and set the Color Space on each one as you go, not afterwards. sRGB for _diff only; Raw for everything else.
  4. Connect the straightforward channels. _diff to baseColor, _rough to specularRoughness, _metal to metalness. Use outColorR of a greyscale map for scalar inputs rather than outColor, or Maya will complain about type mismatches.
  5. Wire the normal through a converter. Create an aiNormalMap, connect the _nor_gl file node into its input, and connect its output to the surface's normalCamera. Never straight into a colour port.
  6. Handle displacement separately. Displacement is not a material connection — it goes to the displacement input of the shading group, and Arnold also needs subdivision enabled on the shape node. Without subdivision it simply does nothing, which is the second most common Poly Haven confusion after colour space.
  7. Add the dome light. aiSkyDomeLight, file node into colour, colour space Raw. Rotate the light transform, not the texture.

Switching to my own software now. Everything above is free and complete. What follows is the automated version, and I wrote it, so weigh it accordingly.

Or: click the thumbnail

Kiosk keeps the Poly Haven catalogue inside its browser and connects to Maya through a shelf button. With a live session running, clicking a texture set builds the whole network described above — correct nodes for the active renderer, correct colour space per file node, normal routed through the right converter, displacement bound where it belongs.

maya session · renderer: arnold
click rough_plaster_brick_4k

→ aiStandardSurface1 created + assigned
→ 5 file nodes, colour space set per channel
→ aiNormalMap1 → normalCamera
→ displacementShader1 bound to shading group

done · 0.4s

Questions

Is there a Poly Haven plugin for Maya?

No. The official Poly Haven addon is Blender-only. In Maya the workflow is to download a ZIP from the website, unpack it somewhere sensible, and build the shading network in the Hypershade by hand — once per texture set, per renderer.

Why do my Poly Haven textures look wrong in Maya but fine in the thumbnail?

Colour management. Maya has used an ACES OCIO config by default since 2022, and the file node's Color Space attribute decides how each map is interpreted. Base colour should be sRGB; roughness, metalness, normal, AO and displacement must be Raw. If Maya auto-assigns sRGB to a roughness map — which it will, based on the file extension — the values get pushed through a transfer curve they were never meant to see, and the surface reads wrong in a way that is hard to diagnose because nothing errors.

Which normal map should I use, nor_gl or nor_dx?

nor_gl. Maya and all four of the renderers here follow the OpenGL convention where green points up. The nor_dx file is for DirectX-convention engines and will make your surface light as though every bump is a dent. The maps look nearly identical in a thumbnail, which is why this one costs people so much time.

Do I connect the normal map to bump2d or aiNormalMap?

With Arnold, use aiNormalMap into normalCamera — it is purpose-built and handles tangent space correctly. bump2d set to "Tangent Space Normals" also works and is the more portable option if you move between renderers. What you must not do is connect a normal map directly to any colour input; that produces a blue-tinted surface and no normal detail at all.

How do I set up a Poly Haven HDRI in Maya?

With Arnold, create an aiSkyDomeLight and connect a file node holding the .hdr or .exr to its colour attribute, with the file node's colour space set to Raw or scene-linear — an HDR is already linear and must not receive an sRGB transform. Redshift, V-Ray and RenderMan each have their own dome light node that works the same way. Rotate with the dome light's transform rather than a place2dTexture so lighting and reflections stay locked together.

Is there a way to automate this?

You can script it — a Python tool that globs a folder, matches suffixes and builds the network is a reasonable weekend project, and many studios have one. Third-party asset managers do it too. Kiosk, which I develop, wires Arnold, Redshift, RenderMan and V-Ray based on the active renderer.

Related: the same walkthrough for Houdini and Cinema 4D, and the cross-library PBR suffix cheat sheet.

The free edition includes the Maya plugin, material wiring for Arnold, Redshift, RenderMan and V-Ray, and the Poly Haven library built into the browser.

Download the free edition

windows 10 / 11 · how the Maya plugin works