Skip to content

novaphy.SceneBuilderEngine

High-level scene build orchestrator. The URDF path produces a finalized NovaPhy Model plus per-element metadata (link / joint / shape names and source paths). The conservative USDA path also produces a model, but currently leaves SceneBuildResult.metadata default/empty. For purely programmatic scenes prefer ModelBuilder directly.

Methods

Method Description
audit_urdf(urdf_model, options=UrdfImportOptions())UrdfAssetAuditReport Check assets and unsupported URDF features without building a model.
build_from_urdf(urdf_model, options=UrdfImportOptions())SceneBuildResult Build a NovaPhy scene from parsed URDF data.
build_from_openusd(stage)SceneBuildResult Build a NovaPhy scene from parsed USD stage data.
append_to_builder(builder, scene, options=SceneAppendOptions())SceneAppendResult Append a previously built scene into a mutable ModelBuilder.

Example

import novaphy

# URDF path
parser = novaphy.UrdfParser()
data   = parser.parse_file("robot.urdf")

opts = novaphy.UrdfImportOptions()
opts.floating_base = True
opts.collapse_fixed_joints = True

engine = novaphy.SceneBuilderEngine()
audit = engine.audit_urdf(data, opts)
if not audit.can_build_model:
    raise RuntimeError(audit.warnings)
result = engine.build_from_urdf(data, opts)

model = result.model
print("warnings:", result.warnings)
print("root link:", result.metadata.root_link_name)

# USD path
stage   = novaphy.OpenUsdImporter(min_supported_version=1.0).import_file("scene.usda")
result2 = engine.build_from_openusd(stage)

Notes

  • The engine is stateless across calls; reuse a single instance for an entire batch import.
  • build_from_urdf returns a finalized Model with the imported joints and articulation populated. Code that only needs metadata should read SceneBuildResult.metadata; code that simulates the asset can use SceneBuildResult.model directly.
  • build_from_urdf returns immediately with a populated SceneBuildResult.warnings list when the URDF has features NovaPhy does not yet implement. Mimic joints are currently recorded as metadata only and are not materialized as runtime constraints. No exceptions are raised for soft incompatibilities.

See Also