Autodesk · Arazzo Workflow

Autodesk Photogrammetry Reconstruction

Version 1.0.0

Create a photoscene, upload photos, start processing, poll until done, and fetch the 3D result.

1 workflow 1 source API 1 provider
View Spec View on GitHub Fortune 10003D ModelingArchitectureBIMCADConstructionDesignDigital TwinsEngineeringManufacturingMedia and EntertainmentSustainabilityArazzoWorkflows

Provider

autodesk

Workflows

reconstruct-photoscene
Reconstruct a 3D model from photographs and download the result.
Creates the photoscene, uploads photos into it, kicks off processing, waits for the scene status to become Done, and resolves a download link in the requested format.
5 steps inputs: callback, firstPhoto, format, gpsType, resultFormat, sceneName, sceneType, secondPhoto outputs: downloadUrl, photosceneId, status
1
createScene
createPhotoscene
Create the photoscene. The scene type and output format are fixed at creation time and drive how the photogrammetry engine reconstructs the geometry.
2
uploadPhotos
uploadFiles
Upload photos into the photoscene. Processing will reject a scene with fewer than three photos, so callers with more images repeat this step before starting the job.
3
startProcessing
processPhotoscene
Start the photogrammetry reconstruction. Returns 400 when the scene does not yet hold enough photos.
4
awaitReconstruction
getPhotoscene
Poll the photoscene until its status reaches Done. Reconstruction of a large aerial set takes a long time, so this loop is deliberately patient, and it ends the workflow if the engine reports Error.
5
fetchResult
getPhotosceneResult
Resolve a temporary download link for the reconstructed scene in the requested format. Returns 404 while the result is not yet ready.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Autodesk Photogrammetry Reconstruction
  summary: Create a photoscene, upload photos, start processing, poll until done, and fetch the 3D result.
  description: >-
    Turning a set of photographs into a 3D mesh or point cloud with the Reality
    Capture API. This is a textbook submit-poll-collect pipeline: create the
    photoscene container that carries the output format and processing type, upload at
    least three photos to it, start the photogrammetry job, poll the photoscene until
    its status reaches Done, and retrieve the download link for the reconstructed
    result. Every step spells out its request inline so the flow can be read and
    executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: realityCaptureApi
  url: ../openapi/autodesk-reality-capture-openapi.yml
  type: openapi
workflows:
- workflowId: reconstruct-photoscene
  summary: Reconstruct a 3D model from photographs and download the result.
  description: >-
    Creates the photoscene, uploads photos into it, kicks off processing, waits for
    the scene status to become Done, and resolves a download link in the requested
    format.
  inputs:
    type: object
    required:
    - sceneName
    - sceneType
    - format
    - firstPhoto
    - secondPhoto
    properties:
      sceneName:
        type: string
        description: Name for the photoscene.
      sceneType:
        type: string
        description: >-
          Processing type: "aerial" for drone or survey imagery, "object" for
          close-range captures.
      format:
        type: string
        description: >-
          Output format: rcm, rcs, obj, or ortho.
      gpsType:
        type: string
        description: >-
          GPS data type carried by the photos: none, wgs84, or nadcon.
        default: none
      callback:
        type: string
        description: Optional URL notified when processing completes.
      firstPhoto:
        type: string
        description: The first image file. Reality Capture requires at least 3 photos.
      secondPhoto:
        type: string
        description: An additional image file uploaded in the same request.
      resultFormat:
        type: string
        description: >-
          The format to download the finished result in: rcm, rcs, obj, ortho, or
          report.
  steps:
  - stepId: createScene
    description: >-
      Create the photoscene. The scene type and output format are fixed at creation
      time and drive how the photogrammetry engine reconstructs the geometry.
    operationId: createPhotoscene
    requestBody:
      contentType: application/json
      payload:
        scenename: $inputs.sceneName
        scenetype: $inputs.sceneType
        format: $inputs.format
        gpstype: $inputs.gpsType
        callback: $inputs.callback
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      photosceneId: $response.body#/Photoscene/photosceneid
  - stepId: uploadPhotos
    description: >-
      Upload photos into the photoscene. Processing will reject a scene with fewer
      than three photos, so callers with more images repeat this step before starting
      the job.
    operationId: uploadFiles
    requestBody:
      contentType: multipart/form-data
      payload:
        photosceneid: $steps.createScene.outputs.photosceneId
        type: image
        file[0]: $inputs.firstPhoto
        file[1]: $inputs.secondPhoto
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      photosceneId: $response.body#/photosceneid
      uploadedFiles: $response.body#/Files/file
  - stepId: startProcessing
    description: >-
      Start the photogrammetry reconstruction. Returns 400 when the scene does not yet
      hold enough photos.
    operationId: processPhotoscene
    parameters:
    - name: photosceneid
      in: path
      value: $steps.createScene.outputs.photosceneId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      message: $response.body#/msg
  - stepId: awaitReconstruction
    description: >-
      Poll the photoscene until its status reaches Done. Reconstruction of a large
      aerial set takes a long time, so this loop is deliberately patient, and it ends
      the workflow if the engine reports Error.
    operationId: getPhotoscene
    parameters:
    - name: photosceneid
      in: path
      value: $steps.createScene.outputs.photosceneId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.Photoscene.status == "Done"
      type: jsonpath
    onFailure:
    - name: stillProcessing
      type: retry
      retryAfter: 30
      retryLimit: 120
      criteria:
      - context: $response.body
        condition: $.Photoscene.status == "Processing" || $.Photoscene.status == "Created"
        type: jsonpath
    - name: reconstructionFailed
      type: end
      criteria:
      - context: $response.body
        condition: $.Photoscene.status == "Error"
        type: jsonpath
    outputs:
      status: $response.body#/Photoscene/status
      progressMessage: $response.body#/Photoscene/progressmsg
      pointCount: $response.body#/Photoscene/nb3dpoints
      faceCount: $response.body#/Photoscene/nbfaces
      stitchedShots: $response.body#/Photoscene/nbstitchedshots
  - stepId: fetchResult
    description: >-
      Resolve a temporary download link for the reconstructed scene in the requested
      format. Returns 404 while the result is not yet ready.
    operationId: getPhotosceneResult
    parameters:
    - name: photosceneid
      in: path
      value: $steps.createScene.outputs.photosceneId
    - name: format
      in: query
      value: $inputs.resultFormat
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      downloadUrl: $response.body#/Photoscene/scenelink
      fileSize: $response.body#/Photoscene/filesize
  outputs:
    photosceneId: $steps.createScene.outputs.photosceneId
    status: $steps.awaitReconstruction.outputs.status
    downloadUrl: $steps.fetchResult.outputs.downloadUrl