UPDATE 2.2.0 - September 30th, 2019

The plugin has been updated to support AliceVision 2.2.0! In order for it to work, update the Game Development Toolset to build 1.202 or newer! It also requires updated binaries! See download link in installation instructions below.


After updating, make sure you use the new definition of the tools! Opening a .hip with previously created node instances will still use the older definition! Either create a new instance of the tools, or update their type!

Release Notes (Highlights)

  • Texturing: Largely improve the Texturing quality using Multi-Band Blending technique.
  • Texturing: Support for RAW image files: Libraw update and fix its usage in OpenImageIO (fix color shift and use correct gamma).
  • Texturing: Performance optimization by iterating over multiple output textures at the same time.
  • Texturing: Add support for UDIM in UV mapping and use it by default. 
  • Meshing: New option to export the full raw dense point cloud in the Meshing software (with all 3D points candidates before cut and filtering). 
  • Meshing: Adds an option to export color data per vertex and MeshFiltering correctly preserves colors.
  • PrepareDenseScene: Add experimental option to correct Exposure Values (EV) of input images to uniformize dataset exposures
  • See FULL LIST

 UPDATE 2.1.0 - April 11th, 2019

The plugin has been updated to support AliceVision 2.1.0, including support for Linux! In order for it to work, update the Game Development Toolset to build 1.143 or newer! It also requires updated binaries! See download link in installation instructions below.


Release Notes (Highlights)

  • More complete sensor database and better matching as well as explicit status for lens initialization.
  • Support for reconstruction with projected light patterns and texturing with another images set.
  • Better estimation of the space to reconstruct to limit the reconstruction zone. This avoids reconstructing low quality and useless areas around the main object/environment.
  • Reduce IO and intermediate files in MVS part of the pipeline.
  • See FULL LIST

Note

This plugin requires an NVIDIA graphics card with Cuda 2.0+ support.

Description

AliceVision is a Photogrammetric Computer Vision Framework which provides a 3D Reconstruction and Camera Tracking algorithms, which can be found on Github. It is being developed by the post-production company called Mikros Image,  about whom you can find more information here: About AliceVision

Due to its command line capabilities, we have been able to successfully create an implementation inside Houdini as part of the GameDevelopmentToolset. (FREE)

AliceVision is licensed under the MPL2 license

Quick Demo

Installation Instructions 

  1. Install the Game Development Toolset 1.202 or newer
  2. Run Houdini and Verify the nodes are being properly loaded
  3. Download Alicevision_Windows or Alicevision_Linux below depending on your platform
  4. (Optionally) Download Sample Content
  5. Extract the Alicevision-2.2.0 zip file somewhere without whitespace (space) in the path. 
    • Correct: C:\My\File\Path\Alicevision-2.2.0\ Incorrect: C:\My File Path\Alicevision-2.2.0\
  6. (Optional but highly recommended) Add to your houdini.env:
    • Windows --> ALICEVISION_PATH = C:\Your\Path\Alicevision-2.2.0 
    • Linux --> ALICEVISION_PATH = "/Your/Path/Alicevision-2.2.0"
Restart Houdini!
You should have 7 nodes under the Gamedev/Alicevision Tab Submenu in the Geometry Context.

Note

You can also decide not to set the ALICEVISION_PATH houdini.env variable, but that will require you to link to the binaries on the AV Initialize node every time you create a new node instance. It is therefore for convenience sake recommended you use houdini.env


Usage Instructions

Basic

  1. Get to the geometry context by creating a geometry node and enter it.
  2. Create the AV Photogrammetry sop.
On the AV Photogrammetry sop:
  • Set the Project Name parameter. (Ensures unique cache id for current process)
  • Set the Cache Directory.
  • Click the Add Images button on the Initialize tab to configure which images need to be processed.
  • Optionally tweak any of the other parameters.
  • Click the add images button on the Initialize tab on AV Photogrammetry to configure which images need to be processed.


Advanced

If you wish to customize more than just the very few basic parameters on the AV Photogrammetry sop, you can also construct the internal node network using the provided nodes yourself. Do this in the following order:

  1. AV Initialize - Configure which images to process.

  2. AV Analyze Images - Match all features between candidate image pairs.

  3. AV Structure From Motion - Detects 3D points with position and orientation and calibrate the cameras accordingly.

  4. AV Depth Map - Retrieves the depth value of each pixel from the cameras.

  5. AV Meshing - Creates a dense geometric surface representation of the scene.

  6. AV Texturing - Texture the generated mesh


