mirror of
https://github.com/lighttransport/tinyusdz.git
synced 2026-01-18 01:11:17 +01:00
Created a comprehensive environment for comparing TinyUSDZ with OpenUSD: - Setup scripts for building OpenUSD with Python bindings using clang-20 - Python comparison script (compare_usd_example.py) for testing both libraries - C++ build examples using both Makefile and CMake - Example C++ code that loads USD files with both libraries - Comprehensive documentation for setup and usage The environment allows side-by-side comparison of USD file parsing, metadata extraction, and scene traversal between TinyUSDZ and OpenUSD. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
197 lines
5.4 KiB
Bash
Executable File
197 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# OpenUSD Setup Script for comparison with TinyUSDZ
|
|
# This script clones, builds, and installs OpenUSD with Python bindings
|
|
|
|
set -e # Exit on error
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
OPENUSD_DIR="${SCRIPT_DIR}/OpenUSD"
|
|
DIST_DIR="${SCRIPT_DIR}/dist"
|
|
VENV_DIR="${SCRIPT_DIR}/venv"
|
|
|
|
echo "================================================"
|
|
echo "OpenUSD Setup Script"
|
|
echo "================================================"
|
|
echo "Working directory: ${SCRIPT_DIR}"
|
|
echo ""
|
|
|
|
# Step 1: Clone OpenUSD repository
|
|
echo "Step 1: Cloning OpenUSD repository (release branch)..."
|
|
if [ -d "${OPENUSD_DIR}" ]; then
|
|
echo "OpenUSD directory already exists. Pulling latest changes..."
|
|
cd "${OPENUSD_DIR}"
|
|
git fetch origin
|
|
git checkout release
|
|
git pull origin release
|
|
else
|
|
git clone -b release https://github.com/lighttransport/OpenUSD.git "${OPENUSD_DIR}"
|
|
fi
|
|
|
|
# Step 2: Setup Python 3.11 with uv
|
|
echo ""
|
|
echo "Step 2: Setting up Python 3.11 with uv..."
|
|
if ! command -v uv &> /dev/null; then
|
|
echo "Installing uv..."
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
# Add uv to PATH for current session
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
fi
|
|
|
|
# Create virtual environment with Python 3.11
|
|
echo "Creating virtual environment with Python 3.11..."
|
|
cd "${SCRIPT_DIR}"
|
|
uv venv "${VENV_DIR}" --python 3.11
|
|
|
|
# Activate virtual environment
|
|
echo "Activating virtual environment..."
|
|
source "${VENV_DIR}/bin/activate"
|
|
|
|
# Step 3: Install Python dependencies
|
|
echo ""
|
|
echo "Step 3: Installing Python dependencies..."
|
|
uv pip install PyOpenGL PySide2 numpy cmake>=3.26
|
|
|
|
# Step 4: Setup compilers
|
|
echo ""
|
|
echo "Step 4: Setting up C/C++ compilers..."
|
|
|
|
# Allow user to override compilers via environment variables
|
|
# If not set, try to find suitable defaults
|
|
if [ -z "$CC" ]; then
|
|
if command -v gcc &> /dev/null; then
|
|
export CC=gcc
|
|
elif command -v clang &> /dev/null; then
|
|
export CC=clang
|
|
else
|
|
echo "Error: No C compiler found. Please install gcc or clang."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CXX" ]; then
|
|
if command -v g++ &> /dev/null; then
|
|
export CXX=g++
|
|
elif command -v clang++ &> /dev/null; then
|
|
export CXX=clang++
|
|
else
|
|
echo "Error: No C++ compiler found. Please install g++ or clang++."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "Using C compiler: $CC"
|
|
echo "Using C++ compiler: $CXX"
|
|
|
|
# Step 5: Build OpenUSD
|
|
echo ""
|
|
echo "Step 5: Building OpenUSD with minimal dependencies..."
|
|
echo "This may take a while..."
|
|
|
|
cd "${OPENUSD_DIR}"
|
|
|
|
# Prepare build arguments for minimal build with Python support
|
|
BUILD_ARGS=(
|
|
"${DIST_DIR}"
|
|
--no-tests
|
|
--no-examples
|
|
--no-tutorials
|
|
--no-tools
|
|
--no-docs
|
|
--python
|
|
--no-imaging
|
|
--no-usdview
|
|
--no-materialx
|
|
--no-embree
|
|
--no-ptex
|
|
--no-openvdb
|
|
--no-draco
|
|
--build-args
|
|
"USD,\"-DPXR_BUILD_ALEMBIC_PLUGIN=OFF\""
|
|
)
|
|
|
|
echo "Build configuration:"
|
|
echo " - Installation directory: ${DIST_DIR}"
|
|
echo " - Python bindings: ON"
|
|
echo " - Minimal dependencies (no imaging, materialx, etc.)"
|
|
echo ""
|
|
|
|
# Run build script
|
|
python build_scripts/build_usd.py "${BUILD_ARGS[@]}"
|
|
|
|
# Step 6: Create environment setup script
|
|
echo ""
|
|
echo "Step 6: Creating environment setup script..."
|
|
|
|
cat > "${SCRIPT_DIR}/setup_env.sh" << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# OpenUSD Environment Setup Script
|
|
# Source this script to set up the environment for using OpenUSD tools
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
USD_INSTALL_ROOT="${SCRIPT_DIR}/dist"
|
|
VENV_DIR="${SCRIPT_DIR}/venv"
|
|
|
|
if [ ! -d "${USD_INSTALL_ROOT}" ]; then
|
|
echo "Error: OpenUSD installation not found at ${USD_INSTALL_ROOT}"
|
|
echo "Please run setup_openusd.sh first."
|
|
return 1
|
|
fi
|
|
|
|
# Activate Python virtual environment
|
|
if [ -f "${VENV_DIR}/bin/activate" ]; then
|
|
source "${VENV_DIR}/bin/activate"
|
|
echo "Python virtual environment activated."
|
|
else
|
|
echo "Warning: Python virtual environment not found."
|
|
fi
|
|
|
|
# Set up USD environment variables
|
|
export USD_INSTALL_ROOT="${USD_INSTALL_ROOT}"
|
|
export PATH="${USD_INSTALL_ROOT}/bin:${PATH}"
|
|
export PYTHONPATH="${USD_INSTALL_ROOT}/lib/python:${PYTHONPATH}"
|
|
|
|
# Set library paths
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# macOS
|
|
export DYLD_LIBRARY_PATH="${USD_INSTALL_ROOT}/lib:${DYLD_LIBRARY_PATH}"
|
|
else
|
|
# Linux
|
|
export LD_LIBRARY_PATH="${USD_INSTALL_ROOT}/lib:${LD_LIBRARY_PATH}"
|
|
fi
|
|
|
|
echo "================================================"
|
|
echo "OpenUSD environment configured successfully!"
|
|
echo "================================================"
|
|
echo "USD_INSTALL_ROOT: ${USD_INSTALL_ROOT}"
|
|
echo "Python: $(which python)"
|
|
echo ""
|
|
echo "Available commands:"
|
|
echo " - usdcat: Display USD files in text format"
|
|
echo " - usddiff: Compare two USD files"
|
|
echo " - usdtree: Display USD scene hierarchy"
|
|
echo " - usdchecker: Validate USD files"
|
|
echo " - usdzip: Create USDZ archives"
|
|
echo ""
|
|
echo "Python USD module:"
|
|
echo " python -c 'from pxr import Usd; print(Usd)'"
|
|
echo "================================================"
|
|
EOF
|
|
|
|
chmod +x "${SCRIPT_DIR}/setup_env.sh"
|
|
|
|
echo ""
|
|
echo "================================================"
|
|
echo "OpenUSD setup completed successfully!"
|
|
echo "================================================"
|
|
echo ""
|
|
echo "Installation directory: ${DIST_DIR}"
|
|
echo ""
|
|
echo "To use OpenUSD tools and Python bindings, run:"
|
|
echo " source ${SCRIPT_DIR}/setup_env.sh"
|
|
echo ""
|
|
echo "Then you can use commands like:"
|
|
echo " - usdcat <file.usd>"
|
|
echo " - python -c 'from pxr import Usd'"
|
|
echo "================================================" |