Better production in ContextCapture

Introduction

The goal of this tutorial is to specify production settings to ContextCapture, so that your exports are closer to what you’d like.

In this tutorial, we will cover how to send production settings to ContextCapture, and go over the different settings and their usage.

Info

Skill level:

Expert

Duration:

10 minutes

Prerequisites

This tutorial assumes that you already have:

1. Specifying production settings

If you want to apply specific settings to the productions - that is outputs like 3MX, OBJ, etc. - you can add a file in the workspace reality data: the file prod_settings.json has to be uploaded to /{jobId}/data/. Note that no check on the uploaded file is performed until the job is actually submitted, and if the parameters are not fitted to the inputs, the job will failed. Also, if you provide this file, all the outputs should be present in the file. That is, if you requested OBJ and FBX, both of these outputs should be present in the file, even if you only want to apply specific settings to the OBJ format, see the example.

Example of a production settings file


JSON
{
  "ProductionSettingsExchange":[
    {
      "name":"OBJ",
      "settings":{
        "TexturedEnabled":false,
        "DoublePrecision":true
      }
    },
    {
      "name":"FBX",
      "settings":""
    }
  ]
}

2. List of existing production settings

You will find here a complete list of the existing options for the existing ContextCapture formats. Properties separated by a - mean you have to chose between one of the options.

These settings can be used for 3MX, 3SM, Cesium 3D Tiles, ESRI i3s, DGN, FBX, OBJ, POD, LAS, LODTreeExport.

They are used to enabled the texturing of a model, select the color source, change the compression of the texture and so on.

JSON
{
  "TexturedEnabled": true-false,
  "TextureColorSource": "Visible"-"Thermal"-"Resolution",
  "TextureColorSourceResRangeMin": double,
  "TextureColorSourceResRangeMax": double,
  "TextureColorSourceThermalUnit": "Absolute"-"Equalized"-"Celsius"-"Fahrenheit",
  "TextureColorSourceThermalRangeMin": double,
  "TextureColorSourceThermalRangeMax": double,
  "TextureCompressionQuality": 50-75-90-100,
  "MaximumTextureSize": int,
  "TextureSharpening": 0-100
}

These settings can be used for 3MX, 3SM, Cesium 3D Tiles, ESRI i3s, DGN, FBX, OBJ, LODTreeExport.

They are used to determinate the overlap distance between two tiles, in order to avoid gaps.

JSON
{
  "TileOverlap": double (in units or meters)
}

A spatial reference system describes the coordinates system of the produced output. We expect a string Well Known Text definition (e.g. WGS84), “EPSG: ” or a PROJ.4 definition.

These settings can be used for 3MX, 3SM, Cesium 3D Tiles, ESRI i3s, DGN, FBX, OBJ, LAS, POD, Orthophoto/DSM, LODTreeExport.

JSON
{
  "SRS": string,
}

These settings can be used for 3MX, DGN, FBX, OBJ.

They describe the origin of the Spatial Reference System.

JSON
{
  "SRSOrigin": "15.0;2.3;-25.3"
}

These settings can be used for 3MX, 3SM, Cesium 3D Tiles, ESRI i3s, DGN, FBX, OBJ, LODTreeExport.

They describe the type of level of details to be used, and their size.

Type TableNoneAdaptiveOctreeUnaryQuadtreeBingMaps
3MX✔️✔️
3SM✔️
Cesium 3D Tiles✔️
ESRI i3s✔️✔️
DGN✔️✔️✔️✔️✔️✔️
FBX✔️✔️✔️✔️✔️✔️
OBJ✔️✔️✔️✔️✔️✔️
LODTreeExport✔️✔️✔️✔️✔️✔️
JSON
{
  "LODType": "type - see table",
  "LODSize": 0.707106781186547-1-1.4142135623731-2
}

These settings can be used for 3MX or Cesium 3D Tiles, but they differ in the structure.

They are used to generate a web application that can be hosted on a server for displaying 3D models.

3MX settings


JSON
{
  "GenerateWebGLApp": bool,
  "IncludeProxy3DModel": bool
}

Cesium settings


JSON
{
  "GenerateCesiumApp": bool
}

These settings can be used for OBJ.

JSON
{
  "DoublePrecision": bool
}

These settings can be used for POD, LAS.

PointSamplingUnit is used to describe what unit you want to use for sampling. Pixel means One point every x pixels so that the sampling is relative to the resolution of your input. Meter or unit means One point every x unit so that the sampling is uniform for the point cloud.

PointSamplingDistance specifies x.

JSON
{
  "PointSamplingUnit": "pixel"-"meter"-"unit",
  "PointSamplingDistance": double
}

These settings can be used for LAS.

Set it to LAZ in order to compress the point cloud.

JSON
{
  "CompressionMethod":"None"-"LAZ"
}

These settings can be used for Orthophoto/DSM.

Settings are split between Orthophoto and DSM. You can disable one or the other with the Enabled property.

JSON
{
  "SamplingDistance": double,
  "ProjectionMode": "HighestPoint"-"LowestPoint",
  "MaxImagePartDimension": int,
  "Orthophoto":{
    "Enabled": bool,
    "Format": "GeoTIFF"-"JPEG"-"KML_SuperOverlay",
    "NoDataValue": "255 255 255",
    "ColorSource": "Reference3dModelVisible"-"OptimizedComputationVisible"-"Reference3dModelThermal"-"OptimizedComputationThermal",
    "ImageSharpening": 0-100
  },
  "DSM":{
    "Enabled": bool,
    "Format": "GeoTIFF"-"XYZ"-"ASC",
    "NoDataValue": double
  }
}

Continue learning

Congratulations for completing the ContextCapture production tutorial! You should now be able to specify production settings in order to export more precisely your formats.

To go further and use ContextCapture to its maximum potential, you can check the following tutorials.

More resources that you may like

Projects API

Project is necessary for using ContextCapture API. You can check its possibilities.

Reality Data API

Reality Data API is necessary for uploading inputs for ContextCapture, and downloading outputs.