This page provides information on V-Ray Proxy Objects.
VRayProxy imports geometry from an external mesh at render time only. The geometry is not present in the 3ds Max scene and does not take up any resources. This allows the rendering of scenes with many millions of triangles, more than 3ds Max itself can handle.
VRayProxy also directly supports Alembic files. Additional information can be found in the following places:
||Create menu|| > V-Ray > V-Ray Proxy
click in viewport
||Create panel|| > Geometry > V-Ray category > V-Ray Proxy button
click in viewport
||V-Ray Toolbar|| > V-Ray Proxy button
Exporting a Mesh to a File
Before importing a mesh through a VRayProxy object, you need to create the mesh file first. This can be done in multiple ways:
- Through the Quad menu: Select the meshes you want to export, right-click in the viewport and select the V-Ray mesh export option to display the Mesh Export dialog.
- Dialog from MaxScript: Select the meshes you want to export and then type doVRayMeshExport() in the MaxScript Listener window to display the Mesh Export dialog.
- Direct export from MaxScript: Select the meshes you want to export and then use the vrayMeshExport() function. For more information, please see the MaxScript page.
The function returns ok if the .vrmesh file was exported successfully, and undefined otherwise.
Once a mesh is exported to a VRayProxy, the mesh can be imported back at any time. There are two ways to import a mesh back from a VRayProxy object:
- Use the Import as mesh button from the interface.
- Direct import from MaxScript: Select the VRayProxy object you want to import the mesh from and then use the vrayMeshImport() function. For more information, please see the MaxScript page.
The function returns an array of the newly created mesh objects, or undefined when there are no valid VRayProxy objects specified.
Mesh Export Dialog
The Mesh Export Dialog specifies the mesh file as well as some export options.
Folder – Specifies the folder where the mesh file(s) will be created.
Export all selected objects in a single file – Takes all selected objects and merges them into one mesh file. This option also stores the transformations of the selected objects. When importing the file with a proxy object, it must be centered at the origin if you want the objects to be in the same place. Also, since the imported mesh is rendered using the material of the proxy object, all meshes from the file will render with that material. You must use sub-object materials and different material IDs if you want the meshes to have different materials.
Export each selected object in a separate file – Creates one file for each selected object. The name of each file is derived from the name of the corresponding 3ds Max node. The transformation of an object is not included in its mesh file, and the corresponding proxy must have the same transformation as the original object if it is to appear in the same place. Note that you can use this option even with a single object, which will cause the object's pivot point to be preserved in the exported .vrmesh file.
File – Specifies the name of the file when Export all selected objects in a single file is selected. A path does not need to be specified; the Folder path will be used.
Specify preview mesh – When enabled, uses a mesh to preview the proxy in the viewport.
Pick preview mesh – Specifies the mesh to be used as a preview for the proxy in the viewport.
Export animation – When enabled, exports the animation from an animated mesh in the .vrmesh file.
Frame range – Specifies how to determine the range of animation frames to be exported into the .vrmesh file.
Scene animation range – Exports the whole animation into the .vrmesh file.
Frame range – Exports only the section of the animation specified with the Start Frame and the End Frame parameters.
Redraw views during export – When enabled, plays the animation in the viewport while it is being exported. This is an easy way to monitor the progress of the export.
Automatically create proxies – When enabled, creates proxy objects for the exported meshes. The proxies will have the correct transformations and materials derived from the original objects. The original objects will be deleted.
Export point clouds – When enabled, adds a point cloud representation of the mesh separated into different levels of detail. The various levels of detail can be used by proxies for saving memory when rendering distant objects.
Lowest level point size – Determines the size of point cloud disks at the most detailed level. If this value is small, point clouds rendered at the lowest level will appear closer to original mesh but will use more memory. For more information, see the Lowest Level Point Size Parameter example below.
Faces in preview % – Specifies how many faces will be used to show a preview of the proxy in the viewport.
Warn for existing files – When enabled, V-Ray will display a warning when saving over an existing file.
Min preview faces – Sets the minimum amount of faces that will be used as a preview on importing using VRayProxy.
Max preview faces – Sets the maximum amount of faces that will be used as a preview on importing using VRayProxy.
Preview type – Specifies the method for producing a preview mesh from the original geometry. Previous versions of V-Ray have used the Face Skipping (very fast) method.
Vertex Clustering (fast) – Uses a uniform grid with at most one vertex in each cell. This method is very fast and robust, but will not preserve fine details.
Refined Clustering (quality) – A two-stage algorithm that uses vertex clustering to get the job halfway done. Then a more sophisticated but slower algorithm finishes the mesh simplification. This method produces higher quality meshes than the Vertex Clustering (fast) method alone but is slightly slower.
Face skipping (very fast) – Displays randomly picked faces from the original mesh. This is the fastest algorithm, but it doesn't produce a connected mesh.
Faces in voxel – Specifies the maximum number of faces in a voxel after voxel subdivision.
Optimize for instancing – When enabled, each mesh object will occupy a whole voxel.
Create Multi/Sub-Object Mtl – This option is available when multiple objects with different materials are exported. When enabled, V-Ray will assign a Multi/Sub-Object material to the created proxy and the sub-materials will be assigned to the appropriate faces automatically.
Condense Multi Mtl – When enabled, V-Ray makes sure that only unique materials are exported.
Pressing the OK button will create the mesh files and the proxy objects. The export process may take some time depending on the amount of geometry that must be processed.
Example: Lowest Level Point Size Parameter
This example demonstrates the effect of the Lowest level point size parameter. Smaller values mean that more point cloud disks with smaller radii will be used to approximate the original mesh geometry at the lowest level (the level rendered closest to camera). Increasing this size will make the approximation rougher, with a smaller number of disks that are larger in size. While rendering, it is not possible to achieve better detail than the one at the lowest level.
Lowest level point size = 2.0
Lowest level point size = 4.0
Lowest level point size = 8.0
Lowest level point size = 16.0
Lowest level point size = 24.0
The .vrmesh File Format
Meshes are exported to a special .vrmesh file format. This file format contains all geometric information for a mesh including vertices and face topology, texture channels, face material IDs, smoothing groups, and normals. In short, it has everything needed to render the mesh. In addition, the mesh is preprocessed and subdivided into chunks for easier access. The file also contains a simplified version of the mesh used for preview purposes in the viewports. Also, there is an option for adding point cloud data to the file, which is a simplified geometric representation of the mesh in the form of 3D disks with different levels of detail. Each level comprises of disks with equal radius lengths which is greater for levels of lower detail and smaller for the more detailed ones. When the object is rendered, a point cloud geometry level is chosen depending on the distance between the object and the camera; for distant objects, lower resolution point clouds are used. Thus the original mesh is replaced by the simpler point cloud geometry with the appropriate level of detail allowed by distance.
It is important to realize that the mesh is in a "ready to render" format. No further modifications to the mesh are expected. You can't apply modifiers to the mesh or animate it in any way except if you animate the position/orientation of the proxy object. If you need to make changes to the mesh, you can make the changes in 3ds Max, import the mesh back as an Editable Mesh (see the Import section below) and re-export it back to a .vrmesh file.
The VRayProxy object can load and render Alembic files (.abc). The supported geometry types are polygonal meshes (without subdivision surfaces), spline curves and particles.
In older V-Ray versions, UV coordinates in the Alembic file were always imported as mapping channel 0. This meant that in Bitmap textures for materials applied on Alembic proxy objects, you needed to select Vertex Color Channel:
This was essentially the same as when bringing in .vrmesh files created in other applications (e.g. Maya).
Starting with V-Ray 3.0, you can use the Force first map channel option to remap the 0th mapping channel to the more usual map channel 1:
V-Ray will recognize velocity information for motion blur if it is stored either as standard Alembic velocity or as a 3D vector array property called arbGeom.v or arbGeom. velocities. Additional Alembic color sets are imported as mapping channels with indices greater than 0 (i.e. 1, 2, etc.). The VRayProxy has some additional parameters related to Alembic files.
Creating a Proxy Object
After exporting a mesh to a .vrmesh file, a proxy object is needed to represent it in the 3ds Max scene. To create a proxy object, go to the Create panel and choose the V-Ray category, then click the VRayProxy button and click in a viewport to create the actual proxy object. A dialog box will appear that allows you to choose the .vrmesh file to import.
Mesh file – Specifies the source .vrmesh or .abc file. Property tags can be used in the file path as a way of creating a template file path. This gives the user the ability to change the mesh file for each instance of the proxy object. For more information, see the Template File Paths Using Property Tags example below.
Preview override – The specified file (.vrmesh or .abc) will be used to override the VRayProxy display in the Viewport when the Display mode is set to preview from file or preview from file (faces).
Expand # to frame number – When enabled, the symbol "#" can be used in the file name to specify that the loaded proxy is a part of an animation sequence. V-Ray will then load the other frames accordingly.
Flip axis – When enabled, switches between the Y and Z-axis of the proxy being used as a vertical axis. It aligns the vertical axis of the proxy with the vertical axis in the scene in cases where the proxy was not exported from 3ds Max or when loading Alembic files.
Scale – Allows the proxy geometry to be quickly scaled up or down.
Example: Template File Paths Using Property Tags
Property tags provide a great amount of flexibility with V-Ray Proxy objects by allowing users to template file paths. By using property tags in the Mesh file path, the user can specify different mesh files for each instance of the proxy object.
Tags are defined inside a path between the < and > brackets. Tags can be assigned different values for each node in the User Defined tab of the Object Properties window. At render time, V-Ray takes the tag name and looks it up in the node's User Defined properties to determine the value of the tag.
For example, suppose there are several different car mesh files with names such as "car01.vrmesh", "car02.vrmesh", etc. The user can specify the path in Mesh file as C:\car_meshes\<car>.vrmesh. Then in the User Defined Object Properties of the V-Ray Proxy object, the value of the property car property tag can be set to any of the mesh file names. For example, car=car01 or car=car02. During rendering, V-Ray will evaluate the tag for each instance of the proxy object and load C:\car_meshes\car01.vrmesh or C:\car_meshes\car01.vrmesh.
Property tags are also implemented similarly with the VRayHDRI texture map.
Display – Controls the display of the proxy in the viewports.
bounding box – Represents the mesh as a box in the viewports.
preview from file – Displays the mesh preview info that is stored in the .vrmesh file, but only shows the edges of the object.
preview from file (faces) – Displays the mesh preview info that is stored in the .vrmesh file. but only shows the faces of the object.
point – Represents the mesh as a point.
show whole mesh – Previews the entire mesh.
Preview level – Reads the subdivision levels as they were in the original Mudbox setup and a preview can be loaded for the proxy with the corresponding faces. Level 0 has the lowest face count.
LOD Scale – Sets the maximum number of pixels an edge can span over before it is subdivided. This way you can control the loaded vrmesh level for rendering.
VRayProxy files can be exported from Mudbox using a Mudbox plugin that is available here. This reads the subdivision levels as they are in a Mudbox scene and after exporting as a VRayProxy to be loaded with the corresponding faces. In that way, level 0 of the Mudbox sculpt would be the lowest level. Also of note is that LOD scale works just for vrmeshes exported from Mudbox using the Mudbox to VRayProxy plugin, and sets the maximum number of pixels an edge can span over before it is subdivided. In this way, you can control the loaded vrmesh level for rendering.
Playback – Specifies a mode for playing back animation.
Loop – Loops the animation skipping back to the first frame once it has finished.
Play once – Plays the animation just once.
Ping-pong – Loops the animation by playing it backwards once the last frame has been reached, and then playing it forward again when the first frame is reached.
Still – Does not play the animation. Instead, just one frame of the animation is shown. The user can select which frame is displayed with the Offset (frames) parameter.
Offset (frames) – Offsets the beginning of the animation by given number of frames. Positive and negative values can be used.
Speed – A multiplier for the speed of the animation. Negative values will make the animation play backwards.
Import as mesh – Imports the geometry from the .vrmesh as an Editable Mesh object. Note that the new mesh will be created at the coordinate system origin (0,0,0), and not at the current location of the VRayProxy object.
Use explicit normals – In cases where the original mesh has explicit information about vertex normals, this information is also saved in the .vrmesh file when the mesh is exported. Enabling this option makes sure that the explicit normals information contained in the proxy is taken into account during the import.
Weld vertices in result – During a .vrmesh file export, V-Ray might split the original mesh into smaller chunks that can be loaded independently of one another. This can cause some vertices to be duplicated in more than one chunk. Enabling this option causes V-Ray to perform a weld operation after the mesh is imported so that split vertices are merged.
Use if present – Enables the usage of point cloud data if available.
Level multiplier – Determines the waypoint cloud levels are loaded. A value of 1.0 means that the level to load is determined exactly by the distance from the camera to the object. A value smaller than 1.0 means that the level will be of greater detail than required by distance. Values greater than 1.0 mean that the resolution of the level will be smaller than the one determined by distance. A value of 0.0 means that no point cloud level will be loaded and the original mesh will be rendered instead. For more information, see the Level Multiple Parameter example below.
Example: Level Multiplier Parameter
This example demonstrates how the Level multiplier parameter controls proxy rendering at different distances to the camera. When the value is 0.0, no point clouds are loaded. When the value is 1.0, the exact level of detail is loaded for rendering according to the object's distance from the camera. Values between 0.0 and 1.0 bring more detail than specified at the camera distance, while values higher than 1.0 bring less detail than specified.
Zoom is 0.5x
Zoom is 1x
Zoom is 2x
Level multiplier = 0.0
Level multiplier = 1.0
Level multiplier = 10.0
Force first map channel – When enabled, V-Ray will force the first mapping channel stored in the proxy file (.vrmesh or .abc) to be remapped to the specified 3ds Max map channel.
First map channel – If Force first map channel is enabled, this value specifies the index of the map channel.
Render mode – Controls how particles are rendered.
Sphere – Renders particles as spheres.
Point – Renders particles as points
Tessellate hair – Enabled dynamic tessellation using the Edge length value.
Edge length – The edge length used for dynamic tessellation.
Proxy Mesh Visibility
These options control the visibility of a proxy's components when more than one mesh has been exported. The visibility can be controlled either by the objects' names or by object IDs.
List type – Specifies the meaning of the lists.
Exclude– When enabled, the selected objects in the list will be invisible.
Include – When enabled, only the selected objects in the list will be visible.
Object name list – Lists all the object names in the proxy file. Enable the objects to be included or excluded.
Object id list – Lists all the Object IDs in the proxy file. Enable the Object IDs to be included or excluded.
This section holds the controls for the V-Ray proxy when an Alembic file (.abc) is loaded.
Starting object – Specifies a starting path in the Alembic file; only objects below that path will be rendered. The path may start with ABC/ or it may be omitted.
Use full names – When enabled, the full path to each geometry set in the Alembic file is displayed in the Proxy mesh and Proxy hair visibility lists.
Recompute bounding box – When enabled, forces V-Ray to re-compute the bounding box for the geometry before rendering. When disabled, V-Ray will use the bounding box specified in the Alembic file. However, sometimes these bounding boxes are not correct, and rendering will also be incorrect. Enable this option to avoid such issues. Note that this option might slow down rendering.
Instancing – When enabled, turns instancing on for the Alembic mesh.
Compute normals – When enabled, forces smoothing on geometry normals in cases where they were not originally smoothed.
Smooth angle – When Compute normals is enabled, faces that meet at angles below this angle will be smoothed. Units are in degrees.
Preview count – Specifies how many faces will be used to show a preview of the proxy in the viewport.
Subdivide all meshes – When enabled, subdivides the meshes by the Subdiv level.
Subdiv level – Controls the amount of subdivision to apply to the meshes.
Preserve geometry borders – When enabled, the subdivided geometry falls within the borders of the original mesh.
Subdivide UVs – When enabled, the UVs of the object are also subdivided.
Preserve map borders – Specifies which map borders will remain unchanged.
None – No map borders will be preserved.
Internal – Preserves only internal map borders.
All – Preserves all map borders.
Preview count – Specifies how many splines will be used to show a preview of the proxy hair in the viewport.
Width multiplier – Controls the hair width during rendering.
Preview count – Specifies how many particles to show in the viewport.
Width multiplier – Controls the size of the particles when rendering.
- The geometry generated by the proxy object is not modifiable. Any modifiers applied to the VRayProxy object will be ignored.
- V-Ray will automatically convert proxies that load the same .vrmesh files to be instanced duplicates in the scene to save memory when those proxies have the same settings. However, if two proxies that point to the same .vrmesh file have different settings, that .vremsh file will be loaded twice.
- Materials are not saved in the .vrmesh file. Instead, the geometry will be rendered with the material applied to the VRayProxy object. This is because third party materials and procedural textures would be difficult to describe in a general way. In addition, you may want to edit the material independently of the mesh.
- The resulting .vrmesh files can be rendered outside of 3ds Max – for example, by the standalone version of V-Ray, or V-Ray for Maya.
- Standard shadow maps will not include information about the proxy objects. If you want the proxy objects to cast shadows, you should use Ray Traced Shadows | VRayShadow or Shadow Maps | VRayShadowMap shadow types.
- You can convert .ply and .obj files to .vrmesh files with the help of the ply2vrmesh converter tool.
- The V-Ray SDK has methods for reading and writing of .vrmesh files.
Official Alembic file format home page: http://www.alembic.io/