Building OpenRV on macOS with DNxHD support

Assumptions:

Apple Silicon/arm64 Architecture – build machine has M4 CPU
macOS Sequoia 15.6.1
All builds to be done in $HOME/src. If that folder doesn’t exist:
mkdir ~/src; cd ~/src

Basics:

  1. Xcode 16.4, download from Apple App Store
    Install Xcode command line tools – xcode-select —install
  2. Qt 6.5.3 – Download the installer from https://my.qt.io/download, you’ll need an account to do this, then enable “Archive” to install this version
  3. Homebrew
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew update
  4. Install Homebrew dependencies
    brew install ninja readline sqlite3 xz zlib tcl-tk@8 autoconf automake libtool python@3.11 yasm clang-format black meson nasm pkg-config glew wget yaml-cpp pystring ptex freetype dcmtk qt@5 python@3.11
  5. Install an older version of cmake
    cd ~/Downloads; wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-macos-universal.dmg; open ./cmake-3.31.7-macos-universal.dmg
  6. Drag and drop the CMake icon to the Applications folder, then install cmake to /usr/local/bin
    sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install=/usr/local/bin

First library version mismatch: yaml-cpp

brew unlink yaml-cpp
mkdir -p /opt/homebrew/Cellar/yaml-cpp/0.7.0-static
cd ~/src
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
git checkout 0.7.0
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/homebrew/Cellar/yaml-cpp/0.7.0-static -DBUILD_SHARED_LIBS=OFF -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF
cmake --build build -j
sudo cmake —install build
sudo ln -sfn /opt/homebrew/Cellar/yaml-cpp/0.7.0-static /opt/homebrew/opt/yaml-cpp

Second library version mismatch: fmt

brew unlink fmt
mkdir -p /opt/homebrew/Cellar/fmt/9.1.0
cd ~/src
curl -LO https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0.tar.gz
tar xzf 9.1.0.tar.gz
cd fmt-9.1.0
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/homebrew/Cellar/fmt/9.1.0 -DBUILD_SHARED_LIBS=ON -DFMT_TEST=OFF -DFMT_DOC=OFF
cmake --build build -j
sudo cmake --install build
ln -sfn /opt/homebrew/Cellar/fmt/9.1.0 /opt/homebrew/opt/fmt

Building RV:

  1. Download the source code
    git clone --recursive https://github.com/AcademySoftwareFoundation/OpenRV.git
    cd OpenRV
  2. Make sure the build knows about Qt 5
    export Qt5_ROOT="$(brew --prefix qt@5)"
  3. Make sure that we are using the right VFX platform
    export RV_VFX_PLATFORM=CY2024
  4. Initialize the RV build command aliases
    source rvcmds.sh
  5. Make and load the Python 3.11 virtual environment
    python3.11 -m venv .venv
    source .venv/bin/activate
  6. Upgrade pip to the latest version
    pip install --upgrade pip
  7. Setup RV
    rvsetup
  8. Configure RV with support for DNxHD
    rvcfg -DRV_FFMPEG_NON_FREE_DECODERS_TO_ENABLE="dnxhd" -DRV_FFMPEG_NON_FREE_ENCODERS_TO_ENABLE="dnxhd" -DCMAKE_PREFIX_PATH="/opt/homebrew/opt/yaml-cpp:$(brew --prefix pystring):/opt/homebrew/opt/fmt"
  9. Build RV
    rvbuild
  10. Install RV – just makes the RV.app package for macOS
    rvinst
  11. Test it, to make sure it works
    cd _install; open RV.app

Extras/Installer Package:

  1. Install create-dmg
    brew install create-dmg
  2. Build the installer package – sign with your Apple Developer ID certificate if you have one
    create-dmg --volname "RV Installer" --window-pos 200 120 --window-size 600 400 --icon-size 100 --icon "RV.app" 175 190 --hide-extension "RV.app" --app-drop-link 425 190 --codesign "Developer ID Application: Alan Smithee Films Inc. (1234567890A)" ~/src/OpenRV-v3.0.0-arm64-Installer.dmg RV.app

VFX Supervision on “Breathe”

VFX work on Thunder Road’s “Breathe” by Brainstorm Digital

In March of 2023, I met with Thunder Road, and during the initial meeting, they asked if I might be interested in taking over VFX Supervision duties on a film they had recently completed principal photography on – “Breathe“, directed by Stefon Bristol, and starring Jennifer Hudson, Milla Jovovich, Quvenzhané Wallis, and Sam Worthington.

This movie is set in Brooklyn, New York in the year 2039. In this world, due to the ravages of man-made climate change, the oxygen has vanished from Earth’s atmosphere, and the oceans have evaporated. All that remains is a desert wasteland, devoid of life, where all oxygen-dependent life forms have gone extinct. All, except for a very clever family, who have figured out a way to produce oxygen, grow food, and survive inside a heavily-fortified former nursery in Bushwick.

The movie was entirely shot in Pennsylvania. Exteriors were filmed in a neighborhood in Chester, PA; interiors on a sound stage, and a few additional exteriors were shot in downtown Philadelphia.

The VFX challenge here was to take the exterior photography and realistically set it in a post-apocalyptic, desiccated New York. Special care had to be taken to ensure that no green plant life was visible anywhere. In addition, we had to fully consider how the built environment would react to an atmosphere devoid of oxygen and moisture. Metal would not rust, and concrete would rapidly lose its structural integrity, as two examples.

In order to bring our director’s vision to life, I turned to the following creative partners:

We were able to complete a total of 394 visual effects shots in a period of 10 weeks. These included construction of 7 distinct all-CG environments; 6 NYC environments were done by Brainstorm, and the Philadelphia exteriors were done by Nexodus.

I couldn’t be more proud of the work that we were able to pull off on this project. The environments that we built really contributed to the sense of isolation and dread that the heroes in our story felt. Principal photography did not take place in many exterior locations, and the VFX in this film really fleshed out the world that Stefon Bristol was trying to build.

As a parting gift, Mr. Bristol was kind enough to reward me with a main-on-end credit on his film – my very first! It looks good here coming from the Avid, but it looked even better seeing it on the big screen in April of this year!