PRO-TIP

There are a few node specific parameters you can change to speed up some of the steps. (For example for previews)

Structure from Motion: Set max number of matches to anything above 0 (default of 0 is unlimited). This reduces the number of images Alicevision tries to match.

Depth Map: Increase the down-sample amount.

Texturing: Reduce the generated texture resolution.

Node Descriptions

AliceVision Nodes 

In the current version there are 7 Nodes, which can be found in the geometry context under GameDev/AliceVision. 

AV_Initialize

This node is the start of the AliceVision node-network, and where you add your images. Simply click “Add Images” and a dialog will launch in order for you to select your chosen images. The image list is then stored as a detail attribute and will be passed on to the next nodes. It is therefore essential this node is always part of you network.

After you have added the images, set the Cache Directory and Project Name. The project name will ensure a new Cache Directory subfolder, meaning it will not overwrite previously processed data.


AV_Analyze Images

The objective of this step is to extract distinctive groups of pixels that are, to some extent, invariant to changing camera viewpoints during image acquisition, and to match all features between candidate image pairs.



AV_Structure_from_Motion

The objective of this step is to understand the geometric relationship behind all the observations provided by the input images, and infer the rigid scene structure (3D points) with the pose (position and orientation) and internal calibration of all cameras. The output of this node will be a point cloud.


AV_Depth_Map

The objective of this step is to retrieve the depth value for each pixel in the images and cameras that had previously been resolved by Structure From Motion. This can take a very long time depending on the resolution and number of images provided.


AV_Meshing

The objective of this step is to create a dense geometric surface representation of the scene. The output of this node is a high-poly mesh, which can be used for any further processing in Houdini.


AV_Texturing

The objective of this step is to texture the generated mesh. The output of this node is a high-poly mesh with very basic UVs and textures. It is highly recommended to reproject the textures on a meshwith custom UVs. (For example using the Games Baker or Simple Baker)

Note

For better analysis of your model, you might want to change some of the default display settings. This can by done by hitting D while on the viewport. As well as add an Ambient Light to your scene, cranked to white. 


Detailed Documentation (WIP)

The team behind AliceVision has also been working on Meshroom, which is a free, open-source 3D Reconstruction Software based on the AliceVision framework. The documentation for Meshroom contains very useful information regarding the steps AliceVision goes through, including descriptions of every tweakable parameter. This can be found HERE.


Technical Information

System Requirements

  • Windows 7 or newer (x64), Linux

  • NVIDIA CUDA-enabled GPU (compute capability >= 2.0)

Minimum Requirements

  • RAM: 8Gb+

  • HDD: 2Gb+ for cache and models

  • CPU: No older than 3yr

  • GPU: NVIDIA

Recommended Requirements

  • RAM: 32Gb+

  • CPU: i7/Ryzen 7 or better

  • GPU: NVIDIA GTX1070+

Compatibility Info 

  • The Plugin is currently only available on Windows. 

FAQ

  • What image formats are supported?
    • '.jpg', '.jpeg', '.tif', '.tiff', '.png', '.exr', '.rw2', '.cr2', '.nef', '.arw'
    • AliceVision also supports other formats part of OpenImageIO, but it is recommended to stick to the ones listed above.
  • Can I provide a boundingbox around my pointcloud to restrict what gets used for further processing?
    • No, this is currently not supported by Alicevision.

Known Issues

  • Error reporting is relatively light right now
  • Cameras currently cannot be extracted from the scan due to a bug in Alembic import in Houdini. This should soon be resolved.

Trouble Shooting

  • No output generated

Try setting the project name to something you haven’t used yet. The problem might be caused by previous cache files interrupting the current process.

  • Alicevision not found

Make sure you either set the ALICEVISION_PATH houdini.env, or link to the Alicevision directory on the AV nodes themselves.

  • Other

Please send support questions to support@sidefx.com

Related Links

CREATED BY

PAUL AMBROSIUSSEN

Paul Ambrosiussen is currently a Technical Artist and Game Tools Developer at SideFX Software. He finished his BASc in International Game Architecture and Design at NHTV University of Applied Sciences in Breda. Paul enjoys writing tools to support effective art-pipelines, and maintaining tool / workflow quality for the artists he is assisting. His goal is to help others create amazing things in a better, faster and more flexible way. He creates tutorials, gives live lectures, attends events, and presents custom workshops to customers.

More from Paul Ambrosiussen