Skip to content

Extra Derivatives:Experimental service for post-processing 3D models into additional formats.

License

Notifications You must be signed in to change notification settings

autodesk-platform-services/aps-extra-derivatives

Repository files navigation

Extra Derivatives

platforms node.js npm license

Model Derivative

Experimental service (deployed as an AWS serverless architecture) for post-processing 3D models from Autodesk Platform services to additional formats such as glTF, glb, or Usdz.

thumbnail

Experimental Usage

REST API

  1. Use the POST https://m5ey85w3lk.execute-api.us-west-2.amazonaws.com/Prod/jobs/{urn}/{guid} request to process a specific APS model viewable.
  2. Use the GET https://m5ey85w3lk.execute-api.us-west-2.amazonaws.com/Prod/jobs/{urn}/{guid} request to check the status of the processing.
  3. Use the POST https://m5ey85w3lk.execute-api.us-west-2.amazonaws.com/Prod/jobs/{urn}/{guid}/signedurl to generate temporary, read-only signed URLs for downloading the different artifacts.

In all the requests listed above, replace {urn} with the Model Derivative URN of your model, and {guid} with the GUID of the specific viewable you want to process, and provide an Authorization header with the same token you would use in requests to the Model Derivative service.

Tip: viewables are listed in the Model Derivative manifest with "mime": "application/autodesk-svf".

Demo App

Go to https://aps-extra-derivatives.autodesk.io, log in with your Autodesk account, browse through your hubs, projects, and designs. After selecting a specific viewable of a design, start the conversion process (unless you have already done so in the past), wait for it to complete, and then download or preview the conversion outputs.

Architecture

Architecture diagram

Here's a quick description of the different resources used in the AWS SAM template:

  • JobsTable - DynamoDB table storing the status of conversion jobs and their artifacts
  • ArtifactsBucket - S3 bucket storing the conversion artifacts
  • RestApi - REST API definition with CORS settings
  • GetJobFunction - Lambda function (Node.js) handling GET requests
  • PostJobFunction - Lambda function (Node.js) handling POST requests
  • GenerateArtifactUrlsFunction - Lambda function (Node.js) handling POST requests that generate temporary signed URLs for artifacts
  • ConversionStateMachine - Step Function orchestrating individual steps of the conversion
  • DownloadSvfFunction - Lambda function (Node.js) handling the downloading of SVF assets from APS
  • ConvertSvfToGltfFunction - Lambda function (Node.js) converting SVF assets to glTF
  • ConvertGltfToGlbFunction - Lambda function (Node.js) converting glTF to glb
  • ConvertGltfToDracoFunction - Lambda function (Node.js) converting glTF to glb with Draco compression
  • ConvertGltfToUsdzFunction - Lambda function (Python) using a custom Docker image to convert glb to usdz
  • SharedLayer - Lambda layer with shared code and dependencies for all Node.js-based Lambda functions

The ConversionStateMachine consists of the following states:

Conversion state machine

Troubleshooting

Submit your question via APS Support Form.

License

This sample is licensed under the terms of the MIT License. Please see the LICENSE file for more details.

Authors

Petr Broz (@ipetrbroz), Developer Advocate