Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page contains chapter 2 of the Houdini to 3ds Max Alembic Workflow tutorial, covering the export of Particles.

 


Overview

...

Section
Column
width40%

As in the previous chapter, the Houdini setup will not be discussed in detail. You can check the provided vray_abc_export_particles_Chapter04.hip file for reference, which you can download from the button below.

A few notes when exporting particles from Houdini as Alembics to be loaded through the V-Ray Proxy Import:

  1. The equivalent of the pscale attribute is width. You can remap it in a Wrangle node with f@width = f@pscale;
  2. The v attribute is automatically remapped and read by V-Ray when motion blur is enabled. You should be aware, however, that v is not used when the topology/point count does not change - in this case V-Ray calculates the velocity (and thus - the motion blur) based on the transformations/deformations of the points.
    Anchor
    1.1
    1.1
  3. All custom attributes are preserved and can be accessed through the Vertex Color Texture 1. You need to feed it to a material, apply that material to the V-Ray Proxy and press the Update button on the texture to refresh the Channel Name drop-down menu on the Vertex Color texture.
 


You can download the project files from here:

UI Button
sizelarge
icondownload
titleDownload Project Files (260MBs)
urlhttps://drive.google.com/uc?export=download&id=1lEenBniHRzq1R0qM-I0TO1vEDU-fNSr21VdZMtkA33FvjmzoSPNSbhFSte_hCAkxr

Column
width60%

...


Create and Export Custom Attributes

...

...


Section
Column
width40%

Assuming you already have a particle simulation in your scene and you have brought it back to the SOP level using a DOP Import or a similar method, let's see how to create custom attributes and successfully carry them over to 3ds Max for use in a V-Ray Material.

Drop an Attribute Create node at the end of your chain and create a my_custom_attr attribute.

IMPORTANT: set the Type to FloatColor or FloatVector , and set the Size to 3.

Column
width60%

 

 


...


Section
Column
width40%

You can verify that the attribute type is correctly set up as 3flt (Clr) by middle-mouse-button click on the Attribute Create node.

The attribute should now be listed as my_custom_attr 3flt (Clr).

Column
width60%

 

...


...


Section
Column
width40%

The image to the right shows the result of v@my_custom_attr = set(0, 0, 1) inside an Attribute Wrangle node.

You can see that my_custom_attr 3flt is displayed instead.

To recap: creating the attribute directly inside the Wrangle node will not work! This is successfully written inside the Alembic, the V-Ray Proxy in 3ds Max also successfully imports it, even the Vertex Color texture displays it as an option for you. If you plug it and try to render, however, the output is black.

Generate your attributes with an Attribute Create SOP and only use the Wrangles to tweak them.

Column
width60%

 

 


...


Section
Column
width40%

The rest of the setup is Attribute Wrangle nodes used to set up custom float attributes. You don't need to go to the Attribute Create node for floats.

In the picture, a custom opacity attribute is mapped to a ramp whose input is the normalized age of the particle.

Column
width60%

 

...


...


Section
Column
width40%

The particles are exported to Alembic using the ROP Alembic Output node.

The Range is set to frames 1 to 120.

A Transform SOP is placed in the chain right before the Alembic ROP with the Uniform Scale set to 100. This is done to compensate for the difference between the default units of Houdini and 3ds Max.

Column
width60%

...


Import into 3Ds Max

...

...


Section
Column
width40%

Back to 3ds Max, go to Create → VRay → VRayProxy.

Load the exported Alembic file from the Proxy Files rollout → Mesh FileBrowse button...

You may need to go to the Proxy params rollout and enable Flip axis.

Column
width60%

 

...


...


Section
Column
width40%

The VRay Proxy node comes with an overall control for the size of the particles which can be found under the Alembic params → Particles → Width multiplier.

The Width multiplier will NOT overwrite the @width attribute coming from Houdini but simply scale it based on the specified value.

Column
width60%

 

...


...


Section
 
Column
width40%


Column
width60%
Before after
afterLabel4
beforeLabel2
Panel
borderStylenone

Panel
borderStylenone

Width Multiplier is set to 2/4

 

 


...


Section
Column
width40%

Assign a V-Ray Material to the V-Ray Proxy.

Anchor
1.1.1.1
1.1.1.1

Create a Vertex Color 1.1 texture. Note that the Channel Name drop-down is empty at the moment. You need to hook up the Vertex Color texture to the V-Ray Material and press the Update button for the attributes in the Alembic file to show up.

Assign the Vertex Color texture to the Diffuse map parameter of the V-Ray Material and press Update. You should now be able to see the attributes as separate vertex channels.

Column
width60%

...


Setup for Float Attributes

...

...


Section
Column
width40%

The exact same workflow applies for the Float attributes but with one extra step – you need to pay attention to the component of the Channel that the float attribute is assigned to, and specify that same component in the Sub Channel drop-down.

In the picture to the left, you can see that the opacity attribute we created in Houdini is mapped to Channel 4 under the Red (named r_opacity where r_ means the Red component, g_ means the Green component and b_ means the Blue component) component.

To pull ONLY the opacity attribute, we have set the Sub Channel drop-down to Red.

If we want to map the opacity based on the life attribute, we would have to pick Channel 3 and Sub Channel Green.

Column
width60%

 


Motion Blur

...

...


Section
Column
width40%

Finally, to render the particles with motion blur, you can create a V-Ray Physical Camera and select Enable motion blur under the Physical Camera → Shutter section of the parameters.

V-Ray automatically recognizes and uses the velocity attribute.The magnitude of the motion blur effect is determined by the Shutter Duration parameter.

UI Text Box
typeinfo

To recap: the @v attribute is used because the point count is changing. This is a simulation - each frame contains more and more particles. If the number of points was static, the @v attribute would be ignored.

Column
width60%

 


Footnotes

...

Anchor
1
1
1 (1.1) – The use of Vertex Color texture can be changed with either VRayUserColor or VRayUserScalar textures when reading color sets and attributes of an alembic.