Better production in Reality Modeling

Introduction

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

In this tutorial, we will cover how to send production settings to Reality Modeling, 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 Reality Modeling 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 Table
None
Adaptive
Octree
Unary
Quadtree
BingMaps
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 Reality Modeling production tutorial! You should now be able to specify production settings in order to export more precisely your formats.

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

More resources that you may like

An iTwin is necessary for using Reality Modeling API. You can check its possibilities.
Reality Data API is necessary for uploading inputs for Reality Modeling, and downloading outputs.