feat(simulation): load combined rover collision

This commit is contained in:
DCCONSTRUCTIONS
2026-08-26 17:50:37 +03:00
parent ae13ca5946
commit 2e20ca7777
4 changed files with 25 additions and 8 deletions
@@ -19,8 +19,13 @@ TUS_VERSION: Final = "1.0.0"
BUILD_REQUEST_SCHEMA: Final = "gaussian-pipeline.build-request/v1"
JOB_SCHEMA: Final = "gaussian-pipeline.job/v1"
LEGACY_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v1"
RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
RESULT_SCHEMAS: Final = frozenset({LEGACY_RESULT_SCHEMA, RESULT_SCHEMA})
LEGACY_ROVER_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v3"
RESULT_SCHEMAS: Final = frozenset({
LEGACY_RESULT_SCHEMA,
LEGACY_ROVER_RESULT_SCHEMA,
RESULT_SCHEMA,
})
CAPABILITIES_SCHEMA: Final = "gaussian-pipeline.capabilities/v1"
ARCHIVE_INGEST_REQUEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest-request/v1"
ARCHIVE_INGEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest/v1"
+7 -3
View File
@@ -671,6 +671,11 @@ def _world_manifest(project_id: str, artifacts: list[dict[str, Any]]) -> dict[st
)
return f"/api/v1/simulation-worlds/projects/{project_id}/artifacts/{encoded}"
collision_mesh_url = (
url_for("rover-collision-mesh")
or url_for("rover-terrain-mesh")
or url_for("collision-mesh")
)
return {
"schema_version": WORLD_MANIFEST_SCHEMA,
"project_id": project_id,
@@ -679,9 +684,8 @@ def _world_manifest(project_id: str, artifacts: list[dict[str, Any]]) -> dict[st
"streamed_sog_url": url_for("stream-manifest"),
},
"collision": {
"mesh_url": url_for("rover-terrain-mesh") or url_for("collision-mesh"),
"available": (url_for("rover-terrain-mesh") or url_for("collision-mesh"))
is not None,
"mesh_url": collision_mesh_url,
"available": collision_mesh_url is not None,
},
"transforms": {
"world_from_visual": [1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1],
+5 -1
View File
@@ -352,7 +352,11 @@ def test_gateway_rejects_symlink_source_and_token(tmp_path: Path) -> None:
@pytest.mark.parametrize(
"result_schema",
["gaussian-pipeline.build-result/v1", "gaussian-pipeline.build-result/v2"],
[
"gaussian-pipeline.build-result/v1",
"gaussian-pipeline.build-result/v2",
"gaussian-pipeline.build-result/v3",
],
)
def test_gateway_submits_tracks_and_imports_digest_bound_artifact(
tmp_path: Path,
+6 -2
View File
@@ -225,7 +225,7 @@ def test_service_materializes_world_manifest_and_deletes_both_copies(tmp_path: P
assert provider.deleted == ["gsp-20260826000000-deadbeef"]
def test_world_manifest_prefers_seed_connected_rover_terrain() -> None:
def test_world_manifest_prefers_combined_rover_collision_world() -> None:
manifest = _world_manifest(
"sim-" + "a" * 32,
[
@@ -237,12 +237,16 @@ def test_world_manifest_prefers_seed_connected_rover_terrain() -> None:
"role": "rover-terrain-mesh",
"logical_path": "rover/terrain.collision.glb",
},
{
"role": "rover-collision-mesh",
"logical_path": "rover/scene.collision.glb",
},
],
)
assert manifest["collision"]["available"] is True
assert manifest["collision"]["mesh_url"].endswith(
"/artifacts/rover/terrain.collision.glb"
"/artifacts/rover/scene.collision.glb"
)