Source code for axe_usd.core.exporter

from pathlib import Path
from typing import Iterable, Optional, Protocol

from .models import ExportSettings, MaterialBundle, PublishPaths
from .publish_paths import build_publish_paths


[docs] class ExportWriter(Protocol): """Protocol for exporters that write USD publish outputs."""
[docs] def export( self, materials: Iterable[MaterialBundle], settings: ExportSettings, geo_file: Optional[Path], paths: PublishPaths, ) -> None: """Export USD layers for the given materials. Args: materials: Material bundles to export. settings: Export settings that drive output content. geo_file: Optional geometry USD file to reference. paths: Precomputed publish paths to write to. """ ...
[docs] def export_publish( materials: Iterable[MaterialBundle], settings: ExportSettings, geo_file: Optional[Path], writer: ExportWriter, ) -> PublishPaths: """Build publish paths and delegate export to the writer. Args: materials: Material bundles to export. settings: Export settings including output location. geo_file: Optional geometry USD file to reference. writer: Export writer implementation. Returns: PublishPaths: The resolved publish paths used for export. """ paths = build_publish_paths(settings.publish_directory) writer.export(materials, settings, geo_file, paths) return paths