
************
Introduction
************

Volume objects are containers used to represent `OpenVDB <https://www.openvdb.org/>`__ files in Blender.
OpenVDB is a library and file format for the interoperability and storage of volumetric data.
OpenVDB files may be generated by other software such as Houdini,
or from Blender's :doc:`fluid simulation cache </physics/fluid/type/domain/cache>`.

Volume objects can be created from the Add menu in the 3D Viewport,
or by dragging and dropping vdb-files into Blender.
For animations, a frame sequence of OpenVDB files can be imported.

.. figure:: /images/modeling_volumes_introduction_example.png

   :abbr:`WDAS (Walt Disney Animation Studios)` cloud data set rendered in wireframe, Workbench, and Cycles.


Rendering
=========

Rendering volumes works the same as rendering smoke simulations. By default,
the :doc:`Principled Volume shader </render/shader_nodes/shader/volume_principled>`
is used for rendering volume objects. It will use grids named ``density``,
``color`` and ``temperature`` by default. If these are not available,
another grid name must be chosen in the shader nodes.


Limitations
===========

- OpenVDB excels at representing sparse volumes, that aren't necessarily
  concentrated within a tight bounding box but may be spread out through space.
  However, in Blender, these are still rendered as dense volumes
  which is not ideal for performance and memory usage. This will be improved in future releases.

- OpenVDB files can also store level sets and points.
  While level set grids can be read, there is no current support for rendering them as surfaces.
  Importing OpenVDB points is not supported.
