Skip to content

Interview Project Showcase

Welcome to the technical demonstration project showcasing an automated 3D rendering pipeline using Apache Airflow, Perforce and Kubernetes Jobs.

I did it as a way to demonstrate some of the skills required for the position. I also refrained from mentioning the role or company in the documentation as per the interview process guidelines.

You can also see the source code for this documentation project in the GitLab repository.

The result of the pipeline are the .blend files to render the animation below.

Watch it in 4K/60fps full screen for best experience.

As the notes are fast and synchronized with the visual elements, Bluetooth headphone latency might be perceptible. If so, use wired headphones or speakers for optimal audio‑visual sync. Watch on YouTube for the looped version, also automatically calculated by the animation scripts.

See many other examples of videos created by this same automation script.

Project Overview

The centerpiece is an automated 3D animation, physics-based, where marbles interact with musical instruments to create both visual and audio experiences.

Infrastructure

Proxmox VE Hypervisor, self-hosting Apache Airflow, a k8s cluster with 2 nodes, SMB storage, a Perforce server and many other auxiliary services in multiple VMs.

  • Proxmox VE - Virtualization infrastructure: storage, VMs and container management
  • Asset storage: Self hosted perforce server with SMB shared storage for assets. Read from prod depot during pipeline runs.
  • Orchestration: Airflow DAGs managing rendering workflows via Kubernetes jobs.
  • Kubernetes - Container orchestration and job management, also hosting this documentation site
  • Blender - Blender API automated by scripts and used for rendering using an external render farm.

Workflow Call Flow

sequenceDiagram
    participant User
    participant Airflow
    participant K8s
    participant FetchContainer
    participant Perforce
    participant SMB
    participant BlenderContainer

    User->>Airflow: Trigger DAG
    Airflow->>K8s: Submit asset fetch job
    K8s->>FetchContainer: Run fetch container
    FetchContainer->>Perforce: Fetch assets
    FetchContainer->>SMB: Store assets
    K8s->>Airflow: Fetch job completion
    Airflow->>K8s: Submit rendering job
    K8s->>BlenderContainer: Run Blender container
    BlenderContainer->>SMB: Access assets
    BlenderContainer->>SMB: Store outputs
    K8s->>Airflow: Rendering job completion
    Airflow->>User: Notification

Technologies Demonstrated here

Just a quick summary of the main technologies used in this project, not exhaustive:

  • Virtualization: Proxmox VE, KVM/QEMU
  • Containers: Kubernetes, Docker
  • Orchestration: Apache Airflow, Kubernetes Jobs
  • Version Control: Perforce Helix Core, Git/Gitlab
  • 3D Graphics: Blender 3D, Blender API, Cycles Render Engine
  • Automation: Python, Bash scripting, Linux
  • AI Integration: GitHub Copilot. I am using AI as a tool to speed up development and learning.