---
language: "en"
---
# Documentation

## Documentation

*

  ### [Introduction](https://docu.das-element.com/introduction.md)

*

  ### [Quick start](https://docu.das-element.com/quick-start.md)

### [Install](https://docu.das-element.com/install.md)

### [Setup](https://docu.das-element.com/setup.md)

### [Settings](https://docu.das-element.com/settings.md)

*

  ### [Ingest](https://docu.das-element.com/ingest.md)

### [Views](https://docu.das-element.com/views.md)

### [Customization](https://docu.das-element.com/customization.md)

### [3D](https://docu.das-element.com/3d.md)

*

  ### [Good to know](https://docu.das-element.com/good-to-know.md)

### [How To](https://docu.das-element.com/how-to.md)

### [API](https://docu.das-element.com/api.md)

*

  ### [Environment Variables](https://docu.das-element.com/environment-variables.md)

*

  ### [Troubleshooting](https://docu.das-element.com/troubleshooting.md)

---
language: "en"
---
# 3D

## Create an 3D assets library

To create a 3D library follow this guide: [3D Assets](https://docu.das-element.com/beta-3d-assets.md)

## Support for 3D assets

Adding the support for 3d assets will be incremental. The first steps are done and more advanced support will follow in future releases of the software.  
Currently supports format for the 3D viewer: **fbx, obj**

|   **Planned**   |                                   **Features**                                   |
|-----------------|----------------------------------------------------------------------------------|
| Phase 1 done    | * 3d viewer * support FBX / OBJ * display textures (simple)                      |
| Phase 2 Planned | * support glTF / glb * support USD / USDZ * improve display/handling of textures |
| Phase 3         | * display animation * support Alembic * support MaterialX * ...                  |

## 3D Viewer

![image-20240611-112830.png](https://docu.das-element.com/__attachments/a_250e5fc53faa755557be3f58e6c18747f286cdef80f0ab867c03b7eccc66a7b4/image-20240611-112830.png?cb=8d00b37b497291e179453586317aa0a0)

The primary goal of the software is to help you find the correct asset initially. This tool is not intended to function as a 3D application. Instead, it assists you in obtaining the file paths to the 3D assets, which you can then open in the 3D application of your choice.

Learn more about [the 3D viewer here.](https://docu.das-element.com/beta-viewer.md#3D-viewer)

### Textures

The proxy thumbnail for each addtional file is loaded in the 3D viewer. Please note that these thumbnails should have an aspect ratio of 1:1 (square resolution, such as 512x512, 1024x1024, etc.).  
![image-20240611-112249.png](https://docu.das-element.com/__attachments/a_dcc2cec17b76171ba82fc1fe9570c75ca3d61a8d1ae5f3e3aab17df87710f6f8/image-20240611-112249.png?cb=f00dd801057965f3c492f4b8f6e86d69)

To display the texture of a 3D model in the 3D viewer, the additional elements must have the layer type set to `texture` and their names must be on the following list to be mapped correctly:  

| **Texture channel** |        **Additional Name**        |
|---------------------|-----------------------------------|
| color/diffuse       | `beauty` `color` `diffuse` `diff` |
| alpha               | `alpha`                           |
| ambient occlusion   | `ambientocclusion` `ao`           |
| emissive            | `emissive`                        |
| metalness           | `metalness` `metal`               |
| normal              | `normal` `norm`                   |
| roughness           | `roughness` `rough`               |

---
language: "en"
---
# Actions

![das-element_version-release_2.2_action-hooks.png](https://docu.das-element.com/__attachments/a_013fc3196dde158cce56976d08624e3242210c8efff21e1f7564f98be6d0d2f0/das-element_version-release_2.2_action-hooks.png?cb=7e114a0cad39fce7c8893767a744001b)

Version 2.2 introduced action hooks, enabling custom buttons that trigger Python scripts. These actions can run on collections to add elements to external DCCs, review software or similar tasks.

The actions are Python scripts that trigger any custom operation for one or more elements. Actions can also be triggered for all items in a collection.  
![das-element_version-release_2.2_action-hooks-collection.png](https://docu.das-element.com/__attachments/a_e3089ae5cb79d59fb93ff9b412c973c3ba88f32ecf5ae96f7824a60851ecb440/das-element_version-release_2.2_action-hooks-collection.png?cb=f0cf2997e5dd6e856a33935f84c8e4bd)

Action scripts will be placed in the same folder as other hook files (`$DASELEMENT_HOOKS` or `$DASELEMENT_RESOURCES/scripts/hooks`). Learn more about hooks here: [Hooks](https://docu.das-element.com/python-hooks.md)

A action script must follow this pattern: `action_{name}.py`

For example:

* `action_foo.py`

* `action_bar.py`

* `action_custom-action.py`

Download example action hook: <https://github.com/das-element/resources/blob/main/scripts/hooks/examples/actions/action_my-custom-action.py>

## Customize button

In the script add a variable called: `METADATA` to further customize the action in the UI.

    METADATA = {
        'name': 'My Action',
        'description': 'A custom action to process selected items',
        'icon': '/path/to/icon.png',
        'color': "#182a3b",
        'order': 2
    }

|    **key**    |                                                **function**                                                |
|---------------|------------------------------------------------------------------------------------------------------------|
| `name`        | Name of the action, displayed as the button text                                                           |
| `description` | Help text that's shown when hovering over the button                                                       |
| `icon`        | custom icon of the button (file path or URL)                                                               |
| `color`       | custom color of the button ([CSS color](https://en.wikipedia.org/wiki/Web_colors): hex code or color name) |
| `order`       | defines the order in which the buttons are displayed in the UI                                             |

---
language: "en"
---
# Add custom tags from other source

Here is a guide how you can use your own source to add tags.

For example to use your own machine learning models to add tags for an elements.

There are three options where we can insert new tags programmatically. Point 2. and 3. are very similar.

1. [Pre Ingest Load](https://docu.das-element.com/docu/python-hooks#PythonHooks-PreIngestLoad) hook file

2. Custom Transcoding Task during the ingest or re-render with the API

3. after an element is ingested via the API

This script can be used as a extra transcoding task with a custom command:

<https://github.com/das-element/resources/blob/main/misc/create_custom_tags.py>  
Using this example requires a CLI license with the API support of the software.

1. setup the Python API - [API documentation](http://docu.api.das-element.com/)

2. create a new Transcoding Tempalte

3. add this as a **extra-task** to the **Template Mapping**

4. [download](https://github.com/das-element/resources/blob/main/misc/create_custom_tags.py)this Python file

5. get the **exec** and **params** from the python file info text

       # e.g. for Linux

       exec:
       /usr/bin/python3
       params:
       "$DASELEMENT_RESOURCES/scripts/custom/create_custom_tags.py" <element.uuid>

6. make sure to update the **library_path** value in the Python file

7. the **extra-tasks** will be executed after the Main and Proxy transocding jobs are down

The library settings should look something like this in the end:  
![das-element_tutorial_add-custom-tags_v001.png](https://docu.das-element.com/__attachments/a_1afd967585174922b1350f880f484523cafae0b0d5dc5e160a610d56a2a8af85/das-element_tutorial_add-custom-tags_v001.png?cb=fd689b30cbf0d824dfa02d15c86db40e)

---
language: "en"
---
# Additional files

Additional files like texture files, references or render layers that are rendered in a sepeare file or sequence can be added to an element.

## Naming convention and folder structure

In the **settings** → **File path defintion** it can be configured where the additional file will be saved on disk.  
![2023-07-05 11_22_57-das element.png](https://docu.das-element.com/__attachments/a_a9c02a75ce9925f5de73cab14f5d63e67e1fd3a3e6fd83f56f6b6f742fe98e2f/2023-07-05%2011_22_57-das%20element.png?cb=3dca73dad1663490868128e238a7eb72)

## Adding additional files during the ingest

During the ingest the additional files can be added to an new element  
![image-20230717-210327.png](https://docu.das-element.com/__attachments/a_1cfe3cfe9cd86cae1795f0413f13f3cdbef95c1880e39422a242b7a5ed8e720f/image-20230717-210327.png?cb=ef9b309326052326cfcc412a9877ad40)  
![2023-07-05 11_59_53-das element.png](https://docu.das-element.com/__attachments/a_6b687f0e760907bbd1e0b49418de73cec1b163758465d84fe764325f8d094cb2/2023-07-05%2011_59_53-das%20element.png?cb=b6dfca4fe05675c257b293fae586b3cd)  
![2023-07-05 11_33_17-das element_additional_files.png](https://docu.das-element.com/__attachments/a_4f11522b1924837de73003ddc3cfd551412436ec274d1c07d33e22f2729f1133/2023-07-05%2011_33_17-das%20element_additional_files.png?cb=e7ba22aed376632fbfc6d9b92f7cbe07)

## Adding additional files after the ingest

* activate to the **edit mode**

* add new additional files in the dialog

  * either click or drag files on the button to open the dialog window

* save the edit mode to trigger the ingest of the new additional files

![das-element_additional-files_gallery_add_01.png](https://docu.das-element.com/__attachments/a_ee16353a2510e399ce927c29ec171df335b47e67922cfde6150e0f175de5fc2d/das-element_additional-files_gallery_add_01.png?cb=45d22fc32e674bcdcdd43a3a19ac9b4f)  
![das-element_additional-files_gallery_add_02.png](https://docu.das-element.com/__attachments/a_9eb4cadcdd3fe075c66d982c9f51a240c4b46dc521f4a271cfe680eb98928a22/das-element_additional-files_gallery_add_02.png?cb=5a501c28e10dd68ba5fd6925ec53c94e)

## Change additional files

The additional files can be changed after the ingest.

* activate to the **edit mode**

* make changes to additional **type** or **name**

* save the edit mode

  * two options:

    * rename the files on disk

    * only update database

![das-element_additional-files_gallery_edit_01.png](https://docu.das-element.com/__attachments/a_93ae848572ba0abcde4df636cd0542c2968f801b655114073e06c0b42b991da2/das-element_additional-files_gallery_edit_01.png?cb=0f1e20223245079937377d62b5741d0a)  
![das-element_additional-files_gallery_edit_02.png](https://docu.das-element.com/__attachments/a_16636875cd7388b715586f3661cd3d818d0fcca4dda377604561d2691ff0af21/das-element_additional-files_gallery_edit_02.png?cb=4ee1b3d449791fb488c9956d84835467)

---
language: "en"
---
# API

The Python API is a wrapper around the command line version (CLI).

## API Documentation

[http://docu.api.das-element.com](http://docu.api.das-element.com/)

### How to use

* Download [the CLI](https://docu.das-element.com/command-line-tool-cli.md) versions (CLI \& CLI full) from the [Das Element website.](http://das-element.com/)

* Install the Python package via [PyPi](https://pypi.org/project/daselement-api/)

### Install

In your Python environment run the command:

    pip install daselement-api

### Configuration

In the background the CLI versions of Das Element get executed. We need to specify where to find the executables. This is done by setting an environment variable.

Set the environment variables to point to the CLI executable files:

`DASELEMENT_CLI` (for the small CLI version)

`DASELEMENT_CLI_FULL` (for the full CLI version)

Set the environment variable globally on your system or directly in the Python script:

    import os

    os.environ['DASELEMENT_CLI'] = '/path/to/das-element-cli/das-element-cli_2.2.0'
    os.environ['DASELEMENT_CLI_FULL'] = '/path/to/das-element-cli/das-element-cli-full_2.2.0'

    from daselement_api import api as de

    new_config_path = "/path/to/new-library/.config/config.conf"
    de.create_config(config_path, preset_key='preserve_structure')

### Usage

The library information is taken from the config file that is set for the current workstation.

Either defined in the `~/.das-element/setup.ini` file or by the environment variable `DASELEMENT_CONFIG_PATH`

    from daselement_api import api as de
    libraries = de.get_libraries()
    for library, library_config_data in libraries.items():
       print(library)
       print(library_config_data)

See available commands here: [http://docu.api.das-element.com](http://docu.api.das-element.com/)

---
language: "en"
---
# 3D Assets

This step-by-step guide shows you how you can setup an 3D asset library. Let's get started!

## Create new library

![das-element_create-new-library_01.png](https://docu.das-element.com/__attachments/a_2bdc1dca6a2b15923fb940e57427278c7552d7936c1607dd81e01edbd536b862/das-element_create-new-library_01.png?cb=16cc1358a82934be3747560b60d56ed4)
Set name for library - this can be changed later  
![das-element_create-new-library_02.png](https://docu.das-element.com/__attachments/a_34f1c74df4c2ad972ee5206cde66a3ff211c2b22bfa60132c86ff6e0b719b8b5/das-element_create-new-library_02.png?cb=3fb9cd56cb8a2aeb9a297aeac8ccb0d0)
Set library root - where are all the files on disk?  
![das-element_create-new-library_03.png](https://docu.das-element.com/__attachments/a_0e9c10b22aacd05deca35850a3a86c100d9640d5ff025630125aabfa6d1cac14/das-element_create-new-library_03.png?cb=d3314de7eff12d69e261dd4723520e87)
Choose database type  
![das-element_create-new-library_04.png](https://docu.das-element.com/__attachments/a_23d1bd43ac0959476c291aa5947ecf4ab35da9e87a27a01cb19b82896a43b524/das-element_create-new-library_04.png?cb=40736d18ee8b24b53f3129b0916b7345)
Finally, create the library!

## Transcoding templates for 3D assets

In this scenario we assume that the main element is a 3d file or scene. We will set a lowres (!) FBX 3d file as the preview proxy. The preview 3d file can point to the main file if it's a game ready asset (\<100mb).

The textures are additionals files. For each additional texture file we will create thumbnails (1k resolution) for a quick preview of the different texture layers.

The preview 3d model will load the proxy textures as it's texture source. Please be aware that the color information is loaded only if a texture name is: **diff, diffuse, beauty or color**

*** ** * ** ***

Here are the different transcoding templates that we require for this setup:

### Resolution folder naming

Since the **main element** and the **proxy** of the main element are 3d files, we won't need any resolution information in the folder name. We call the "resolution" folders: **main** and **proxy**  
![das-element_3d_resolution.png](https://docu.das-element.com/__attachments/a_352b1df235b132c642bde2a8561b08514f9ed3ae21cc19ee4fcb3a0717785f53/das-element_3d_resolution.png?cb=d751227f08754e5d99eb9b33433efa0c)
3D does not require information about the resolution in the folder

For the additional files (textures) we assume that these are 2d files like OpenEXR, tiff, etc., that's why the resolution folder has information about the **width** and the **height**.  
![das-element_2d_resolution.png](https://docu.das-element.com/__attachments/a_d031264b3fe249f8c851397d61e8daa56a6849cbe816e6488b29dae6984b57a3/das-element_2d_resolution.png?cb=372185485d0716d23e15d3d6cbfd2d38)
for 2d elements save the resolution information in the folder name

### Template Mapping

The Template Mapping looks like this:  
![das-element_template-mapping-2.png](https://docu.das-element.com/__attachments/a_4fd96ec10a4d9dc88d22883eb446809ef04ef856177fa2bf8c9fc9beded1d7f6/das-element_template-mapping-2.png?cb=575f3a4deece1a798b2975186e8ef23c)

### Transcoding templates

#### main - 3d

Set the **Template Step** to **main** - this will trigger this template only for the main element

The transcoding task is a **copy**task - this will copy the source file to the main element location  
![das-element_transcoding-template_main-3d.png](https://docu.das-element.com/__attachments/a_d9340220e61c065d278a8e03a944da882a4b195f8de8577bc72e92f72512a0d0/das-element_transcoding-template_main-3d.png?cb=102e93dedae05a87237d00592d7e58de)

#### additional - 2d

This is for the additional files.

Set the **Template Step** to **main** - this will trigger this template only for the main element

The transcoding task is a **copy**task - this will copy the source file to the main element location  
![das-element_transcoding-template_additional-2d.png](https://docu.das-element.com/__attachments/a_c6cedcad3db426d3a20ed58b4ab4f6d101ffcd1b10d0135bb6d1c50ad8efbd07/das-element_transcoding-template_additional-2d.png?cb=312506abc1469d404e52ef3bee79dc80)

##### Thumbnails

###### thumbnail 16:9

Set the **Template Step** to **main** - this will trigger this template only for the main element  
![das-element_transcoding-template_thumbnail_16-9.png](https://docu.das-element.com/__attachments/a_7be1391851b397efeb881dcb5cd12538699b159c75f7b853db8d6678f129059d/das-element_transcoding-template_thumbnail_16-9.png?cb=9ce78ea2092260a2b201da7b7ed0b77c)

###### thumbnail 1k

For the additional files we assume that the texture files have a square format. In this case we want to render square thumbnails as well.

Set the **Template Step** to **additional** - this will trigger this template only for the main element

Change the resolution to width (**1024** ) and and height (**1024**)  
![das-element_transcoding-template_thumbnail_1k.png](https://docu.das-element.com/__attachments/a_c3d506c9425340c8d0e186201b357dfbdc4c80538fc89681cf185388305733d4/das-element_transcoding-template_thumbnail_1k.png?cb=d41e0b2c42b844e0a0a031dda1c07fc5)

#### proxy fbx

Set the **Template Step** to **main** - this will trigger this template only for the main element not the additional texture files.

Make sure to change the **extension** to **fbx**  
![das-element_transcoding-template_proxy_fbx.png](https://docu.das-element.com/__attachments/a_a16c71c545757365a25cb535b2baac33faefa0af489cd12584f93c05024e4445/das-element_transcoding-template_proxy_fbx.png?cb=7e34d7c35f49ebed1004d34e4d40ef29)

#### \[optional\] proxy mov \& filmstrip

In cases where there is no lowres 3D proxy, you can choose to instead ingest a movie file e.g. a turntable rendering. In this case it will render a proxy movie and a filmstrip. These are the default **proxy mov** and **filmstrip** transcoding templates:

## Ingest

Choose a 3d file to ingest and set the texture files as **additional files** (button next to the preview)  
![das-element_ingest_01.png](https://docu.das-element.com/__attachments/a_c44222b612fbf6a9c4c2515426ca96e3089e6b27df59186fa332037f1d755863/das-element_ingest_01.png?cb=c2004f3c30c04577cda070e49bc5753a)  
![das-element_ingest_02.png](https://docu.das-element.com/__attachments/a_b222c4698035d425d355987d9f6cb9c0e1504ec124a761f0eca0caa34c0f9029/das-element_ingest_02.png?cb=b904bc10d985c18e3aa2432b48ede35b)

### Custom preview

For a custom preview you can set a thumbnail and a proxy file.

#### Custom thumbnail

There are three options to set a custom thumbnail:

1. during ingest (drag\&drop an image on the preview in the ingest view)

2. take a screenshot of the viewport

3. drag\&drop an image on the element preview in the gallery view

##### Ingest view

Drag an image over the element preview.  
![das-element_ingest_custom-proxies.png](https://docu.das-element.com/__attachments/a_6bda215042a5d57d384252cb7c2dab4bdd960488e138bf34e2e644778aa4b62f/das-element_ingest_custom-proxies.png?cb=35f6c752e7a47e3d2fddc743f2747e27)

To remove it click the thumbnail icon in the top left corner.  
![das-element_ingest_custom-proxies_remove.png](https://docu.das-element.com/__attachments/a_75677da750493bc3c147ae04192def243a056a049a5be363c9e939b20bf739c4/das-element_ingest_custom-proxies_remove.png?cb=0193222f9f7fc2b3f24ec1e08ef81b0a)

##### Gallery View

To set a new thumbnail you can use the build in screenshot-button to take a screenshot of the current viewport.  
![das-element_3d-viewer_screenshot.png](https://docu.das-element.com/__attachments/a_bfbf3233576cad06ca1b7528322fca16095864b0cfa1a29dbe7c362408584c04/das-element_3d-viewer_screenshot.png?cb=c3bfcce2af09079ee849b223b8168c57)

An alternative is to drag\&drop a custom screenshot or image on the element viewer. This will perform a copy of the dropped file to the **thumbnail**path as defined in the settings.  
![das-element_custom-thumbnail.png](https://docu.das-element.com/__attachments/a_728b92916e2f20ae6c9829f816f9d35cde574476296d193604b7cd8d30db704d/das-element_custom-thumbnail.png?cb=e7574e32c52fed0a5dbc95abc1bb7a44)

#### Custom 3D proxy

The proxy file can either be a 3D model (fbx, obj) or a movie file. Depending on the file type of your proxy and the file extension you choose in the transcoding template settings, it will load the proxy file.

Drag\&drop a 3D proxy model on the 3D viewer (right side). This will perform a copy of the dropped file to the **proxy**path as defined in the settings.  
Please note that the software only can display low-poly (aka. game-ready) 3D files.  
![das-element_custom-proxy.png](https://docu.das-element.com/__attachments/a_5d2e2d130014c587ef3ac9ce1cbceeb09638b299a549fe5ff55147dd66f4816c/das-element_custom-proxy.png?cb=fadff0ce3c38a04d96e8d6948d2b2c91)

### Automate ingest

To automate the ingest process you can use the [pre ingest load](https://docu.das-element.com/python-hooks.md) Python hook. This allows you to crawl for additional texture files, custom thumbnails, turntables and a 3d proxy file to automatically populate the ingest list when loading an asset in the ingest list. This can be a real time saver if your source files follow the same pattern.

3D files don't really have a resolution we don't need the *height* and *width* in the folder name.

The resolution would otherwise be **1**since it can't resolve the resolution for 3D files.

---
language: "en"
---
# Media Viewer

## Video Viewer

![das-element_2.1_video-player_controll.png](https://docu.das-element.com/__attachments/a_b94220364687f68ee4605f80b675bcf47936fe1f5b4614daef2aaa21fc0f4cce/das-element_2.1_video-player_controll.png?cb=013118b37719669c864e7d74e0d19780)

The video player provides several features for review and playback:

* use the arrow handles to set the playback range

* the video image can be flipped and/or flopped

* adjust the playback speed as needed

|   Shortcuts   |                         |
|---------------|-------------------------|
| left arrow ←  | go back by one frame    |
| right arrow → | go forward by one frame |
| k             | pause / play            |
| l             | play                    |
| y             | flip (mirror Y-axis)    |
| x             | flop (mirror X-axis)    |
| \[            | set in point            |
| \]            | set out point           |
| \\            | reset in/out point      |

## Sphere Viewer

To display an element in the Sphere Viewer the **media type** needs to be set to: **sphere**

Images and videos can be viewer in a lat-long view (latitude/longitude).  
![image-20231205-103703.png](https://docu.das-element.com/__attachments/a_708320bc69ffd0fb9df44d930d520ce7ccebc3900ae0b51c27cacd34709baddd/image-20231205-103703.png?cb=85214f43246c59dcb0bfc86c189a7232)

Added exposure slider. Click text (left) or exposure icon to reset to **1**

Green text indicates that the exposure value has been modified.

The element **main** will be used to display in the viewer. Works for panoramic images and videos.

ToDo:

* video controls for videos not started

Please note that tiled EXRs are not supported, make sure to use scanline EXRs.  
![image-20230717-204236.png](https://docu.das-element.com/__attachments/a_23b67f58f095d386bb58b63d9b81953b46a267770ece6d9d870057113e85c4ce/image-20230717-204236.png?cb=f1e796a50ae5e282a6dbc326adc9434d)

## 3D viewer

A 3D viewer has been added to display low-resolution (aka. game-ready) 3D models.

For more information check out the page: [3D Assets](https://docu.das-element.com/beta-3d-assets.md)  
![image-20240611-113023.png](https://docu.das-element.com/__attachments/a_1827d4df87476fbdc76c6e029f097b184d08dedd6d7dba3649afd10fc35b2675/image-20240611-113023.png?cb=8d00b37b497291e179453586317aa0a0)

![image-20240611-113202.png](https://docu.das-element.com/__attachments/a_64a131cf1e9c9cc6b483e7df3051d42e14d51e44835ff10e1cdcd9ae6a6045bf/image-20240611-113202.png?cb=7b6792451f916bdc922e67c0d6c277dc)

Toggle between 3D viewer and a 2D display of the elements thumbnail.

![image-20230717-205312.png](https://docu.das-element.com/__attachments/a_6800b3200d6112598685580a55126c48a9659e644de97b3a0f2899e96acb7eeb/image-20230717-205312.png?cb=36b60f6bfffe2edf78b80c173b201421)

The grid can be dis/enabled by the icon in the bottom left corner.

![image-20230717-205759.png](https://docu.das-element.com/__attachments/a_21e4b57730c67c165d23a996ad61ebc4fbfa07585ec010f9b06530d55a63abb4/image-20230717-205759.png?cb=bc5a546ac0544191d0cdbd3967c8522b)

Take a screenshot of the current viewport, to set a new element thumbnail.

Click the screenshot button in the bottom right corner of the 3D viewer.

### Display Options

There are three display options for the 3D viewer:

* `textured`

* `metalness-roughness`

* `wireframe`

![image-20230717-205500.png](https://docu.das-element.com/__attachments/a_1ae0ee51a3e8e5a941544a3d2d05e4279dfc3c3c7f0b5c5153d6ca3c9cf18b9d/image-20230717-205500.png?cb=05e3f6010e77e782363a8ad9a01b694f)

#### metalness - roughness

If the display is set to `metalness-roughness` you can use the two sliders to control the `metalness` and `roughness` of the load 3D model in the viewport.  
![image-20240611-113410.png](https://docu.das-element.com/__attachments/a_714bf8ea1e7080469c73d6729408c1b6df5ae67681997243efdb8ce57799fd54/image-20240611-113410.png?cb=b9d93a812dd06643cfc2a469427bba1b)

#### HDR

The preview HDR can be changed for the modes: `textured` and `metalness-roughness`  
![image-20230717-205604.png](https://docu.das-element.com/__attachments/a_53e42800e11486d8ed010662429c7d02c09d5d3bc59405b122f4761279ebde44/image-20230717-205604.png?cb=39248b54067c764cc6f852052223475c)

---
language: "en"
---
# Category Hierarchy Tree

The software organizes the categories into a hierarchy tree structure.  
![hierarchy_tree_v005.png](https://docu.das-element.com/__attachments/a_051e1d717cb6cee772ff3dc8ebefbfaad434be437e6aec827ea86a2c09724bd0/hierarchy_tree_v005.png?cb=6a9d41bd357be570c508e82e7e227573)

The hierarchy view visually presents the structure of categories in a tree format. By expanding the top-tier categories, you can see all the child categories, providing a clearer understanding of their relationships.

By clicking on a tree item, additional information is displayed in the details view on the right side. This view includes the Wikidata ID, a human-readable tag for the category, a description text, and various synonyms.

The hierarchy tree is structured based on the actual order of categories, but it is also optimized for the commonly used vocabulary in the Visual Effects (VFX) industry. Many VFX-specific terms have been incorporated into this category tree, making it most intuitive and practical from an artist's perspective.

The top-tier categories are designed to logically group similar elements, such as fire, smoke, and explosions. This organization aids in naming and storing elements on disk, creating a sustainable library. By maintaining consistent file locations, even if an element's category changes in the database, the physical file remains in the same location. This consistency is crucial for loading project files from previous years, ensuring that media files are not missing.

As more categories are added over time, the library structure will continue to improve and become increasingly detailed. This ongoing expansion will enhance the organization and accessibility of the library, making it more comprehensive and user-friendly.

## Category ID

Everyone has a different understanding of what a certain element should be called, influenced by our diverse linguistic backgrounds. This variation can often lead to confusion when communicating with colleagues.  
The focus of Das Element is to establish a common vocabulary for naming element categories.

Since each category can be linked to a specific Wikidata page, we can unify our understanding and vocabulary regarding category names. This standardization helps avoid confusion in daily conversations with our colleagues.

The ID for each category typically looks something like this: *Q3196*

This text is an identifier that can be used to link to a human-readable entry in the [Wikidata database.](http://www.wikidata.org/)

**Resource:** [www.wikidata.org/wiki/Wikidata:Identifiers](https://www.wikidata.org/wiki/Wikidata:Identifiers)

**License:** cc pd CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

## Change the hierarchy tree

Go to *Settings → Category*

![das-element_2-1_settings_hierarchy.png](https://docu.das-element.com/__attachments/a_2088c7283b8051db8efe29a7358a8f66d0d8a82d829459c4dab6e0443dd739ca/das-element_2-1_settings_hierarchy.png?cb=b37365d8b0cc3852ec1603842b9f8131)

### Edit hierarchy menu bar

![grafik-20240807-074130.png](https://docu.das-element.com/__attachments/a_a73462216dafda355e122270e49a28e9f817c1647bbe8f07f1fd26f35b05ff59/grafik-20240807-074130.png?cb=76e2007b859dcdf71336d5ef020b8df0)  

|-----------------------|-----------------------------------------------------------------------------------------|
| Hierarchy             | current hierarchy to view/edit                                                          |
| Hierarchy path        | file path to hierarchy file on disk                                                     |
| Search                | search for category name in hierarchy                                                   |
| sort alphabetically   | sort the categories in hierarchy in alphabetically order                                |
| add category          | adds a new item to the hierarchy                                                        |
| delete all categories | ⚠️ deletes all the categores of the hierarchy tree                                      |
| reset 🔄              | restore state before making changes to the hierarchy tree                               |
| save hierarchy        | save changes to the file on disk if no changes have been made the button is deactivated |

### Hierarchy tree file

The category hierarchy tree will be saved to a file called `hierarchy.json`

This hierarchy tree data will be used across all loaded libraries.

Since version 2.1.0+ a different hierarchy tree can be defined for each library.

To ensure the software can locate custom hierarchy data, the file must be either placed in the resources folder (`DASELEMENT_RESOURCES`) at the following specific location or in the folder defined by the hierarchy environment variable (`DASELEMENT_HIERARCHY`):

    $DASELEMENT_RESOURCES/hierarchy/hierarchy.json

    or ...

    $DASELEMENT_HIERARCHY/hierarchy.json

### Hierarchy tree overwrite per library

To define a specific hierarchy tree for a library, create an override in the library settings.

#### Create overwrite

![das-element_settings_create-hierarchy-overwrite.png](https://docu.das-element.com/__attachments/a_c7c1a8fad12d9eee48268928e3947ae9386e09f257eb759b633dbbcbe08fda7d/das-element_settings_create-hierarchy-overwrite.png?cb=768634b4b762adf95a22d404546850fa)

##### Overwrite active

![das-element_2.1_library-hierarchy-overwrite.png](https://docu.das-element.com/__attachments/a_2ef261e4967d354ce91b1110852c18b23c4cb367d7311d459344b8d40f408c03/das-element_2.1_library-hierarchy-overwrite.png?cb=39d7b262d1942d8d6876aa8241edbdc8)  
![das-element_2.1_library-hierarchy.png](https://docu.das-element.com/__attachments/a_8ffb8b13744bf0152ab720860079604504301196ecea58eb0ac5f248f43b165a/das-element_2.1_library-hierarchy.png?cb=ceed593e2fe076973e8310f569958537)

The order of loading the hierarchy:

1. use hierarchy defined in the **library hierarchy overwrite**

2. if not found, use hierarchy defined with **environment variable** (`DASELEMENT_HIERARCHY`)

3. if not found, use hierarchy defined with **environment variable in global resources** folder (`DASELEMENT_RESOURCES`)

4. if not found, use **default hierarchy** of the installed Das Element version

### Edit the hierarchy tree

Each category has the following fields: an ID (by default, the Wikidata ID), a human-readable label, a description text, and synonyms.

Both the category ID and the category name can be used in the Path Builder, the custom command line as well as the ingest view for tags and metadata. Use is as the Path Value tokens, e.g. `<category.name>`

The user can add, delete, or modify existing synonyms in the details view on the right side. Searching for a synonym will always bring up the corresponding category in views such as the gallery view or the ingest view.

The category hierarchy tree is fully customizable. Simply drag and drop items within the Tree View to change the order and parent/child relationships of categories. You can add new categories as needed or modify existing ones by clicking on a category and updating the data in the Details View.

You can even customize the hierarchy tree to function as a VFX project with sequences and shots. In this setup, the top-tier categories are the sequence names (001, 002, etc.), and the child categories are the shots (001_0010, 001_0020, etc.).

### Default hierarchy file structure

Here is the empty data structure for the hierarchy file. The root item (`/` : `Q2574811`) is required. You can start by adding data inside the `children` list to build your customized hierarchy tree.

    {
        "hierarchy": [
            {
                "children": [],
                "id": "Q2574811",
                "name": "/"
            }
        ],
        "version": "some version text"
    }

The child item data structure looks like this:

    # minimum requirement
    {
        "id": "my-category-id",
        "name": "My Category"
    }

    # all options
    {
        "children": [],
        "description": "some description text",
        "id": "my-category-id",
        "name": "My Category",
        "synonyms": [
            {
                "language": "custom",
                "value": "some other category name"
            }
        ]
    }

### Example: Folder structure to hierarchy file structure

A use case for this hierarchy structure could be to organize all your final shots and plates into a "project archive" library. This allows you to quickly access the shots from previous shows. It also provides an efficient way for the editorial department to edit showreels or for production to collect showreel shots for freelance artists.

Here is an example Python script that converts a nested folder structure on disk into a hierarchy conform file:

<https://github.com/das-element/resources/blob/main/misc/code_snippets/get_hierarchy_from_folder_structure.py>

---
language: "en"
---
# Collections

With the collections a user can now save a set of elements and share the collection with other team members. There are three types of collections: **personal** , **global \& database**

To add items simply drag elements from the Gallery view in the Collection view.

To create a permanent collection of the elements the collection can be save to a file on disk.  
On the filesystem the collection files can even be organized into folder and sub-folders.  
![gallery_collections_001.png](https://docu.das-element.com/__attachments/a_6881c3d4462ebaa1911ad18b63984867f9a7964143b697f259dca34b03d7d67d/gallery_collections_001.png?cb=6f55a32fc8f9eba5106a2750336f18e0)

## Menu bar

### Menu bar top

**Show elements** button will show the element from the collection in the gallery view.

The standard filters can be applied (resolution, frame length, ....) can be applied on these elements.

To reset everything and show all elements click the reset filter button or de-select the collection

The **collection picker** allows to browse/search all available collections.

It is sorted into different groups: ***personal, global \& one for each collection database***

**Create collection** will create a new collection from all elements that are currently in the list.

**Save collection** will save the current state to the selected collection

**Delete collection** will remove the actual file on disk!  
Deleting collections is disabled if elements can't be found in the currently loaded libraries. These elements might still be needed by some other library that is current not liked in the config. There is always the option to delete a collection file manually from disk (if its **personal** or **global**).

### Menu bar bottom

The **grab button** allows the user to drag all elements into another application.

The **copy to clipboard button** will copy all file paths to the clipboard.

Simply ***Ctrl/Command + v*** to paste the data somewhere else.

## Collection Format

The file format is a simple CSV file. Minimum requirements is a column called `uuid` and/or `name` .

When a collection is loaded, the software tries to validate the element data from the linked libraries. If a collection has an element of a library that is currently not loaded it will show a warning.

Using the `uuid` (the unique ID of an element, e.g. *7a7b25dd251b4f2bb498c20bc5e56665* ) is recommended since that one is unique across libraries. The `name` (name of the element, e.g. *fire_00023* ) can appear in multiple libraries. It is meant as a fallback if the `uuid` can not be validated.  
The **save button** for collections with elements from a library that is currently not linked in the config is deactivated.

### Example collection data

    uuid;name
    7a7b25dd251b4f2bb498c20bc5e56665;fire_00023
    83b139c0eac84c928d497eedad632ace;fire_00024

## Personal Collections

A personal collections are for the individual artists. The user can save private collections of the favorite elements.

To defined a custom location for the user collections use the environment variable:

`DASELEMENT_USER_COLLECTIONS`

### Make a personal collection global

To make an personal collection available as an global collection there are two options.

1. Select personal collection → click button **'create collection'** → select type **global** → save

2. Manually copy the file to the global collections folder

The personal collections are stored at this location:

~**Linux/Mac**~

`~/.das-element/collections`

~**Windows**~

`%USERPROFILE%/.das-element/collections`

## Global Collections

Creating, updating and deleting global collections is only possible with the **Standard** version.

Users with the **Lite** version cannot create, save or delete global collections.

Global collections can be shared with the team. For example, a supervisor can select the top 20 fire elements for a sequence and pass them to the artists. This saves artists time and gives them a solid starting point.

The order of loading the global collections:

* use collection defined with **environment variable** (`DASELEMENT_COLLECTIONS`)

* if not found, use collections defined with **environment variable in global resources** folder (`DASELEMENT_RESOURCES`)

  * Linux/Mac: `$DASELEMENT_RESOURCES/collections`

  * Windows: `%DASELEMENT_RESOURCES%/collections`

## Database Collection

Creating, updating and deleting database collections is only possible with the **Standard** version. Users with the **Lite** version cannot create, save or delete database collections.

The collections now also be saved in a database. This help simultaneously creating and editing of collections when working in a team.

First setup a **Collection Database** in the **Global Settings**.  
![de_collection_settings_create_database_02.png](https://docu.das-element.com/__attachments/a_ad225a5c84349603a2782d3e29d95d5af7d2f9487fb37a4510a42c769932f92b/de_collection_settings_create_database_02.png?cb=d0999a64e63bdb8559db6e7950f90f71)  
![de_collection_settings_create_database_01.png](https://docu.das-element.com/__attachments/a_340b3c22f343593a3939369656819af0ca0b311a5ade15b396c8559c068f2463/de_collection_settings_create_database_01.png?cb=15e03846c6004c5de91c6ceac2efe37f)

In the Gallery View → Collection area, this new database will now show up when a new collection is created.  
![de_collection_create_new_database_01.png](https://docu.das-element.com/__attachments/a_e314a26ed441a93292ec35198957d70d0e27a2327450bebb9e2712f4ef2496be/de_collection_create_new_database_01.png?cb=3a09d69ada8ca347b8ec7ae9c8a2ea6c)

---
language: "en"
---
# Command Line Tool (cli)

This is the command line tool from *das-element*.

It contains the API (supporting Python 2 \& 3) and the classification of image, sequence and movie files.  
You can deploy it on your render farm to use it in a post-render process for tagging of elements

## Versions

There are two command line tool (CLI) versions with a different range of features and file size.

### cli

This version is optimized to receive data from the database or update an element.

Smaller in file size and fast to use, but has a reduced set of features.

      add-library                    Add existing library path to config
      get-categories                 Get all categories of the library
      get-category                   Get category entity
      get-config-presets             Get config presets
      get-element-by-id              Get element entity from element ID
      get-element-by-name            Get element entity from element name
      get-element-by-uuid            Get element entity from element UUID
      get-elements                   Get all elements of the library
      get-libraries                  Get all libraries data for current config
      get-library-presets            Get library presets
      get-library-template-mappings  Get all library template mappings
      get-tag                        Get tag entity
      get-tags                       Get all tags of the library
      license                        Show license
      remove-library                 Remove library path from config
      update                         Updates database entity

### cli_full

Includes all features of the CLI, like ingesting files, rendering proxies or running a machine learning model.

This version has larger in file size and is slower.

      add-library                    Add existing library path to config
      create-config                  Create a new config.
      create-library                 Create new library and database
      delete-element                 Delete element
      delete-elements                Delete multiple elements
      get-categories                 Get all categories of the library
      get-category                   Get category entity
      get-config-presets             Get config presets
      get-element-by-id              Get element entity from element ID
      get-element-by-name            Get element entity from element name
      get-element-by-uuid            Get element entity from element UUID
      get-elements                   Get all elements of the library
      get-libraries                  Get all libraries data for current config
      get-library-presets            Get library presets
      get-library-template-mappings  Get all library template mappings
      get-meaningful-frame           Validate meaningful thumbnail frame number
      get-paths-from-disk            Get all file paths from a given folder.
      get-tag                        Get tag entity
      get-tags                       Get all tags of the library
      info                           Show machine learning model info
      ingest                         Ingest new element
      license                        Show license
      predict                        Predict the category for a give file path.
      remove-library                 Remove library path from config
      render-element-proxies         Render the proxy files for an element based on a template mapping
      update                         Updates database entity

*** ** * ** ***

## Installation

Save the software to your preferred location. That's all!

On Linux make sure to run this command to make the file executable:

    chmod +x das-element-cli_{version}_lin

## Define Config

By default the CLI will take the config file as defined in either the `~/.das-element/setup.ini` file or by the environment variable `DASELEMENT_CONFIG_PATH`.

To manually define a config use the flag: `--config` **before**(!) the function and flags, like this:

    das-element-cli --config /path/to/config.conf get-libraries

## API

To learn more about the application programming interface (API) follow [this link here.](http://docu.api.das-element.com/)

### Documentation

[**docu.api.das-element.com**](http://docu.api.das-element.com/)

### Python API

<https://github.com/das-element/python-api>

## How To machine learning prediction

Each version will be shipped with the model inside. Use the `info` flag to get the version number

### Simple usage

Bash

    das-element-cli.exe {file}

Bash

    # Linux & Mac
    das-element-cli predict /path/to/file.#.exr

    # Windows
    C:\das-element-cli.exe predict C:\path\to\file.#.exr

    # result:
    {"/path/to/file.#.exr": [{"tag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"}]}

**Valid file paths are ...**

* single file (single image or movie file):

  * `/path/to/file.exr`

  * `/path/to/file.mov`

* sequence of files

  * `/path/to/sequence.#.exr`

  * `/path/to/sequence.%04d.exr`

* directory

  * the software will crawl the folder structure to find any media files or sequences

### Multiple files

You can pass multiple file paths to the software.
Bash

    das-element-cli.exe predict {file1} {file2} {file3}

Bash

    das-element-cli.exe predict /path/to/files.#.exr /path/to/another/file.mov

    # result:
    {"/path/to/files.#.exr": [{"tag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"}],
    "/path/to/another/file.mov": [{"tag": "torch", "description": "stick with a flaming end used as a source of light", "value": "Q327954"}]}

### Multiple results

Get the top X predicted categories by using the flag: `--top {number}`
PowerShell

    das-element-cli.exe predict --top 3 /path/to/file.mov

    # result:
    {"/path/to/file.mov": [
          {"tag": "torch", "description": "stick with a flaming end used as a source of light", "value": "Q327954"},
          {"tag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"},
          {"tag": "flame", "description": "visible, gaseous part of a fire", "value": "Q235544"}
    ]}

## Python Example

Here is an example code snippet that you could use in your python code.
Python

    # print the top 3 tag predictions for a given file path

    import json
    import subprocess

    path = '/path/to/file.mov'
    command = ['./das-element-cli.exe', 'predict', '--top', '3', path]
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = process.communicate()

    if process.returncode != 0:
        print('Something went wrong: {} - Error: {}'.format(path, error))
    else:
        result = json.loads(output)
        for path, predictions in result.items():
            wikidata_ids = [item['value'] for item in  predictions]  # list of IDs from wikidata
            readable_tags = [item['tag'] for item in predictions]  # list of human readable tags
            print('For path: "{}" predicted the tags {}'.format(path, ', '.join(readable_tags)))

    # result:
    # For path: "/path/to/file.mov" predicted the tags: torch, flame, fire

## Result Format

For each file path you get a list of predictions for tags.  
The result is in JSON format. The default string format is Unicode.

File path gets returned as PosixPath with forwards slash, even for Windows.
JSON

    {'/path/to/file.mov': [{
                              'value': 'Q327954',
                              'tag': 'torch',
                              'description': 'stick with a flaming end used as a source of light'
                              'parents': "parents": [{'id': 'Q3196', 'name': 'fire'}, {'id': 'Q235544', 'name': 'flame'}]
                            }]}

|    **key**    |                      **description**                      |
|---------------|-----------------------------------------------------------|
| `value`       | identifier value - see here for more details              |
| `tag`         | human readable text of this category                      |
| `description` | description text for this category                        |
| `parents`     | the parent tags based on the category hierarchy structure |

## Flags for prediction

These are the flags that can be set for the prediction.  

|           **flag**           |                                                                                                                                                                                     **description**                                                                                                                                                                                     |
|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `info`                       | Shows information of the software. List all categories that this version of the model can classify.                                                                                                                                                                                                                                                                                     |
| `predict --top {number}`     | Get the top X predictions of tags. The first two predictions are probably the most significant ones.                                                                                                                                                                                                                                                                                    |
| `predict --model`            | File path to another model file (.wit) Each version will be shipped with a model file inside the executable                                                                                                                                                                                                                                                                             |
| `predict --filmstrip_frames` | Set the number of frames of a filmstrip for a sequence of images or movie files. *default value:* `36` *higher value* : takes longer, but this might give you more different tags *lower value* : faster, but might return less tags Example: for a sequence of 1000 frames only a number of frames get validated. This helps to speed up the process and still gets you a good result. |

## Troubleshooting

|                    **issue**                     |                                                                                                                    **solution**                                                                                                                    |
|--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MacOS shows unidentified developer for 'ffprobe' | For MacOS you should add the ffprobe to your trusted applications if you want to use the software. We use the ffmpeg and ffprobe build from MacOS from the following source: <https://evermeet.cx/ffmpeg/>                                         |
| CLI startup is slow                              | A new version is currently in development that is much faster! (Last update: December 2025) As a workaround use the unzipped CLI version for Windows. It can be downloaded from the website: `Download → CLI → das-element-cli-full_x.x.x_win.zip` |

---
language: "en"
---
# Connect to the renderfarm

The tutorial shows you how to integrate **das element** with your render farm.

In this example *AWS Deadline* is used. The concept however applies to every other render farm manager as well.

**Watch** [**this video tutorial**](https://www.youtube.com/watch?v=JIdV5zyFCI4)**to get started!**  
[![tutorial_renderfarm_preview.png](https://docu.das-element.com/__attachments/a_2f685ebbfb192d1a0541108ae05ac7405644384c76b6283bc0212ecb30cd6e8d/tutorial_renderfarm_preview.png?cb=3084c72ef1c33a499227e59944ce2c5e)](https://www.youtube.com/watch?v=JIdV5zyFCI4)

## Follow these steps

* create shared resources folder on the server

  * add environment variable **DASELEMENT_RESOURCES**to point to that shared folder

* add [pre \& post render hooks](https://github.com/das-element/resources/tree/main/scripts/hooks/examples/deadline) (needed for the job dependencies)

* adjust transcoding templates

  * copy and paste the "executable" and "parameters" from [the example files](https://github.com/das-element/resources)

    can be found on the top of each Python files

* add new `Path Values` for the `width` and `height`

## Example files

The latest example files for renderfarm jobs can be found here:

<https://github.com/das-element/resources>

*** ** * ** ***

## Python hooks

For each transcoding task, the Python hook for 'pre_render' (pre_render.py) and 'post render' (post_render.py) gets the Job ID from the render farm. If the main task isn't finished then there is nothing to render for the proxy tasks and they will probably fail.  
It is why it is important to set a dependencies on the proxy tasks to the main task.

### Pre Render Hook

The input is the `resolver data dictionary` which will be used to resolve the path pattern. You can modify it here before the transcoding task gets processed.

You will need to return the same dictionary with your changes included.

In the example below, in order to resolve a path pattern like `<custom.dependecy>` you need to add some value for the custom data. If that is not provided the resolve would otherwise fail if you re-render the proxies and there is no main task to provide the dependency which we normally would get from the post render hook after sending the task to the render farm.

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/deadline/pre_render.py>

### Post Render Hook

The input is the output of the process called by the custom command task.

You will have to return a Dictionary which will be added as `custom` to the resolver data and can later be accessed in the Path Builder. `return {'dependency': job_id}` can later be resolved with `<custom.dependency>`

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/deadline/post_render.py>

## Transcoding tasks

### Examples for Nuke

Here are some example scripts and templates on how to use *The Foundry Nuke* for transcoding elements.

Check out the example script here:

<https://github.com/das-element/resources/tree/main/scripts/custom/examples/nuke>

### Transcoding task: main element

#### Simple command line

    # exec:
    # Linux:
    cp
    # Windows:
    copy

    params:
    \"<source.path>\" \"<path>\"

#### Python script

The source file(s) can be a single file, like a single frame or a movie file or a sequence of files.

That makes stuff a little bit more complicated if you want to have a generic file to deal with all these cases.

Find below an example script which was tested on Linux and Windows with Deadline.

Please make sure to install the [fileseq](https://pypi.org/project/Fileseq/) Python package. ❤ Thank you to the developers!

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/copy_main.py>

### Transcoding task: thumbnail

In this example we use FFmpeg to create the thumbnail.

#### Simple command line

It shows you a way how to do it without any custom scripting. However this might be not very practical in production, be cause e need to create two transcoding tasks. One for single image files and another for movies/sequences. They have different command lines because movies/sequences need to know which frame is the thumbnail.

    # exec:
    /opt/Thinkbox/Deadline10/bin/deadlinecommand

    # params:
    # command line for single images
    -SubmitCommandLineJob -executable "/usr/bin/ffmpeg" -arguments "-i "<path>" -y -vframes 1 -an -s <width>x<height> "<path_thumbnail>"" -frames 1 -chunksize 1 -priority 50 -name "[das element] <name> - thumbnail image" -prop BatchName="[das element] <name>" -prop JobDependencies="<custom.dependency>"
    # command line for movie files/sequences  (the additional time flag (-ss) is defined)
    -SubmitCommandLineJob -executable "/usr/bin/ffmpeg" -arguments "-i "<path>" -y -vframes 1 -an -s <width>x<height> -ss <frame_first> "<path_thumbnail>"" -frames 1 -chunksize 1 -priority 50 -name "[das element] <name> - thumbnail movie/sequence" -prop BatchName="[das element] <name>" -prop JobDependencies="<custom.dependency>"

#### Python script

Creating proxy thumbnail can also be done with a custom python script. FFmpeg is used to render the proxy files in this example.

There is a parameter that describes the type of media (`<media_type>)` this is either `image`, `movie` or `sequence`. This helps you to determine how to deal with the different file paths types. It can be included in the Custom Commands Parameters.

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/create_thumbnail.py>

### Transcoding task: proxy movie

In this example we use FFmpeg to create proxy movie file.

#### Simple command line

    # exec:
    /opt/Thinkbox/Deadline10/bin/deadlinecommand

    # params:
    -SubmitCommandLineJob -executable "/usr/bin/ffmpeg" -arguments "-i \"<path>\" -y -r 24 -vf \"scale=<width>:<height>:force_original_aspect_ratio=decrease,pad=<width>:<height>:(ow-iw)/2:(oh-ih)/2\" -vcodec libx264 -crf 23 -preset faster -tune film -pix_fmt yuv420p -framerate 24 -timecode 00:00:41:17 -acodec copy \"<path_proxy>\"" -frames 1 -chunksize 1 -priority 50 -name "[das element] <name> - proxy movie" -prop BatchName="[das element] <name>" -prop JobDependencies="<custom.dependency>"

#### Python script

Creating proxy movie files can also be done with a custom python script. FFmpeg is used to render the proxy files in this example.

There is a parameter that describes the type of media (`<media_type>)` this is either `image`, `movie` or `sequence`. This helps you to determine how to deal with the different file paths types. It can be included in the Custom Commands Parameters.

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/create_proxy.py>

### Transcoding task: filmstrip

In this example we use FFmpeg to create a filmstrip for movie files and sequences of images.

#### Python script

This can be done with a custom python script. FFmpeg is used to render the filmstrip in this example.

There is a parameter that describes the type of media (`<media_type>)` this is either `image`, `movie` or `sequence`. This helps you to determine how to deal with the different file paths types. It can be included in the Custom Commands Parameters.

Check out the example script here:

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/create_filmstrip.py>

## List of useful tags

The keys get resolved during ingest/proxy generation time and will be replaced with the actual value.

You can use the post render hook to add custom values.  

|           **key**           |                                                             **Description**                                                              |                                   **Example value**                                    |
|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
| `custom.???`                | Custom additional values from the user that get returned from a post render hook script. (post_render.py)                                | `{dependency: '611b8af0f369f3140ace450c'}`                                             |
| `width`                     | Pixel Width from either the source file, database entity, the transcoding preset (like thumbnail) or the overwrite from the Path Values  | `1920`                                                                                 |
| `height`                    | Pixel Height from either the source file, database entity, the transcoding preset (like thumbnail) or the overwrite from the Path Values | `1080`                                                                                 |
| `pixel_aspect`              | Pixel Aspect Ratio from either the source file, the transcoding preset (like thumbnail) or the overwrite from the Path Values            | `1`                                                                                    |
| `frame_first`               | First frame from either the source file, database entity or the overwrite from the Path Values                                           | `1001`                                                                                 |
| `frame_last`                | Last frame from either the source file, database entity or the overwrite from the Path Values                                            | `1095`                                                                                 |
| `name`                      | Name of the element in the database                                                                                                      | `artificial_00012`                                                                     |
| `id`                        | Database ID of the element                                                                                                               | `82 `                                                                                  |
| `media_type`                | The type of media which is either its `image`, `movie` or `sequence`                                                                     | `movie`                                                                                |
| `path`                      | File path to element                                                                                                                     | `/some/path/artificial/artificial_00012/main_1920x1080_source/artificial_00012.mov`    |
| `path_filmstrip`            | File path to elements filmstrip                                                                                                          | `/some/path/artificial/artificial_00012/filmstrip_1920x1080_srgb/artificial_00012.jpg` |
| `path_proxy`                | File path to elements proxy movie file                                                                                                   | `/some/path/artificial/artificial_00012/proxy_1920x1080_srgb/artificial_00012.mov`     |
| `path_thumbnail`            | File path to elements thumbnail                                                                                                          | `/some/path/artificial/artificial_00012/thumb_960x540_srgb/artificial_00012.jpg`       |
| `path_source` `source.path` | File path to original source                                                                                                             | `/source/file/path/folder/the_source_file.mov`                                         |
| `source.name`               | Full file name of original source file(s)                                                                                                | `foo_bar.%04.exr`                                                                      |
| `source.basename`           | Basename file name, without extension and frame counter, of original source file(s)                                                      | `foo_bar`                                                                              |
| `source.extension`          | File extension of original source file(s)                                                                                                | `exr`                                                                                  |
| `colorspace_source`         | Colorspace of the original source file(s)                                                                                                | `linear`                                                                               |

---
language: "en"
---
# Convert database

In version 1.2.2 a new feature is introduced that allows you to convert between the different database types.

A new database will be created in this process that is from now on used for this library. The old database stays as it is.  
Depending on your database and the amount of elements it might take a few minutes to convert everything. Please don't leave the dialog!

In the Settings → *you library* → Library Database section → "click to show database settings" → convert database  
![das-element_vfx_element_asset_library_software_convert-db-1.png](https://docu.das-element.com/__attachments/a_043ee533653d011faa30eeda7f074d15b1c57621b774815c8434ad770e4d8036/das-element_vfx_element_asset_library_software_convert-db-1.png?cb=636e0a8b08099748b9dda234c34c766b)  
![das-element_vfx_element_asset_library_software_convert-db-2.png](https://docu.das-element.com/__attachments/a_1608774348cd3acaf44442dee9cfb4b5e1a1d8ea1d304300a26835db4808c4f3/das-element_vfx_element_asset_library_software_convert-db-2.png?cb=17fd31850651ecf3d5951adabbfc68c1)

---
language: "en"
---
# Convert element to EXR sequence

This guide shows you how to transcode a source movie file to a EXR sequence. We can use Nuke to have full control how to transcode the EXRs, e.g. the color management, compression, adding metadata, etc.

* in the library settings - create a new **Transcoding template**

* change the **Type of output file** to **sequence of files (**this will output the element path as a sequence notation with a frame counter)

* add a **Transcoding Task** and change the type to **Custom Command**(right side next to the cross icon)

  * input here for **exec** and **params** these example values (adjust them to your pipeline)

    * exec

      `/usr/local/Nuke12.2v3/Nuke12.2v3`

    * params

      `-t "$DASELEMENT_RESOURCES/scripts/custom/nuke/nuke_convert.py" "$DASELEMENT_RESOURCES/scripts/custom/nuke/nuke_convert_lin2lin.nk" "<source.directory>/<source.filename>" "<path>" <source.frame_first> <source.frame_last> <frame_first> <frame_last>`

* add two **Path Values** and overwrite the **colorspace** with e.g. **linear** and **extension** to **exr**

* assign this **Transcoding template** to a **Template mapping**and also set the proxies (thumbnail/filmstrip/proxy)

It should look something like this:  
![das-element_settings-library_convert-to-exr.png](https://docu.das-element.com/__attachments/a_e9c3a3c0df379a015c316d26316afe8d4abe0cc95f243b9dda6512f88caa88a4/das-element_settings-library_convert-to-exr.png?cb=4815a392e2cae7c533b2954d87e11c0d)

Example Nuke scripts:

<https://github.com/das-element/resources/tree/main/scripts/custom/examples/nuke>

Here is an example command line (exec \& params) to send the transcoding jobs to the renderfarm Deadline:

**exec**

`/opt/Thinkbox/Deadline10/bin/deadlinecommand`

**params**

`-SubmitCommandLineJob -executable "/usr/local/Nuke12.2v3/Nuke12.2v3" -arguments "-t \"$DASELEMENT_RESOURCES/scripts/custom/nuke/nuke_convert.py\" \"$DASELEMENT_RESOURCES/scripts/custom/nuke/nuke_convert_lin2lin.nk\" \"<source.directory>/<source.filename>\" \"<path>\" <source.frame_first> <source.frame_last> <frame_first> <frame_last>" -name "[das element] <name> - main" -prop BatchName="[das element] <name>" -priority 50 -prop OutputDirectory0=\"<paths.main.directory>\" -prop OutputFilename0=\"<paths.main.filename>\"`

---
language: "en"
---
# Copy source to element after ingest fail

In some cases the copying task of the source media to the elements folder might fail or is otherwise interrupted. In this guide we discuss how you can copy the source files into the elements main folder after the ingest is already done.

## How to configure

* create a new Template Mapping - e.g. *called copy files from source*

* create two new Transcoding templates

  * **noop** - placeholder to do nothing

    ![image-20230227-113055.png](/__attachments/a_a897c9824b14064f449ccd621577be6af52968fcaee5bafb08d20e8cafef7d4c/image-20230227-113055.png?cb=3248866df4a00ea730e435db417523d6)

  * **copy source to element** - copy task to copy from source path to element main path

    Please make sure to check the box: *force use of source path*

    ![image-20230227-113021.png](/__attachments/a_acfb58cde6d1183dc85bbc6b5e88f9104f49fa10fd670be26a83f1c811d748b4/image-20230227-113021.png?cb=e6249f526666682c086eb20119af931f)

* set **noop** for main/proxy/thumbnail/filmstrip

* set **copy source to element** as an extra task

  ![image-20230227-113407.png](https://docu.das-element.com/__attachments/a_ebdc48f98364fcdb82b6029994bf3ebb1d6eeb09195b1ccb686f23cdf8973c32/image-20230227-113407.png?cb=cfa3d3e1a06a8aff8cc7b841a482e15c)

We want to run a **extra task** that copies files from the source location to the main element. When re-rendering a elements media the **main task** will not be executed. The proxies jobs will be executed before the **extra task.** That's why we need to set the other proxies tasks to a **noop** task**.** Otherwise it will show an error that no transcoding template is defined.

## Start copy process

* go to the Gallery View

* select the element

* in Element Details change to **edit mode**

* select**transcoding template**

* run the**re-render**task

![image-20230227-121945.png](https://docu.das-element.com/__attachments/a_72a595cd22e552710d71de7ecf40cf7cbba243b8a2498bd115714695aff3ddc3/image-20230227-121945.png?cb=acde0a54878dd36c9d2b52fc60583d69)

## Further customization

If more customization of the copy process is required it is possible to execute a Python script. For example to continue a failed copy task and don't copy everything again.

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/copy_main.py>

---
language: "en"
---
# Customization

Everything you need to know about customizing the software to you needs.

Useful example scripts can be found here: <https://github.com/das-element/resources>

---
language: "en"
---
# Database

Each library has its own database.

You have the option to choose from these types of databases.

[Setup SQLite](https://docu.das-element.com/database-sqlite.md)

[Setup PostgreSQL](https://docu.das-element.com/database-postgres.md)

[Setup MySQL/MariaDB](https://docu.das-element.com/database-mysql-mariadb.md)

It's recommended to go with the **Postgres** or **MySQL** or **MariaDB** database. The file based database (SQLite) works great if you use it locally but has some draw backs if you want to shared it server over the network.

You have to option to later convert between the different database types. Please [follow this tutorial](https://docu.das-element.com/convert-database.md)on how to achieve that.

---
language: "en"
---
# Database - MySQL/MariaDB

## Requirements

You will need a running [MySQL](https://www.mysql.com/) or [MariaDB](https://mariadb.org/) server.

You need a dedicated server running where everybody has access to over the network. It's also possible to host the database in the Cloud or at you webhost. A web search will show you how to install one or see operating system depended installation instructions below.

## Creating a new library

When you create a new library the software will automatically create the new database for you.

All you have to provide is the **login information** (user \& password), the **database server** (server name or IP address) and the **database name -** how you want to call the new database (Example: **das_element**). The software will setup all the tables for you. Nothing that you have to do.

*Optional:* You can use a SSL certificate.

## Install MySQL/MariaDB

On a machine that's accessible by everybody on the network (e.g. Virtual Machine) install the MySQL/MariaDB Software.

Depending on you operating system follow the installation instructions (Step 1) below. Make sure to configure the server correctly (Step 2). The last step (Step 3) is to create a User for the actual library.

### Install MySQL + phpMyAdmin - Docker Compose

A easy way to create a new database server is to use [Docker Compose](https://docs.docker.com/compose/)

Please make sure to install Docker and Docker Compose first.

1. create a new folder: **database_mysql**

2. create a new text file inside the folder called: **docker-compose.yml**

3. add this code snipped into the file ...

YAML

    version: '3'
     
    services:
      db:
        image: mysql:8
        container_name: db
        environment:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_USER: dbuser
          MYSQL_PASSWORD: dbuser
        ports:
          - 3306:3306
        volumes:
          - mysql-data:/var/lib/mysql
      phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: pma
        links:
          - db
        environment:
          PMA_HOST: db
          PMA_PORT: 3306
          PMA_ARBITRARY: 1
        restart: always
        ports:
          - 8081:80
    volumes:
        mysql-data:

Run this command to start the database:

    docker-compose up -d 

In a web browser you can now access phpMyAdmin: [http://localhost:8081](http://localhost:8081/)

Login as root user. Login information as defined in the *docker-compose.yml* file.  
![image-20221109-140941.png](https://docu.das-element.com/__attachments/a_d169f69faef1b2df89d51910651201c18d437b1161bbd12e88ad2afc2434da77/image-20221109-140941.png?cb=61ff6d4bbaeb16e2097617fe86a3d066)

#### Change the database user privileges

If you setup a database user, please make sure to grant all privileges to that user.

The user needs to be able to create a database, insert, update and delete database entries.

Use phpMyAdmin (need to be logged in as root user) or login with the terminal via [mysql](https://dev.mysql.com/doc/refman/8.0/en/mysql.html)

`mysql> GRANT ALL PRIVILEGES on *.* TO 'dbuser'@'localhost';`  
![image-20221109-141212.png](https://docu.das-element.com/__attachments/a_bc93af7387539620bc90ee53ed3f956024d22fc69314a6e6d2640335935c8500/image-20221109-141212.png?cb=58f77eed44b9a55ef901ce67408a883d)

---
language: "en"
---
# Database - Postgres

## Requirements

You will need a running [PostgreSQL](https://www.postgresql.org/) server.

You need a dedicated server running where everybody has access to over the network. It's also possible to host the database in the Cloud or at you webhost. A web search will show you how to install one or see operating system depended installation instructions below.

## Creating a new library

![image-20251023-084105.png](https://docu.das-element.com/__attachments/a_d76b6a9de0e25bd75d91f29a6f5fa8f3f015e888632a6b7f2c538ca50d3ab1ff/image-20251023-084105.png?cb=80d2f2f9b3a83e116618387b2c1ba579)

When you create a new library the software will automatically create the new database for you.

All you have to provide is the **login information** (user \& password), the **database server** (server name or IP address) and the **database name -** how you want to call the new database (Example: **das_element** ). The software will setup all the tables for you. Nothing that you have to do.

*Optional:* You can use a SSL certificate.  

|   SSL mode    |                                                                  Statement                                                                  |
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------|
| `disable`     | I don't care about security, and I don't want to pay the overhead of encryption.                                                            |
| `allow`       | I don't care about security, but I will pay the overhead of encryption if the server insists on it.                                         |
| `prefer`      | I don't care about encryption, but I wish to pay the overhead of encryption if the server supports it.                                      |
| `require`     | I want my data to be encrypted, and I accept the overhead. I trust that the network will make sure I always connect to the server I want.   |
| `verify-ca`   | I want my data encrypted, and I accept the overhead. I want to be sure that I connect to a server that I trust.                             |
| `verify-full` | I want my data encrypted, and I accept the overhead. I want to be sure that I connect to a server I trust, and that it's the one I specify. |

Source: <https://www.postgresql.org/docs/current/libpq-ssl.html>

### Example for AWS RDS

SSL Mode: `verifty-ca`

Root certificate: ~/path/to/rds-ssl-ca-cert.pem~

*** ** * ** ***

## Setup Postgres Server

1. **Install Postgres**

   1. [Linux](https://docu.das-element.com/docu/database-postgres#Database-Postgres-InstallPostgres-Linux)

   2. [MacOS](https://docu.das-element.com/docu/database-postgres#Database-Postgres-InstallPostgres-MacOS)

   3. [Windows](https://docu.das-element.com/docu/database-postgres#Database-Postgres-InstallPostgres-Windows)

   4. [Docker Compose](https://docu.das-element.com/docu/database-postgres#Database-Postgres-InstallPostgres-DockerCompose)

2. **Configure Server**

3. **Create User**

## Install Postgres

On a machine that's accessible by everybody on the network (e.g. Virtual Machine) install the Postgres Software.

Depending on you operating system follow the installation instructions (Step 1) below. Make sure to configure the server correctly (Step 2). The last step (Step 3) is to create a User for the actual library.

### Install Postgres - Linux

Installation guide for Debian: <https://linuxize.com/post/how-to-install-postgresql-on-debian-10/>

Make sure to setup the **postgresql.conf** and **pg_hba.conf** correctly. See below.

### Install Postgres - MacOS

It's recommended to use [Homebrew to install Postgres](https://formulae.brew.sh/formula/postgresql)

<https://www.sqlshack.com/setting-up-a-postgresql-database-on-mac/>

    brew install postgres

Make sure to setup the **postgresql.conf** and **pg_hba.conf** correctly. See below.

### Install Postgres - Windows

Download the installer: <https://www.postgresql.org/download/windows/>

Installation Guide: <https://www.enterprisedb.com/docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/01_invoking_the_graphical_installer/>

### Install Postgres - Docker Compose

A easy way to create a new database server is to use [Docker Compose](https://docs.docker.com/compose/)

Please make sure to install Docker and Docker Compose first.

1. create a new folder: **database_postgres**

2. create a new text file inside the folder called: **docker-compose.yml**

3. add this code snipped into the file ...

   This example script will create Docker Compose for Postgres \& pgAdmin

   Please make sure to update marked: `{CHANGE HERE}`

YAML

    version: '3.5'

    services:
      postgres:
        container_name: postgres_container
        image: postgres
        environment:
          POSTGRES_USER: {CHANGE HERE}
          POSTGRES_PASSWORD: {CHANGE HERE}
          PGDATA: /data/postgres
        volumes:
           - postgres:/data/postgres
        ports:
          - "5432:5432"
        networks:
          - postgres
        restart: unless-stopped
     
      pgadmin:
        container_name: pgadmin_container
        image: dpage/pgadmin4
        environment:
          PGADMIN_DEFAULT_EMAIL: {CHANGE HERE}
          PGADMIN_DEFAULT_PASSWORD: {CHANGE HERE}
          PGADMIN_CONFIG_SERVER_MODE: 'False'
        volumes:
           - pgadmin:/root/.pgadmin
        ports:
          - "6060:80"
        networks:
          - postgres
        restart: unless-stopped

    networks:
      postgres:
        driver: bridge

    volumes:
        postgres:
        pgadmin:

Run this command to start the database:

    docker-compose up -d

After installation you can access [pgAdmin](https://www.pgadmin.org/) via port `6060` to manage the database.

In a web browser navigate to: `http://my-server:6060`

## Configure Postgres Server

After the installation of the Postgres you need to configure the server to allow access from a remote workstation. There are two files that need changes:

1. **configure database to enable networking**

   1. edit the file: `postgresql.conf`

      *Linux* : `/etc/postgresql/{version}/main/postgresql.conf`

      *MacOS:* `/usr/local/var/postgresql.conf`

      *Windows:* `C:\Program Files\PostgreSQL\{version}\data\postgresql.conf`

   2. remove the **#** before the line: `listen_addresses = '*'`

      This allows access from all IP addresses.

   3. save the file

2. **allow access from remote workstation**

   1. edit the file: `pg_hba.conf`

      *Linux:* `/etc/postgresql/{version}/main/pg_hba.conf`

      *MacOS:* `/usr/local/var/pg_hba.conf`

      *Windows:* `C:\Program Files\PostgreSQL\{version}\data\pg_hba.conf`

   2. add this line to the block **IPV4**:

    # TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
    # IPv4 local connections
    host    all             all             0.0.0.0/0               trust

Now restart the Postgres service to activate the changes:

    # Linux
    sudo service postgresql.service restart

    # MacOS (if instaleld with homebrew)
    sudo brew services restart postgresql

    # Windows
    1) press Windows key + R to open the 'RUN' dialog
    2) type 'services.msc' hit enter
    3) find the 'postgresql' service
    4) right click -> restart

## Edit Firewall

Allow access to the database server, otherwise the connection gets blocked and Users can not connect to the database.

The default Port for Postgres is `5432`

    # Windows
    Control Panel > System and Security > Windows Firewall > Allow an app through Windows Firewall

## Create Database User

Create a User that can read/write the library information to the database.  
The default password for the 'postgres' user should also be 'postgres'.

### psql

If you are familiar with the command line you can use [**psql**](https://www.postgresql.org/docs/current/app-psql.html) to create a new user.

The User needs permission to:

* login

* create databases

    # postgres is the default postgres database
    psql --port 5433 postgres

    # create user that is allowed to create new databases and read/write information
    CREATE ROLE dbuser LOGIN password 'password';
    ALTER USER dbuser CREATEDB;

#### pgAdmin4

If you prefer a graphical user interface, use the tool [**pgAdmin4**](https://www.pgadmin.org/) to view \& edit your Database. You can install the software on any workstation to access the Database server. When you start the application for the first time you have to set an master password - it's only for your local workstation to access pgAdmin4.  
![image-20220708-145303.png](https://docu.das-element.com/__attachments/a_4a686c42383e499d74b049fb76d81eb8327ed07b76826f6fdde4190869bb8193/image-20220708-145303.png?cb=46629d397716d5145f07c27dacf7a518)

Dashboard → Add New Server → input information (Host name/address, Username, Password)  
![image-20220708-145341.png](https://docu.das-element.com/__attachments/a_8eddf7dd77be37f2fa549f890a5a6747492589e1ebc9acff68b6150d2a64e55f/image-20220708-145341.png?cb=ab17730e8e85e5ccd9cfc9a6121f33d8)  
![image-20220708-145408.png](https://docu.das-element.com/__attachments/a_4328894871dbb23cba8c6fbd20f98907a55f78432093d11860d030e961cbeab0/image-20220708-145408.png?cb=1d8e4f76a0dfaa6eed868e8f8be6b6e5)

Create a **Database User** to allow access the database.  
![das-element_install_postgres_create_user.png](https://docu.das-element.com/__attachments/a_d7a74da709be6f998d5c8f3ae9f151d4e40584375c6622a59b5e7c75f4a7fd61/das-element_install_postgres_create_user.png?cb=d4436df271c87fcd40db307ebb73de8c)

Set the Name (General tab) and the password (Definition-tab).

The User needs permission (Privileges-tab) to:

* login

* create databases

![das-element_install_postgres_create-new-user.png](https://docu.das-element.com/__attachments/a_26ecebcd220c1d5ed323dc9d46afcc2f153bd6f8546df956c67f5e143215075b/das-element_install_postgres_create-new-user.png?cb=201e7937fcaf17b784d3c5b3f983abaa)

## Troubleshooting

### no pg_hba.conf entry for host

Edit **pg_hba.conf**and allow Users access the database.

### Can not connect to database

Check if the firewall is blocking the connection. By default Postgres is running on Port `5432`

---
language: "en"
---
# Database - SQLite

When you create a new library the software will automatically create the file based database (SQLite) for you.

The file based database (SQLite) in not really meant to be used on a server. It can work, but there are some drawbacks. If you run into issues, please consider moving to a Postgres database instead.

Select the file base database and define the file location. Make sure to include the file name and the correct file extension **(.db)**

**Example:**

`/mnt/server/library/.config/das-element.db`

Learn here how to convert you file based database (SQLite) a Postgres database.

---
language: "en"
---
# DCC integration

There are no plugins needed to integrate the asset library with other third-party Digital Content Creation (DCC) tools, as long as the DCC accepts drag\&drop of data from the file explorer. A simple drag\&drop of assets is enough to import them into other DCCs.

## Quick tips

* set drag\&drop notation to **JSON data**(all infos about the asset - ready to use in Python)

* script your custom drop event handler in other DCCs

## Sequence file path notation

There is not that one universal file path definition/notation for a sequence of files. When elements are being drag\&dropped outside of *Das Element* into another software, some applications like Autodesk Flame, require a custom file path notation for dropped file sequences.

In the Gallery View you can choose what file path notation is begin drag\&dropped.

To predefine this drop notation (e.g. for all users), you can set the environment variable: `DASELEMENT_DND_NOTATION`

Learn more about the [environment variable here](https://docu.das-element.com/environment-variables.md).  
![das-element_2-1_gallery_dnd-notation.png](https://docu.das-element.com/__attachments/a_dfa6b613b77a781966931f6b31f2b048f087c0b703ceeb181c6ac99205a0850b/das-element_2-1_gallery_dnd-notation.png?cb=b13b7d32b108caca7e5be68dd2d8e2ce)

## Drop event handler

There are some cases where you want to have a more customized behavior when assets are dropped in your DCC. For example to automatically build a shader tree based on the additional texture files.

Some applications allow you to script your own drop event handlers. These are events that get triggered when you drop data into the software. This is a best way to customize the behavior of dropped assets into your DCCs.  
To get all available information for an asset, choose the **JSON data** drop notation.

This returns a JSON formatted dictionary, ready to use in Python, with all information about that assets.

File paths, additional files, metadata, tags, first / last frames, ....

### Example drop handler for Nuke

<https://github.com/das-element/resources/blob/main/misc/code_snippets/nuke_custom_drop_handler.py>

#### Useful values of the JSON data

|-----------------------|------------------------------------------------------------------------------------------------------------------------------------|
| `path`                | File path to main element                                                                                                          |
| `additionals[0].path` | File path to first additional file                                                                                                 |
| `metadata`            | Metadata items of element                                                                                                          |
| `name`                | Name of the element                                                                                                                |
| `frame_first`         | First frame of the sequence                                                                                                        |
| `frame_last`          | Last frame of the sequence                                                                                                         |
| `width`               | Width of the element                                                                                                               |
| `height`              | Height of the element                                                                                                              |
| `media_type`          | Info about the type of asset. Possible values are: `image` `movie` `sequence` `pdf` `project-file` `3d-model` `3d-scene` `generic` |
| `uuid`                | Unique ID of the element                                                                                                           |

---
language: "en"
---
# Delete element(s)

[How to Delete Elements.mp4](https://docu.das-element.com/__attachments/a_2015aa2fe343555c6c7782c0b2d2850f2ffc4e5f415abd8b197bf67ab7712f01/How%2520to%2520Delete%2520Elements.mp4.md)

There are two options to delete an element from the library:

* only from the database (keeps the file on disk)

* from the database and the file on disk

## How to delete element(s)

### with the GUI

* go to Gallery view

* select element(s) you want to delete

* go to **edit mode**

  ![das-element-vfx-asset-element-library-software_edit-mode_button.png](https://docu.das-element.com/__attachments/a_593a53364c57f7520c31e441be4e0d3eefbcb531db5343939bb49a73168062c3/das-element-vfx-asset-element-library-software_edit-mode_button.png?cb=ef15e125b949a2012732adcfc27ef2d2)
* click **Delete Element** button

![das-element-vfx-asset-element-library-software_edit-mode_02.png](https://docu.das-element.com/__attachments/a_4ab672f5a79caf492dd71e180f96f1e31bbbea30ebbb5405761d7b6f18d1a346/das-element-vfx-asset-element-library-software_edit-mode_02.png?cb=77378188bf2f2961a2f2a3add2ed2163)  
![das-element-vfx-asset-element-library-software_dialog-delete-element.png](https://docu.das-element.com/__attachments/a_7711fd1c59712dfbc39f6199e2b99d5349a8badd4baf43f2cd9e36ac9ff7154f/das-element-vfx-asset-element-library-software_dialog-delete-element.png?cb=0d24a24eae086f3f7e1eae15463adb09)

### with the API

* use the CLI version

* delete an element by its `UUID`

* Windows:

  `das-element-cli.exe delete-element 0186e9be35a330e468312ca02ef6ebe4 --database --disk`

* Linux/MacOS:

  `das-element-cli delete-element 0186e9be35a330e468312ca02ef6ebe4 --database --disk`

There are two flags (they can be used together):

`--database` set this flag to delete data from the database

`--disk` set this flag to delete all element files from disk

---
language: "en"
---
# Element Details View

On the right side of the [Gallery View](https://docu.das-element.com/gallery-view.md), you will find the Element Details View, which provides more information about the selected element.

Toggle the advanced button to show more detailed information about the file path, unique ID, and source file.  
![image-20240607-162203.png](https://docu.das-element.com/__attachments/a_112c7286dd8691a424a00ea0673898cfdefa320ddcf6e36742832ecb6b91c90d/image-20240607-162203.png?cb=5237bd03abe8dcefd556831c66a3ab6b)

## Edit Mode (only in standard version)

Editing elements can be done by activating the `edit mode`. A red outline indicates that the edit mode is active. In this mode, you can also [delete an element.](https://docu.das-element.com/delete-an-element.md)  
![image-20240607-161914.png](https://docu.das-element.com/__attachments/a_c7cb42fc48966d3148e103c137bcd5291ff0958727b8dfc9e4792637143ad594/image-20240607-161914.png?cb=5ed93b822f5dbd8f18559e49f9c010f0)
Save changes  
![image-20240607-161926.png](https://docu.das-element.com/__attachments/a_02fe017d457bbc00ede272222f6411becc025cd3c429ac8d1e5b4dff67db59a5/image-20240607-161926.png?cb=52f8aa8abf29808a73a29fc748ecd446)
Discard changes

### Similar elements

Below the element information, you will see visually similar elements to the one you selected.  
![image-20240607-160520.png](https://docu.das-element.com/__attachments/a_481abb80cc01dbeed903663d04da76010a5547aa78e708b6edd2617dcbcc0cfc/image-20240607-160520.png?cb=c693d71dd1ca711921a0c5fb34b215ca)

---
language: "en"
---
# Environment Variables

## Variables.env file

In the users config directory there is a file called: **variables.env**

This file will be read before the software start. Add all the environment variables you need in that file.

### Linux / MacOS

    ~/.das-element/variables.env

#### Windows

    %homepath%/.das-element/variables.env

Any environment variables set globally on your operating system will be overwritten by the variables in the **variables.env** file.

To define a custom location for the user config directory by using the environment variable: `DASELEMENT_USER_CONFIG_PATH`  
It is possible to use other environment variables in the values for the environment variables below:

Example:

`export CURRENT_PROJECT=awesome_project `

`export DASELEMENT_CONFIG_PATH=/mnt/server/{CURRENT_PROJECT}/config/das-element.conf`

## List of available environment variables

|                                                         **variable**                                                         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    **description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| DASELEMENT_USER_CONFIG_PATH                                                                                                  | define location of user specific config files like variables.env, setup.ini, logs, user collections,. etc. Default if not set: *Linux / MacOS:* `~/.das-element` *Windows:* `%homepath%/.das-element` )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| DASELEMENT_LICENSE alternatively this can be used: RLM_LICENSE                                                               | point to the license server Pattern: `{port}@{hostname}` Example `5053@vfx-license` default Port: `5053`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| DASELEMENT_LICENSE_TYPE                                                                                                      | starts a local license server if variable is set to `local` Will search for license files in: *Linux / MacOS:* `~/.das-element/license` *Windows:* `%homepath%/.das-element/license` options: `local`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| DASELEMENT_LOG_LEVEL                                                                                                         | set the logging level (default: `info`) options: `debug | info | warning | critical`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| DASELEMENT_API_HOST                                                                                                          | address to the API server (default: `127.0.01`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| DASELEMENT_API_PORT                                                                                                          | port to connect to the API server (default: `1810`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| DASELEMENT_CACHE_HOST                                                                                                        | address to the cache server (default: `127.0.01`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| DASELEMENT_CACHE_PORT                                                                                                        | port to connect to the cache server (default: `6379`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| DASELEMENT_CONFIG_PATH                                                                                                       | file path to the config file (`.conf`) Example: `/mnt/server/das-element.conf`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| DASELEMENT_RESOURCES                                                                                                         | directory path to the resources folder, for presets, hooks, etc. Example: `/mnt/server/shared_folder/das-element_resources`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| DASELEMENT_HOOKS                                                                                                             | directory path to hook files This will be prioritized over hook files in the resources folder Example: `/mnt/server/{CURRENT_PROJECT}/config/hooks`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| DASELEMENT_HIERARCHY                                                                                                         | directory path to hierarchy file. A file called `hierarchy.json` must be located inside that directory. This will be prioritized over hierarchy file in the resources folder Example: `/mnt/server/{CURRENT_PROJECT}/config/custom_hierarchy`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| DASELEMENT_COLLECTIONS                                                                                                       | directory path to shared, global collections                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| DASELEMENT_USER_COLLECTIONS                                                                                                  | directory path to user specific collections                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| DASELEMENT_INGEST_LOGS                                                                                                       | custom directory path to store ingest logs will create sub-folders for each library                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| DASELEMENT_THIRD_PARTY_DIR                                                                                                   | directory path to third-party folder where the tools like *ffmpeg* and *redis* are located. These third party tools already come with the install of the software. Example: `/mnt/server/shared_folder/das-element/third-party`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| DASELEMENT_MODEL                                                                                                             | file path to wit file (machine learning model) Example: `/mnt/server/das-element_vfx-element_1.0.wit` Use comma `,` to define multiple file paths `/path/to/model-01.wit,/path/to/model-02.wit`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| DASELEMENT_WORKER                                                                                                            | set number of workers (not for *lite* version) Even if set to `0`, the software will always start at least one worker to communicate with the database.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| DASELEMENT_DND_NOTATION Valid values: * `folder` * `files` * `hashtag` * `percent` * `dollarf` * `flame` * `json` * `custom` | set the file path notation for a sequence of files When elements are being drag\&dropped outside of *das element* into another software, some applications, like Autodesk Flame, require a custom file path notation for dropped file sequences. default/fallback: `folder` This will choose the parent folder of the elements main files: `/some/folder` List of all file paths for each frame of the sequence: `/some/folder/files.1001.exr, /some/folder/files.1002.exr, ...` Hashtag notation: `hashtag` `/some/folder/files.####.exr` Hashtag notation: `hashtag_frames` - works for **Nuke** `/some/folder/files.####.exr 1001-1002` $F (dollar f) notation: `dollarf` - works for **Houdini** `/some/folder/files.$F.exr` Printf percentage notation: `percent` `/some/folder/files.%04d.exr` **Autodesk Flame** Flame requires this notation for file sequences `/some/folder/files.[1001-1002].exr` If a process is running with the name '*flame'* the software will automatically choose this notation. To force this notation set the env value to `flame` `export DASELEMENT_DND_NOTATION=flame` As `json` format: Returns element information as a JSON formated data object Custom data: `custom` Returns custom formatted data string from as defined by the user in the `pre gallery drag` hook file. |
| DASELEMENT_SETTINGS_RESTRICTED                                                                                               | only in standard version if set it restricts the settings page. The global and library settings become read-only. A user can still edit the categories and hierarchies                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| DASELEMENT_JOB_TIMEOUT                                                                                                       | set timeout for transcoding/render jobs (in seconds) default: `3600` seconds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| DASELEMENT_TEMP_KEEP_DAYS                                                                                                    | Number of days that temp preview files are keep in the temp folder. default: `14` days                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| RLM_CONNECT_TIMEOUT                                                                                                          | license server connection timeout default: `5` seconds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

List of environment variables that are read-only (can't be overwritten)  

|  **variable**   |                                                                 **description**                                                                 |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
| DASELEMENT_ROOT | resolves to the location of the installed software version Example: `/resources/.das-element` → `/opt/das-element-x.x.x/resources/.das-element` |

---
language: "en"
---
# Gallery View

![das-element_feature_overview_v006_documentation_slides-gallery.png](https://docu.das-element.com/__attachments/a_fbecb8899c09c02208d7ff92251d8af520e8471e9f98d4bc6b800a19bc09bb05/das-element_feature_overview_v006_documentation_slides-gallery.png?cb=577edc82efa85b60a42b7db77f5094b1)

---
language: "en"
---
# Global

In the global section you can define settings that relate to all the libraries that are currently loaded.

## Global Setup

Here your can define which [setup file](https://docu.das-element.com/setup.md#file) should be used. This controls which Global Config to load and edit.

### Create new configuration

To create a new config click the "Create new config" button on the right side of "Path of config file".

This will show the startup dialog.  
![image-20240607-163002.png](https://docu.das-element.com/__attachments/a_2b2bb1c2b7a0d7be40bc9d1efb42ee4ff0173cf8a5dd6ec78ae2c72b610ee10e/image-20240607-163002.png?cb=d90d2aa840159aa403e41c7b6f9ac5b2)  
![image-20240624-141144.png](https://docu.das-element.com/__attachments/a_3412a11d7ed2dfe4da87b152ac6416dd7d79470a4514f0797ad63589938446c0/image-20240624-141144.png?cb=b24ec329e673b879ee8550186bf57da0)
Welcome screen to create a new configuration

### Recent configurations

The **Recent config file** is a history of the most recent configs. It shows up to 10 of the last recent config file paths. This is a quick way to switch between different library setups.  
![image-20240607-163107.png](https://docu.das-element.com/__attachments/a_1a47ab5fe617b739b1b932ddec2106be6895dadcfe6a0f3ef8cb83c811c3d732/image-20240607-163107.png?cb=b19119585b947d5e2354078796c8c8bf)

## Setup configuration

### Default values

First let's have at look what *default config value* you can set:  

|                        **label**                         |        **key**         |                                                                                                                                                                                                                                    **description**                                                                                                                                                                                                                                    |
|----------------------------------------------------------|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Element-Number Padding**                               | element_number_padding | Set the number padding for the naming convention. Value of 5 looks like this: `fire_00023` default: `5`                                                                                                                                                                                                                                                                                                                                                                               |
| **Frame Padding**                                        | frame_padding          | Set the frame padding for a file sequence Value of 4 looks like this: `filename.0001.exr` default: `4`                                                                                                                                                                                                                                                                                                                                                                                |
| **Filmstrip Number of Frames**                           | filmstrip_length       | Set the frames used for the preview filmstrip in the ingest view. No matter the length of the sequence, the filmstrip length will be this many frames. default: `24`                                                                                                                                                                                                                                                                                                                  |
| **Thumbnail Frame of Sequence**                          | thumbnail_frame        | Set which frame of a sequence should be used for the thumbnail frame. When the value is `meaningful` the software tried to detect some representative frame for an sequence default: `meaningful`                                                                                                                                                                                                                                                                                     |
| **Re-number Frames of Sequence First Frame of Sequence** | first_frame            | If disabled, no renaming will be happening for file sequences. If enabled, it sets the first frame of a sequence when transcoding a file sequence. The files of the sequence will be renamed. default: `enable = true` and `first frame = 1001` Some VFX studios like start with the common 1001 frame. Other studios start with 0 or 1. This forces the artist to align the correct range before working on a shot. It makes sure that the frame range of an element is long enough. |

### Color Code

The Color Code is a visual help to distinguish between the path items. Each color represents a different type of the items that you can drag'n'drop around to build the folder structure and naming convention. Some values are predefined, some are only known during the ingest phase and others can be set manually by you.

### File path definitions

![das element vfx asset element library software settings main path](https://docu.das-element.com/__attachments/a_094bb7696f1cc002a81d09d69a76791000cf19c0d3a18ae0fd5afee3e4942841/das-element-vfx-asset-element-library-software_settings_main-path.png?cb=538768b859ab9aeb9bf49e9f652e7bea)  
This is the part where you define your naming convention and file path structure

This is where you set the naming convention and file structure on disk.

You need to define the *file path patterns* so the software knows where to store the elements file data. These two path patterns are the most important path patterns that the transcoding template will use.

#### Types of path patterns

Which path patterns will be used depends on the output format and the transcoding templates setting for each library. There are two types of path patterns.  
In transcoding template you can set this with the option: **Type of output file**

##### Single files

Single files are something like a movie file or single textures files. Files without frame count.

    /some/path/to/element.mov
    /some/path/to/element.exr
    /some/path/to/element_v01.exr

**Example when the single file pattern is used:**

Copy of a single file like a movie file

`my-movie-file.mov -> fire_000023.mov`

##### Sequence files

Renderings or sequences with frame counter.

    /some/path/to/element.1001.exr
    /some/path/to/element_1001.exr

**Example when the sequence file pattern is used:**

For a movie file (source is a single file) that will be transcoded to a frame sequence with frame counter.`my-movie-file.mov > fire_000023.1001.exr`

*Use '#' for the frame counter. The default frame count padding is 4.*

### Path Patterns

![das-element-vfx-asset-element-library-software_settings_pattern.png](https://docu.das-element.com/__attachments/a_e2957249dffab1a376bbd1cdf8d194946c032fa894b0cd3d39cf63ebe10de6b5/das-element-vfx-asset-element-library-software_settings_pattern.png?cb=9f61b0e107efec2f0eeddda0f6a5839b)

You can create a so called path pattern. A pattern is assembled by placeholder values. These values get resolved into the actual value on ingest/render time.

The reason is that we don't know some values at this time because they are dependent on the element that you want to ingest. For example, the width and height is depending on the source item.  
By using the combination of *path patterns,* *predefined path values* and *custom path values* ,

you should be able to build any naming convention and file structure you like.  
Path patterns can be assembled out of any number of other path patterns. They will get resolved as much as they can. Finally, all values (predefined \& custom) will get resolved into actual values.

*** ** * ** ***

This might look a little bit weird at the beginning, but this system gives you full control over how to assemble your naming convention. You will see the benefit of it in a second.

#### Example: resolution

Our source image is an image of a flame with the resolution of width 1920 and height 1080.

We create a path pattern to define the naming convention of the resolution folder as followed:

**resolution_pattern :** `<width>x<height>`

If we now ingest the element, the pattern gets resolved to: `1920x1080`  
\<width\> is a tag. Pattern Tags are defined by the \< (less than) and \> (greater than) characters.

Everything that is not surrounded by \<\> are manually set characters and will not get resolved.

Now let's take it a step further.

We can define *custom path values* in the *path values* section.

These values get included in the values that can get resolved by the resolver.

Lets create a path value:

**colorspace :** `linear`

and update the pattern from before:

**resolution_pattern :** `abc_<width>x<height>_<colorspace>`

This gets resolved to: `abc_1920x1080_linear`

Notice the tag we added at the end? `<colorspace>` is a custom pattern tag.

The resolver will look at the *path value* **colorspace** and use its value `linear`  
In the settings section: library → transcoding templates

you can overwrite the *path patterns* and *path values*.

If we create a *library transcoding template* that creates a thumbnail preview for our elements, we can overwrite the path value `<colorspace>` by another value. For example: `srgb`

The path pattern for this transcoding template gets now resolved to: `abc_1920x1080_srgb`

*** ** * ** ***

##### Example: category

Let's create a path pattern for defining the naming convention for folder of the element.

Create a new path pattern:

**element_name :** `<category.base.name>_<element.number>`

In the ingest view we decide that the category of the element is **flame**

The base (top parent) category of **flame** is **fire**. Because a flame is a part of a fire.

This means that `<category.name>` resolves to `flame` and `<category.base.name>` resolves to `fire`

What about `<element.number>`?

This is one of the *predefined values.* These predefined values are values that are only known once an element is ingested because the values are dependent on the elements data.

If we now ingest a new fire element and there are already 230 fire elements in the database, the element number will increase by +1. Thus the `<element.number>` will resolve to `231`.

So finally: `<category.base.name>_<element.number>` resolves to `flame_231`.

Why should we use the base category?

We want our library to be sustainable and be as static as possible for many years.

Once we ingest an element it should not move or be renamed.

If we want to open up a project file from years ago all the media files should be found.

That is why you should decided to store the elements in the base category folder  
To go up one directory you can use the relative path double dots '..'

/some/path/\<source.directory\>/**..**/\<proxy_folder\> -\> will resolve to /some/path/the-proxy-folder

### Path Values

![das-element-vfx-asset-element-library-software_settings_value.png](https://docu.das-element.com/__attachments/a_23cd8bc3603a8882e40c4e1d3c299efc495096750e6e626063fe4ad3cb99fa39/das-element-vfx-asset-element-library-software_settings_value.png?cb=afcfbd71ff2a81b8d1fc6f6f4fcb7ad6)

Path values are used to resolve the values of the *path patterns* depending on the element that will be ingested or rendered. Some values are known once we actually know the data that we want to ingest, others values can be set by you (custom values). The custom values can be overwritten in the library and the transcoding templates.

#### Predefined path values

The predefined values are used as placeholders in the path patterns. They are divided into separate predefined groups that will be commonly used. For each group you can access the sub-keys.  
Predefined path values are given and can not be changed manually

##### Reserved keywords

There are a few reserved keywords that will not be resolved. They are for example required by the renderfarm manager Deadline.

`<STARTFRAME> <ENDFRAME> <QUOTE> <AUXFILE>`

**Example**

If you want to get the *width* value of the source element you ingest, you access the group `resolution` and the sub-key `width` in the path pattern like this: `<resolution.width>`. This will resolve the source image width value for you.

##### Example: element

Path of element that we want to ingest:

`/some/path/to/file.%04.exr`

It is a sequence of OpenEXR files that contain a picture of a flame.

The first frame of the sequence is `1001` and last frame is `1042`.

Each image has a resolution of width `1920`, a height of `1080` and a pixel aspect ration of `1`.

In the library there are already `22` fire elements.

In the ingest view we decide that the category of the element is `flame`**.**

The base (top parent) category of `flame` is `fire`. Because a `flame` is a part of a `fire`.

In this overview you can see how each of the predefined values would be resolved into the actual value:  

|                                  **description**                                   |    **predefined value**     |      **example resolves to**       |
|------------------------------------------------------------------------------------|-----------------------------|------------------------------------|
| source image width                                                                 | `<resolution.width>`        | `1920`                             |
| source image height                                                                | `<resolution.height>`       | `1080`                             |
| image pixel aspect resolution                                                      | `<resolution.pixel_aspect>` | `1`                                |
| source elements file extension                                                     | `<source.extension>`        | `exr`                              |
| Frame counter for a sequence                                                       | `<frame>`                   | `#`                                |
| output sequence first frame                                                        | `<element.frame_first>`     | `1001`                             |
| output sequence last frame                                                         | `<element.frame_last>`      | `1042`                             |
| number counter of this element                                                     | `<element.number>`          | `00023`                            |
| Globally unique element ID                                                         | `<element.uuid>`            | `f4ec01102a4440769be04d9004a717c8` |
| readable name for flame category                                                   | `<category.name>`           | `flame`                            |
| unique ID for flame category                                                       | `<category.id>`             | `Q235544`                          |
| readable name of the base category for flame, based on the hierarchy category tree | `<category.base.name>`      | `fire`                             |
| unique ID of the base category for flame, based on the hierarchy category tree     | `<category.base.id>`        | `Q3196`                            |

The element UUID (Universally unique identifier) is globally unique across all libraries and databases. This allows you to track this one particular element for all "eternity" with this unique ID.

A hexadecimal presentation is used of the UUID that gets rid of the "-" dashes, which is better for using it in the filename.

Learn more about [Universally unique identifiers.](https://en.wikipedia.org/wiki/Universally_unique_identifier)

#### Custom path values

These are the values that you can define. These custom path values get resolved in the path patterns.  
Custom path values are the values defined by the user

**Examples**

**server** : `/path/to/server`

**library_name** : `my-element`

If you use *path patterns* that reference *path values* you have to make sure that these values exist in the path values section. If something can not be resolved because values are not defined, the ingest or rendering of proxies will fail and you will see an error message.

#### Overwrite pattern \& values

The server path or the folder where the library data is stored might chance for each library.

Overwriting *path pattern* and *path values* is based on the concept that you only need to overwrite values for each library, which reduced the complexity and misalignment of the file structure.

This gives you the control to setup global conditions for all libraries and you only need to change one or two values for each library.

### Collection Database

Collections can be saved in a database or a file on disk. In this section database connections can be created. For more information please check out [this documentation here](https://docu.das-element.com/docu/collections#Collections-DatabaseCollection)

---
language: "en"
---
# Good to know

## LLM friendly documentation

For a "AI" / LLM friendly documention format (markdown) use these link:

    https://docu.das-element.com/llms.txt
    https://docu.das-element.com/llms-full.txt

### Temp folder

The software generates temp previews in the temp folder (e.g. Linux: `~/tmp/das-element`). Files older than 14 days get automatically deleted on startup of the software. The amount of days can be adjusted by this environment variable: `DASELEMENT_TEMP_KEEP_DAYS`

### Enable the debug mode

Set this environment variable to get more logging output: `export DASELEMENT_LOG_LEVEL=debug`

### Element file path extension

By default all file extensions will be converted to lowercase.

### Environment variables

It is possible to use other environment variables in the values for the environment variables.

Example:

    export CURRENT_PROJECT=awesome_project
    export DASELEMENT_CONFIG_PATH=/mnt/server/{CURRENT_PROJECT}/config/das-element.conf

You can also use environment variables in various parts of the configuration and settings.

Here is an example of using environment variables for library settings:  
![image-20260107-095054.png](https://docu.das-element.com/__attachments/a_480295466cc7f6971396fc5a5ac4d8b7b214931782b6feb147deda8fcc716868/image-20260107-095054.png?cb=f94edde68f7bc53cf00e33ac721c60f9)

### Proxy transcoding of file sequences

The FFmpeg transcoding task for a file sequence with the frame rate set to "source" uses by default: `24fps`

### Transcoding Template order

The order of the transcoding templates and task of a transcoding mapping is:

* (at ingest only: register to database)

* main

* additional

* main proxies

* main proxies - extra template

* additional proxies

* additional proxies - extra template

For each**Transcoding Task** the tasks will executed in the order from top to bottom:  
![image-20231031-075421.png](https://docu.das-element.com/__attachments/a_3b58cfa6eb7f6674f9bfe7c2ac3aa5ae207ff4d8912ed56546356c6ab4f6363d/image-20231031-075421.png?cb=81401656f26af6c13fe7b59b889abc1f)  
You can control with the **Template Steps (template_step)**if a certain template is execute for the template step. Either execute proxy/extra templates the 'main' template, the 'additional' template or for both.

---
language: "en"
---
# How To

Here is a list of useful tips and tricks for the software.

---
language: "en"
---
# Ingest

![image-20260107-095755.png](https://docu.das-element.com/__attachments/a_ba9779b361b9cd7cfe93f0e36d50d94f26a38356a83ff11cc78c2a709a05f28b/image-20260107-095755.png?cb=04281bf350856cc35446b4b75668f70b)

The Ingest View lets you add new elements to a library. Each element requires at least a category. You can also define custom tags, metadata (key-value), and assign additional files to elements.

## Media Type

The media type determines which proxies are generated and which preview player the gallery uses.

By default, the media type depends on the file extension.

| **Media Type**  |                           **Description**                            |
|-----------------|----------------------------------------------------------------------|
| `3d-material`   | 3D materials like MaterialX or Substance Painter materials           |
| `3d-model`      | Typical 3D model formats: Alembic, FBX, OBJ                          |
| `3d-scene`      | DCC specific file extension: Houdini, Maya, Blender                  |
| `folder`        | Folder containing files and subfolders                               |
| `image`         | Single image files: EXR, JPG, photo camera raw data                  |
| `movie`         | Movie files: MOV, MP4                                                |
| `pdf`           | PDF files                                                            |
| `project-file`  | Project file: Nuke, After Effects                                    |
| `sequence`      | File sequences of sequentially numbered files                        |
| `sequence-udim` | File sequence following a UDIM (Universal Texture Coordinate) naming |
| `sphere`        | 360° images or movie, aka. HDRs                                      |
| `generic`       | Any custom file extension defined by the user                        |

For the full list see: `Settings → Global Settings → Valid file formats`  
![image-20260107-100501.png](https://docu.das-element.com/__attachments/a_7543df1c418215cf267cf41d4f9412990ab09139d256f62adc4c5b5b5c845b15/image-20260107-100501.png?cb=453ef8292106aa1abd1fe1ddc34f6920)

In some cases, this must change, for example, if the element content is a 360° HDR image but is an `.exr` file. The default media type for an `.exr` is `image`, but for the HDR image, it makes more sense to use the media type `sphere` to enable the HDR viewer in the gallery view.

Here are some pointers on ingesting assets into the library.

A good practice is to ingest batches of 30-50 similar assets at a time, e.g. one folder at at time. This approach helps control tags efficiently and detect conflicts early.

## Automate ingest with hook file

Use the [pre ingest load Python hook](https://docu.das-element.com/python-hooks.md) to automatically populate fields like category, tags and metadata for a new element. This method lets you extract keywords from file paths and assign them as tags.

Example file: <https://github.com/das-element/resources/blob/main/scripts/hooks/examples/ingest/pre_ingest_load.py>

## Automate ingest with command line tool and Python API

To batch import lots of elements it can be useful to use the command line tool (CLI) or the Python API, which is a wrapper around the CLI tool.

Find more information about the Python API here: [http://docu.api.das-element.com](http://docu.api.das-element.com/)

As well as an example Python script to ingest elements:

<https://github.com/das-element/python-api/blob/main/examples/ingest_new_element.py>

## Folder as element

Managing a complex asset with multiple files and sub-folders? Ingest the entire folder as a single element to handle even the most intricate assets efficiently.

In the [Ingest View](https://docu.das-element.com/ingest-view.md) activate "Load as folder" to load the entire folder as a single element instead of individual files. This is the simplest way to ingest complex assets. You can also [define custom previews](https://docu.das-element.com/set-a-custom-thumbnail.md). The media type is "folder," which dynamically searches for files on disk each time you select the element.  
![image-20251111-150407.png](https://docu.das-element.com/__attachments/a_ee7acdee2a5cec4a2536552c2699c281fa4cc314831f229bb5d31b73c0d8b0f0/image-20251111-150407.png?cb=4aa4566899943adb16db504627b9adb1)  
![das-element_version-release_2.2_folder.png](https://docu.das-element.com/__attachments/a_bdfa23cab50499e577d191cdf5e04496625e99b282aaaaddb6d7552c65e90522/das-element_version-release_2.2_folder.png?cb=801caa9068e0776d7ad3e95e25135bb4)

## Ingest failed?

Use the ingest logs to restore a previous ingest list state quickly. This is useful if the ingest failed or to save the current list state for later reuse. Learn more about [ingest logs here.](https://docu.das-element.com/ingest-view.md)

---
language: "en"
---
# Ingest View

![das-element_feature_overview_v006_documentation_slides-ingest.png](https://docu.das-element.com/__attachments/a_c4c17614a25fe842fd23d3c36a2dbdc4b4e12586fa114a084e44dffafb4bc47e/das-element_feature_overview_v006_documentation_slides-ingest.png?cb=6225afb87549666fdf482176590700a1)

## List View

Either use the load files/folders button or drag\&drop files/folders into the ingest list to create a list of elements to ingest into the library.  
![das-element_2-1_ingest_list-item.png](https://docu.das-element.com/__attachments/a_7824ceed87020770acac12cc09ad132fcb23d82c5984ca1f61de691748fc8ec2/das-element_2-1_ingest_list-item.png?cb=debf007f5d942c704781d806275755c2)

### Tags

![das-element_2-1_ingest_tags.png](https://docu.das-element.com/__attachments/a_1595d5bc4fe2b2da978d89b9f6f3378626906cd5937eb1faba0ed47c0a5add4b/das-element_2-1_ingest_tags.png?cb=1c7aa46bd43c63cb1341fb65a419027c)

Certian [Path Values](https://docu.das-element.com/path-builder.md) can be used as tags. These will be replaced by the actual value during ingest.

For example to automatcially set the category name as a tag `<category.name>` or to set the source filename as a tag `<source.basename>`  
![das-element_2-1_ingest_tags-path-values.png](https://docu.das-element.com/__attachments/a_16637542ebbaa70342b55a99c60fd53d0c6bea9afdf6a80b4bbead7894abd240/das-element_2-1_ingest_tags-path-values.png?cb=6d13f1e0081cc0f25ff1471cc7257d52)

### Metadata

![grafik-20240803-102350.png](https://docu.das-element.com/__attachments/a_b282232d27e8b1192643f21022cf1f9750ce588b389ed5a4fc6bf83fdb275b2f/grafik-20240803-102350.png?cb=a77ae2b3c06f162f15f6668f289ade98)

Define custom metadata and link it to the element. It is a simple key - value.

For example information about the captured data, the license information or detailed information if the asset is coming from the in-house pipeline and is archived from a previous project.

#### Metadata as Path Values

It is possible to use the metadata key-value pair as path values in your naming convention.

Access metadata key-value like this: `<metadata.some_key>` - [learn more about this here.](https://docu.das-element.com/docu/metadata#Metadata-MetadataasPathValues)

Please note: this will not change the metadata of the files on disk. The new metadata is saved in the database of the library. The metadata values can later be search in the [Gallery View](https://docu.das-element.com/gallery-view.md).

## Ingest View

### Filter

Filter the list of items by searching text in the file paths or the assigned tags.

The filter also accepts a regular expression input: `Explosion_.*_\dk` → `Explosion_something_2k.mov`

You can even separate multiple terms by comma to search the tags of the list items.

For example: `fire,flame,something`

### Temp Previews

To preview what the elements you want to ingest look like the software generates a temp preview. These are not the proxies from the Gallery View.

![image-20240607-155044.png](https://docu.das-element.com/__attachments/a_51dd858b764fd324ff79afa2dcec3cd03768d78ed4dd244faa19270a8d2fb964/image-20240607-155044.png?cb=e52eda495a9ced06f3ac7473a23e8847)
Deactivate "Create temp preview" to load elements faster

### File Sequences

By default the software tries to detect everything as file sequences. In some cases the files may have a sequential naming but are actually individual frames *(img_0001.jpg, img_0002.jpg, ...).*

![image-20240607-155213.png](https://docu.das-element.com/__attachments/a_4f6a4eb1c2e7e3d6a944f5c13901738473bd53d8f10276e85f3cfb82722be7ce/image-20240607-155213.png?cb=19e5dfb50600f1aa0a9738ee5fc6ca77)
Deactivate "Load file sequences" to load each item as a single item  
![das-element-vfx-asset-element-library-software_ingest_split-sequence-to-singe-frames_01.png](https://docu.das-element.com/__attachments/a_1808afdce1ad264d49e7840fd57a8d2583a7292f429d47027272402e2348e745/das-element-vfx-asset-element-library-software_ingest_split-sequence-to-singe-frames_01.png?cb=6f7573ff34ffd5d843094115cf4c8c0b)
Split a sequence into single files by clicking the "Split sequence to single items"

### Check for visual duplicates

Before ingesting new files the software can compare the visual content of a media file and indicate if a visual duplicate already exists in one of the loaded libraries.  
This process might take a while depending on the elements in the libraries. Deactivating this feature will improve the loading time.  
![image-20240607-155516.png](https://docu.das-element.com/__attachments/a_22568f02792de41738f751aca9ce58c494c2e0c4972996bdc14dd1df899a8e1d/image-20240607-155516.png?cb=f16d4499ddfaa05a40486605593c4ed5)
Enable "Check for visual duplicates" to find duplicates

### Load as folder

This will load the entire folder as an element instead of individual files. The load as sequence option will no longer apply.  
![image-20251111-150407.png](https://docu.das-element.com/__attachments/a_9f4dd02a943add4bdff891f794eb75301b45428e2c72d3379adf2cb65f5ae902/image-20251111-150407.png?cb=4aa4566899943adb16db504627b9adb1)

### List filter

Use the filter bar at the bottom left to show and filter elements in the ingest list with a certain status

For example to show elements with an issue, like image sequence with missing frames.

To deselect a status filter, either click the active filter (green border) or select the cross (x) on the right.  
![image-20240510-131448.png](https://docu.das-element.com/__attachments/a_1cd1a7fe73be2bd9d067716af28e61c8398dfdc8ffbafb2ff4fb00bd4dba73b2/image-20240510-131448.png?cb=2fcb667a98c5946bfd88f48c63a016cf)

### Ingest Logs

Each time you click "ingest elements" a log file is saved to disk. These are simple text files (CSV) that you can use to restore the ingest list again anytime you like. It will populate the ingest list with all file paths and the category and tags that were set.

Example:

`library_root_folder/.config/ingest_logs/das-element_ingest_2022-02-13_17-42-37.csv`

    path;category;tags
    /mnt/server/some/folder/files.1-120#.exr;Q327954;Q327954,fire,custom tags
    /mnt/server/some/other-folder/other-files.mov;Q327954;Q327954,fire,something,foo,bar

These CSV files are very helpful if you want to batch import new elements with predefined tags and categories.

#### Save ingest list

To manually save the ingest list select one of the two options:

* **Save** - saves the ingest log to the default location: `library_root_folder/.config/ingest_logs`

* **Save as ...** - choose a custom location

![image-20240510-131018.png](https://docu.das-element.com/__attachments/a_c475abe58142fff8149f725d623d839b65c16c163c1bb55b2c37b56971bf1f00/image-20240510-131018.png?cb=b2ecccdeee431c6b5d944a56fb6dbd3b)

#### Restore ingest list

To restore the ingest list go to the ingest view and in the bottom left corner click the "load list" folder icon.  
![das-element-vfx-asset-element-library-software_ingest_ingest-logs_button-01.png](https://docu.das-element.com/__attachments/a_e745ca8963329efa2ba27efe3f42b676385792f796757decd3e991a49e46f27b/das-element-vfx-asset-element-library-software_ingest_ingest-logs_button-01.png?cb=9b458b7a1f6bb10020d187e85c900241)

---
language: "en"
---
# Install

## License Server

[Install License Server](https://docu.das-element.com/install-license-server.md)

[Install License - Single User](https://docu.das-element.com/install-license-single-user.md)

### Software

[Installation on Linux](https://docu.das-element.com/installation-on-linux.md)

[Installation on Windows](https://docu.das-element.com/installation-on-windows.md)

[Installation on Mac](https://docu.das-element.com/installation-on-mac.md)

### Database

[![SQLite370.svg.png](https://docu.das-element.com/__attachments/a_84b5ad70a549e1f2d0d4454000e3526926bbaff66360167d97a067b2f8067876/SQLite370.svg.png?cb=48c04177e9132e4d88fb83726eec860c)](https://docu.das-element.com/docu/database-sqlite)

[Setup SQLite](https://docu.das-element.com/database-sqlite.md)  
[![R_(1)ds.png](https://docu.das-element.com/__attachments/a_6772752e86b49c0d53a5b09d1499933766c9837fe1521edb843e9def1024ebab/R_(1)ds.png?cb=7740bef00dd6d47073707a87a14980ce)](https://docu.das-element.com/docu/database-postgres)

[Setup PostgreSQL](https://docu.das-element.com/docu/database-postgres)  
[![MySQL_logo.svg.png](https://docu.das-element.com/__attachments/a_e346267b2b10f0d4141a6eb288b78cc339f0c045436e068f26db8012b9c7281e/MySQL_logo.svg.png?cb=e0e93e07fd8e57496bd1a5ca1161c454)](https://docu.das-element.com/docu/database-mysql-mariadb)

[Setup MySQL/MariaDB](https://docu.das-element.com/docu/database-mysql-mariadb)

---
language: "en"
---
# Install License Server

You need a license server with a valid license file running in order to start the application.

To receive your license file, please send the **order ID** as well as the **host name** and **host ID** **(MAC address)** of your license server to [support@das-element.com](mailto:support@das-element.com)

The license server required is RLM (Reprise License Manager) by Reprise Software.

<https://reprisesoftware.com/>

**Check out** [**this video tutorial**](https://www.youtube.com/watch?v=5dghcW2OC00)**to get started.**

## Setup License Server

* download the RLM license server: <https://das-element.com/account/> \> Download

* unzip anywhere on your license server

* run `get_host_info.bat` to get host id/name

* contact support to get your license file

* on your client set the environment variable `DASELEMENT_LICENSE=5053@{host_name}`

To show your licenses visit the following address in your web browser: `{license_server}:5054`  
If your application doesn't start check the log file: `~/.das-element/logs/back-end.log`

## What is the host name?

The host name is what your computer name is called on a network.

Your license server host name will be something similar to: ***licserver*** or ***vfx-license***  

|                                     **Linux/Mac**                                     |                                                                                                                                             **Windows**                                                                                                                                              |
|---------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| * open a terminal * type: `hostname` - hit enter * this should give you the host name | * open a command prompt (cmd.exe) * type: `hostname` - hit enter * this should give you the host name *- alternative -* * download the RLM license server: <http://das-element.com/download/> * unzip anywhere on your license server * run `get_host_info.bat` to get the *host ID* and *host name* |

## What is the host ID?

The Host ID is your Ethernet ID/MAC address. It will look similar to this:

***0284b864d514*** *or* ***02:84:b8:64:d5:14***  

|                                                                **Linux/Mac**                                                                |                                                                                                                                                                **Windows**                                                                                                                                                                 |
|---------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| * open a terminal/shell * type: `ifconfig` - hit enter * the host id is the number after "ether" * look for you network device and "Hwaddr" | * open a command prompt (cmd.exe) * type: `ipconfig /all` - hit enter (or `getmac /V`) * look for you network device and "Physical Address" *- alternative -* * download the RLM license server: <http://das-element.com/download/> * unzip anywhere on your license server * run `get_host_info.bat` to get the *host ID* and *host name* |

## Connect to the license server

To connect to your license server you have three options:

* set an **environment variable**

* use a **license config** file

* use an **environment variable file**

To show your licenses visit the following address in your web browser: `http://vfx-license:5054`

### Environment Variable (option 1)

Set environment variable **DASELEMENT_LICENSE** - as a fallback the variable **RLM_LICENSE** will be used.

Should look something like this: `{port}@{hostname}`. The default port is `5053`

#### Linux

`export DASELEMENT_LICENSE=5053@your-license-server`

#### Windows

`setx DASELEMENT_LICENSE "5053@your-license-server"`

#### Mac

`launchctl setenv DASELEMENT_LICENSE 5053@your-license-server`

### License config file (option 2)

Create this file in the current users home directory:

`~/.das-element/license.conf`

Example file content:

    5053@your-license-server

### Environment variables file (option 3)

In the Users home directory there is a file called: **variables.env**

This file will be read before the software start. Add all the environment variables you need in that file.

    # Linux / MacOS
    ~/.das-element/variables.env

    # Windows
    %homepath%/.das-element/variables.env

Example file content:

    #### point to the license server
    DASELEMENT_LICENSE=5053@your-license-server

For MacOS it's way easier to use the license config file (*license.conf* ) or environment variable file (*variables.env* ) since environment variables might work differently depending on the OS version

Setting the variable in \~/*.bash-profile,* \~/*.zsh, etc.* might not work since the software starts as GUI application. To make everything as easy as possible it is recommended to use the environment file.

### How to run RLM on a different port

If you need to start the RLM license server on a different port use the flag '-ws'.

Don't forget to update the `DASELEMENT_LICENSE` environment variable accordingly!

    ./rlm -ws 5055

### How to point RLM to custom ISV (.set) location

By default RLM expects the Independent Software Vendor file (ISV / aka. `daselement.set`) in the same folder of the rlm executable. To store this file elsewhere, simply modify the second line of your license file to point to your chosen `daselement.set` file path.

    HOST your-license-server 0284b864d514 5053
    ISV daselement /path/to/daselement.set
    ...

---
language: "en"
---
# Install License - Single User

You don't need to install a license server as a single user. Your workstation will receive a node-locked license file. Follow the steps in the license manager dialog that appears when you first start the software and click "Select License File".  
![image-20251106-123630.png](https://docu.das-element.com/__attachments/a_f882f34c009dc232ff0185ea5625bcf4a1de705cc3382ad5d0668c82236df9c7/image-20251106-123630.png?cb=020d282c2d3d401548ca3235b9f5a5f7)  
![image-20251106-123847.png](https://docu.das-element.com/__attachments/a_60a83c55b23c7882847662de18e082efa60fc3653a994a218045addc63841af7/image-20251106-123847.png?cb=9b3d928a2f18c6e2557556d0e65251d4)  
You need a valid license file in order to start the application.

To receive your license file, please send the **order ID** as well as the **host name** and **host ID** **(MAC address)** of your license server to [support@das-element.com](mailto:support@das-element.com)

*** ** * ** ***

\[legacy\] Setup license file  
* Download the file to your computer

* Edit the `variables.env` file in the `.das-element` folder:

  * Linux/MacOS: `~/.das-element/variables.env`

  * Windows `%homepath%/.das-element/variables.env`

* Edit this line to point to your license file:

  *

        DASELEMENT_LICENSE=/path/to/license/daselement.lic

* Start the application ![check mark](https://docu.das-element.com/__attachments/a_53a1671f3afa3f72981c575eba4a1cc86bbd1e4bacc6f7399a08402b980d560c/atlassian-check_mark?cb=a10212e1c1021c5194f7535b6843f955)

\[legacy\] Setup local license server  
An alternative approach is to start a local license server instance.

* copy the license file in a folder called `license` in your local `.das-element` folder

  ![das-element_vfx_element_asset_library_software_license_01.png](https://docu.das-element.com/__attachments/a_1ba8a9b03539b1874f7499a9f4fbaab04ecd7472b5a5316c549b402055635693/das-element_vfx_element_asset_library_software_license_01.png?cb=70d606935351882002c49f3c0fdb7d7c)
  * Linux/MacOS: `~/.das-element/license`

  * Windows `%homepath%/.das-element/license`

* edit the `variables.env` file and add this line

  ![das-element_vfx_element_asset_library_software_license_02.png](https://docu.das-element.com/__attachments/a_2c34ca487d9b87d7325c5599680e266ed25ac7deca858b7834cda440f299b1fc/das-element_vfx_element_asset_library_software_license_02.png?cb=8bfaefcd1ee46a1afd721c146c7aa3e0)

      DASELEMENT_LICENSE_TYPE=local

* start the application ![check mark](https://docu.das-element.com/__attachments/a_53a1671f3afa3f72981c575eba4a1cc86bbd1e4bacc6f7399a08402b980d560c/atlassian-check_mark?cb=a10212e1c1021c5194f7535b6843f955)

You may need to create the **license** folder if it doesn't exist yet.
Install RLM as service (alternative)  
An alternative approach is to install the RLM license server as a service.

## Install service

Example for Linux

    rlm -install_service -service_name daselement_rlm -display_name "Das Element License Service" -dlog /path/to/logs/rlmd.log -c /path/to/license/file.lic

Example for Windows

    rlm.exe -install_service -service_name daselement_rlm -display_name "Das Element License Service" -dlog %HOMEPATH%\.das-element\logs\rlmd.log -c %HOMEPATH%\.das-element\licenses\daselement_20240118.lic

### Remove service

    rlm -delete_service -service_name daselement_rlm

## Troubleshooting

Follow this link for troubleshooting suggestions: [Troubleshooting](https://docu.das-element.com/troubleshooting.md)

---
language: "en"
---
# Installation on Linux

The software tries to match the VFX Reference Platform versions - normally it matches the version from the previous year to give everybody a chance to catch up as well.

<https://vfxplatform.com/>

For ***das element*** and ***das element lite*** you need to have a UI (Gnome, KDE, ...) installed.

***das element cli*** can run on a Headless Linux.

## AppImage

### Install

To start the application you can just run the AppImage version. There is no need to install any software.

### Uninstall

Remove the AppImage file. That's it.

## CentOS

### Install

However, if you want to install the application permanently, use the following command:
Bash

    sudo rpm -i das-element_x.x.x_lin.rpm

Now you can start the application by typing into you terminal: `das-element-x.x.x`

#### Installation location

`/opt/das-element-x.x.x`

### Uninstall

Run the following command:

    sudo rpm -e das-element-x.x.x

## Debian

### Install

If you want to install the application permanently use the following command:
Bash

    sudo dpkg -i das-element_x.x.x_lin.deb

Now you can start the application by typing into you terminal: `das-element-x.x.x`

#### Installation location

`/opt/das-element-x.x.x`

### Uninstall

Run the following command:
Bash

    sudo dpkg --remove das-element-x.x.x

## Temp folder

For Linux the folder for temporary files (e.g. temp-previews of the ingest view) is in the users home directory:

`~/tmp/das-element`

If you disk space is running full, please make sure to also check this directory and delete files from time to time if needed.

## Environment variables

In the Users home directory there is a file called: **variables.env**

This file will be read before the software start. Add all the environment variables you need in that file.

    ~/.das-element/variables.env

Example content:

    #### point to the license server
    DASELEMENT_LICENSE=5053@your-license-server

    #### path to the config file (.conf)
    DASELEMENT_CONFIG_PATH=/mnt/server/das-element.conf

    #### path to the resources folder, for presets, hooks, etc.
    DASELEMENT_RESOURCES=/mnt/server/shared_folder/das-element_resources

## **Troubleshooting**

### libXScrnSaver is needed

**Solution:**

Install `libXScrnSaver`

    sudo yum install libXScrnSaver

### SUID sandbox

If you get the following error message ...

`[24377:0812/042355.069283:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_das-elZOz7Kl/chrome-sandbox is owned by root and has mode 4755.`

... try run the AppImage with `--no-sandbox` flag:

    das-element_x.x.x_lin.AppImage --no-sandbox

---
language: "en"
---
# Installation on Mac

## Install

Simply download and double click the DMG file.

Drag\&drop the **das element** icon on **Applications**icon.  
![Screenshot from 2021-10-31 17-12-50.png](https://docu.das-element.com/__attachments/a_36b39ac1d901cad8d5036d9080382c34693ec4fcdba3aa4d9b9f5b46435bb4d2/Screenshot%20from%202021-10-31%2017-12-50.png?cb=ec68cf2d9138b6107015185f171a400a)  
The first time you start the application is might take a few seconds longer to start.

### Connect to license server

In order to connect to the license server you have have to create this file in the current users home directory:

`~/.das-element/license.conf`

The file content is:

`5053@license-server`

You can also set an environment variable **(DASELEMENT_LICENSE).** Depending on the MacOS version it might always work differently. It's recommended to use the file based approach since it's way easier to setup.

Use this command to set the variable (will only work until the workstation reboots):

    launchctl setenv DASELEMENT_LICENSE 5053@license-server

### Environment variables

Each MacOS version has it's own way of adding permanent environment variables. Often it works fine for the command line but not if you launch a GUI application. To make everything as easy as possible it is recommended to use the environment file.

In the Users home directory there is a file called: **variables.env**

This file will be read before the software start. Add all the environment variables you need in that file.

    ~/.das-element/variables.env

Example content:

    #### point to the license server
    DASELEMENT_LICENSE=5053@your-license-server

    #### path to the config file (.conf)
    DASELEMENT_CONFIG_PATH=/mnt/server/das-element.conf

    #### path to the resources folder, for presets, hooks, etc.
    DASELEMENT_RESOURCES=/mnt/server/shared_folder/das-element_resources

### **Uninstall**

Go to the Applications folder in the Finder. Right click the **das element** version and select **Move to Bin.**

---
language: "en"
---
# Installation on Windows

## Silent Install

Needs to be run in a command line with admin mode, otherwise some dialog windows will pop up.

    C:\Users\my_user\Downloads\das-element_1.0.0_win.exe /S

|       **flag**       |     **description**     |
|----------------------|-------------------------|
| /S                   | silent install          |
| /D="C:/das-element/" | custom install location |

## Environment variables

In the Users home directory there is a file called: **variables.env**

This file will be read before the software start. Add all the environment variables you need in that file.

    %homepath%/.das-element/variables.env

Example content:

    #### point to the license server
    DASELEMENT_LICENSE=5053@your-license-server

    #### path to the config file (.conf)
    DASELEMENT_CONFIG_PATH=/mnt/server/das-element.conf

    #### path to the resources folder, for presets, hooks, etc.
    DASELEMENT_RESOURCES=/mnt/server/shared_folder/das-element_resources

Use `DASELEMENT_USER_CONFIG_PATH` to define a custom location for user config files.

---
language: "en"
---
# Introduction

**Welcome to the documentation of** ***Das Element***

This software assists you in efficiently organizing and tagging your asset library.

## **For a quick start, refer to the** [Quick start](https://docu.das-element.com/quick-start.md) **guide** .

The *Das Element* software is built on the concept of a visual effects pipeline. You store your main elements in a structured folder system on the file system, create proxy formats for preview purposes, and store all the data in a database. Categories help you organize the elements, while tags ensure quick searches, allowing you to find the elements you need efficiently.

* Elements are stored on disk using a defined folder structure and naming convention

* For each element, proxy files such as thumbnails and filmstrips are created to enable quick previews

* The data, including element categories, tags, and media information, is stored in a database

* All file paths are stored as relative paths, allowing you to move the library data and simply update the information in the config file.

### Multiple libraries

The idea is to allow you to set up multiple libraries, each serving a different purpose. You can even create libraries for specific projects. Use the search function to find the elements you need across all libraries.

For example:

*  VFX practical elements

* matte painting pictures

* references for a project

* textures and shaders

* ...

### File path structure

The actual files are stored on either your local file system or a file server. The file path structure is fully customizable to meet your needs. You can use the [Path Builder](https://docu.das-element.com/path-builder.md) to set up a personalized naming convention and folder structure, or, for a simpler setup, choose from one of the provided presets.

### Transcoding templates

For a quick preview of the elements, various proxy files can be created, some of which are necessary for the software to function efficiently:

* for image files, a thumbnail needs to be generated

* for sequences and movie files, both a thumbnail and a filmstrip will be generated

* for other files, such as project files or 3D scenes, you can set custom previews, including thumbnails and proxies (movie or 3D model).

Additionally, you can use transcoding tasks to create a movie proxy file or any other proxy you need. It is also possible to back up files to a remote server, such as a cloud backup, or upload files to an FTP server.

*** ** * ** ***

## Let's start here: [Quick start](https://docu.das-element.com/quick-start.md)

---
language: "en"
---
# Library

Each entry represents one library. A library can be seen as a collection of many elements.

You can have multiple libraries.

For example:

* elements library: for fire, smoke, ...

* (client-) references for a project

* matte painting library

* texture library

* ...

Each library exists of a library file (.lib) and a database. The library files are saved by default in a hidden folder `.config` in library root location.

The library file (`.lib`) contains the configuration of the library.

The database can either be a server based database (e.g. PostgreSQL) or a file base SQLite database (`.db`)

|       **label**       |       **key**       |                                                                                                                                                                                             **description**                                                                                                                                                                                              |
|-----------------------|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Lock Library          | `locked`            | locks the library config and prevents ingesting and editing of elements. This can be helpful if you want to access the library from a different facility and avoid that any changes are made on the main library.                                                                                                                                                                                        |
| Library Name          | `name`              | display name of the library in the application                                                                                                                                                                                                                                                                                                                                                           |
| Library Root          | `root`              | Set the root location for the library data. Set individual paths for each operating system. This is the location were your actual files will be stored. If you move your library data to another location, you only have to update this value and everything should be linked correctly                                                                                                                  |
| Database              | `database`          | database that contains a data for this library For SQLite you can set individual paths for each operating system                                                                                                                                                                                                                                                                                         |
| Template mappings     | `template_mappings` | link the transcoding templates to the specific template types **main** : main template for the library element (required) **thumbnail** : preview of the element (required) - output is a JPEG **filmstrip**: quick preview for movie/sequence files (recommended for movie/sequences) - output is a JPEG **extra**: additional transcoding tasks to run during ingest time or re-rendering for elements |
| Values                | `values`            |                                                                                                                                                                                                                                                                                                                                                                                                          |
| Patterns              | `patterns`          | path patterns that you want to add/overwrite                                                                                                                                                                                                                                                                                                                                                             |
| Transcoding templates | `templates`         | templates for different tasks (transcoding, copy ...)                                                                                                                                                                                                                                                                                                                                                    |

## Path Patterns

Here you can overwrite *path patterns* from the global section. You can also add new ones.

## Path Values

Here you can overwrite the *custom values* from the global section. You also can add new ones.  
**Tip:**

Add a *path value* called **facility** in the global section.

Add the *custom value* somewhere in the *path pattern.*

This way you can share the same folder structure and naming convention for all the libraries between all the sites. Here in the library section you overwrite the value with the name of your facility. This way you could sync the libraries between all your sites but still separating them into different folders.

*Some companies use the IATA airport code to differentiate between their facilities.*

## Template Mappings

Group together transcoding templates to perform different combination of transcoding tasks.

By using the template mappings you can run different tasks during ingest time which can be dependent on the source file. Converting a movie file might needs different steps than a EXR sequence.

The templates mappings can be used e.g to run taks locally or on the render farm.  
**Tip:** You don' want to move the source file?

Make sure to check out this tutorial: <https://docu.das-element.com/docu/Setup-existing-library.467271681.html>

To ingest a source file but keeps its original location, you can use the NoOp (No operation/ do nothing) task. It will register the file path to the database, but leave the file as it is.

## Transcoding Templates

Create transcoding templates for managing tasks like copying a file, generate proxy formats or run a custom command.

### Path Patterns \& Values

Again, you can overwrite *values and patterns* from the library section. You can also add new ones.

The overwriting order is:

* global values

* library values (will overwrite global values)

* finally the transcoding values (will overwrite both global and library values)

### Transcoding Tasks

Define your transcoding task here.

The differnt task styles are:  

|    **task**    |                                                                                                                                                                                      **description**                                                                                                                                                                                      |
|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| NoOp           | no operation, do nothing This can be useful if you already created all your proxy files, but you still want to register the file paths in the database.                                                                                                                                                                                                                                   |
| Copy File      | Copies from the source path to the output path                                                                                                                                                                                                                                                                                                                                            |
| Filmstrip      | Creates a filmstrip with a certain amount of frames for a sequence. This task will only run for movie files and a sequence of images **frames** : define how many frames the filmstrip contains (default: `24`) **height** : height in pixels (default: `270`) The width of the filmstrip is calculated based on the given parameters. Every frame has a fixed pixel aspect ratio of 16:9 |
| Thumbnail      | Create a thumbnail (JPEG file) **width** : width in pixels (default: `480`) **height** : height in pixels (default: `270`) To define which frame to use as the thumbnail frame: **Settings → Global → Thumbnail Frame of Sequence**                                                                                                                                                       |
| FFmpeg         | use FFmpeg to transcode the source file(s) There are several predefined FFmpeg presets More comprehensive documentation will follow.                                                                                                                                                                                                                                                      |
| Custom Command | Run your custom command For example: `exec` C:/python.exe `params` C:/my_script.py \<source.path\>                                                                                                                                                                                                                                                                                        |

#### **Timeout**

The default timeout for transcoding tasks is 60min.

#### Custom Command Examples

The custom command can be useful to send render jobs to you render farm!

Here you will find some helpful example scripts for the Custom Command, like using Deadline and Nuke for the transcoding:

<https://github.com/das-element/resources/tree/main/scripts/custom/examples>

Input the path to the executable (`exec`), e.g. Python interpreter and the parameters (`params`) to run your own scripts.

Exec: `/some/path/python`

Params: `/other/path/send_to_farm.py <source.path>`

You can access all Path Pattern and Path values by adding the `<>` (less-than sign) around them.

##### Examples

|---------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| `<path>`                        | path of the new output `/my/library/file/path/fire-00001.%04d.exr`                                                      |
| `<path_source>` `<source.path>` | path to the source file `/some/path/to/my_file_sequence.%04d.exr`                                                       |
| `<source.name>`                 | name of file with frame padding `my_file_sequence.%04d.exr`                                                             |
| `<source.basename>`             | base name of the file without extension and frame padding `my_file_sequence`                                            |
| `<source.extension>`            | source path file extension `exr`                                                                                        |
| `<element.colorspace>`          | colorspace value defined in the ingest view (only for reference - does not change the actual colorspace of the element) |

##### Copy source file to element path

##### **Exec:** `cp` **params:** `<source.path> <path>`

This will only work for single files like movie files

The *cp (for Linux)/copy (for Windows)* command can't copy files sequences

**Send Python Job to Deadline renderfarm**

    # Exec:
    /opt/Thinkbox/Deadline10/bin/deadlinecommand

    #Params:
    -SubmitCommandLineJob -executable "/usr/bin/python" -arguments "/foo/bar/my_script.py <source.path> <path>" -frames 1 -chunksize 1 -name "das element"

The python script could look something like this:

<https://github.com/das-element/resources/blob/main/scripts/custom/examples/copy_main.py>

---
language: "en"
---
# Library concepts

Different libraries have unique requirements when it comes to structure and organization. For example, a 2D footage library is typically less complex than a texture library. Learn more about these different concepts and explore the best approaches for managing various types of libraries effectively.

Learn more about the general concept of an asset library in this article:

<https://beforesandafters.com/2023/07/11/the-humble-guide-to-building-an-asset-library/>

---
language: "en"
---
# Metadata

An element can have additional metadata information. For example information about the focal lense or the vendor that provided the element. These metadata information are searchable in the Gallery View.  
Please note: this will not change the metadata of the files on disk. This metadata is saved in the database of the library.

## Search metadata

In the Advanced Search in the Gallery View the metadata can be searched.

Combine a detailed search by a colon `:`

Example: *lens:35mm*  
![das-element_vfx_element_asset_library_software_metadata_05.png](https://docu.das-element.com/__attachments/a_324c696cbd7c2c93e07117d5a68eb5313dc8f862e8fe30561de5290c08840e47/das-element_vfx_element_asset_library_software_metadata_05.png?cb=0f3ddcd85aad23e1b2320866fa5cd71a)

## Add metadata

Metadata can be added during the ingest phase.

Click on the **Metadata**button of an element to add additional metadata.  
![das-element_vfx_element_asset_library_software_metadata_01.png](https://docu.das-element.com/__attachments/a_477042c290f1ab7743f4f4b403920be411454105bf0e21e5619138cd45c50b73/das-element_vfx_element_asset_library_software_metadata_01.png?cb=be59a6cd01cc2386b3ca158eb19731bd)  
![das-element_vfx_element_asset_library_software_metadata_02.png](https://docu.das-element.com/__attachments/a_0f9ea0ba78ea06efb955c91839d1a3502c093b999c14e4a974d8118df7fa4c51/das-element_vfx_element_asset_library_software_metadata_02.png?cb=a77c7626cc680764db649077e09f5a7a)

Certian [Path Values](https://docu.das-element.com/path-builder.md) can be used as metadata. These will be replaced by the actual value during ingest.

For example to automatcially set the source filename as a tag `<source.basename>`

## Add metadata using Python hook

It's also possible to use the [Pre Ingest Load hook](https://docu.das-element.com/docu/python-hooks#PythonHooks-PreIngestLoad) to add metadata with a Python script.

The expected format is a **Dictionary** with **key-value** data: `{'key': 'value'}`

Example hook file:

    import sys

    def main(*args):
        items = args[0]

        for item in items:
          item['metadata'] = {'foo': 'bar', 'lens': '35mm'}
        return items

    if __name__ == '__main__':
        main(sys.argv[1:])

## Edit Metadata

In the Gallery View it is possible to edit metada for an element in the **edit mode**  
![das-element_vfx_element_asset_library_software_metadata_03.png](https://docu.das-element.com/__attachments/a_d6436dd932a9a5dd3a84fe30ddc4f2cbd8ff99eeb19e9261d684480269f14f87/das-element_vfx_element_asset_library_software_metadata_03.png?cb=9c20d1894e720c43a7b1731f85c6fb8b)  
![das-element_vfx_element_asset_library_software_metadata_04.png](https://docu.das-element.com/__attachments/a_fbc3182c18cb5105fe6b529ee9491c07476b3190620649467a1348f29c11e90a/das-element_vfx_element_asset_library_software_metadata_04.png?cb=60e8fb1bfdf90b4fd553e0c0b6c39986)

## Metadata as Path Values

Since version 2.2, use metadata as path values by including key-value pairs in your naming convention and folder structure.

    #Example key-value pair

    some_key : some_value

    # Use as path value like this:

    <metadata.some_key>

---
language: "en"
---
# Migrate elements to another library

To migrate/copy elements to another library you can use the migration feature.

The element files (main + proxies) will be copied to the other library location. The naming convention and folder structure is depending on the Transcoding Mapping that is use to migrate the element.

* select elements to migrate

* change into edit mode

* click button **migrate element**

* select new Library

* select Transcoding Mapping

![image-20240510-133113.png](https://docu.das-element.com/__attachments/a_d607b4fc929e22244fec07b7b348c268416b86dd9b4091fbde864acf37051cd8/image-20240510-133113.png?cb=190ba400b2c9a029ba1e9ae8bdfb0d91)  
![image-20240510-133341.png](https://docu.das-element.com/__attachments/a_bc3a9a1e0e636e8f53da50b6f28a7ee1a4685c9448b695131514ff94221c8d8d/image-20240510-133341.png?cb=c7a7d54ddf9ff753130d55acdd9db14d)

## Migrated elements

All the element data will be copied to the new element. The element source path will be the same as the previous element.

You will recognize migrated elements by the blue badge next to the element name.  
![image-20240510-133517.png](https://docu.das-element.com/__attachments/a_c51abe19983d586aa50392218baa5cb00fa34835ced4880d00bf0700d3b99cba/image-20240510-133517.png?cb=d048b023adf67c2e76dc225706efc9c8)

A new tag will be added to the existing element tags:

`migrated from: {previous library name}`  
![image-20240510-133640.png](https://docu.das-element.com/__attachments/a_494421c29d9aea87152472409186ef97be2e5501cc6fc74a7fbcfa919d4d3690/image-20240510-133640.png?cb=0ab79c835166624da69cb164086e5ccc)

The element will keep the same uuid as the previous element. This helps to find the original element.  
![image-20240510-133955.png](https://docu.das-element.com/__attachments/a_67cf62f3c9b709ae74d11482ac298acaaeb7b9ad236d9117e46876ee082238c3/image-20240510-133955.png?cb=fb2143d2b2bf4be620082936095d9d45)

---
language: "en"
---
# Machine Learning Models

Download the Model from [the website](https://das-element.com/account/).

**Accout → Download → AI models**

The machine learning models are needed for the automatic tagging feature of the elements. If you want to use the smart tagging feature, you need to install the machine learning models. These models have been trained for the classification of categories, with each model being trained on a specific task.

The models will be trained by Das Element for you. Over time, these models will improve, contain more categories, and help to tag your library even more effectively.

The machine learning models have the file extension `{model_name}.wit`

By default it is stored in your local user home directory

**Linux/Mac**

`~/.das-element/models`

**Windows**

`%userprofile%/.das-element/models`

## Import Model

You have to import a model to use the auto tagging feature.

* Go to **settings → library → model**

* Click import

* Choose the model you received when buying the full version

![das-element-vfx-asset-element-library-software_settings_model.png](https://docu.das-element.com/__attachments/a_d915270bce8fe61762a5af4435b8dbb76045b27d1f830a7958d5682fac9cba02/das-element-vfx-asset-element-library-software_settings_model.png?cb=c45dd7d0fc9769860f3a79387df35273)

### Define model via environment variable

Use this environment variable to define the file path to a model(s) that should be loaded by default

`DASELEMENT_MODEL`

Use comma `,` to define multiple file paths:

`/path/to/model-01.wit,/path/to/model-02.wit`

An icon indicates when models are loaded via an environment variable.  
![image-20240607-171434.png](https://docu.das-element.com/__attachments/a_a94dd27880b47803940de7ce2b5a3095ad0d7d370f8ce6c3aead905d0cace87e/image-20240607-171434.png?cb=0eb0e8caa1322ff7e582125078ab9c6e)

---
language: "en"
---
# Move library data

Here is how you can move your entire library to a different location:

* move the entire**library folder** to a new location - for example: a different file server

* update the **Library Root** in the library settings to point to that new location on disk

![image-20230926-183929.png](https://docu.das-element.com/__attachments/a_b227cc0d03f69e10fbb372fe50771c00d8cfe142f414569b7703755783214d30/image-20230926-183929.png?cb=fadff0622b54c09eea1274f67359b52c)

The file paths in the database are saved relative to the **Library Root**- this means that the folder structure inside the library root folder has to stay the same. The database configuration can remain as it was before.

---
language: "en"
---
# Multi-operating system setup

## Concept

Each operating system has different file paths that need to be adjusted accordingly. Whenever there is an input for a file path in the settings, the software provides you the possibility to set the divergent paths for the operating systems. The current operating system will be ++underlined++.

### Settings

It looks something like this - in this example ++Windows++ is the current operating system:  
![das-element_docu_multi-os-setup_paths_v001.png](https://docu.das-element.com/__attachments/a_0aa78457cf28235c92eb528998dc26118a1707cbbfa6b64fc40fbdd6484e36af/das-element_docu_multi-os-setup_paths_v001.png?cb=642f69558681ddfd82d2d95c565ad016)

If you open the settings file in a text editor it will look like this:

    ...
        "root": {
            "value": {
                "lin": "/mnt/server/path/to/library",
                "mac": "/Volumes/server/path/to/library",
                "win": "C:\\server\\path\\to\\library"
            }
        },
    ...

Since the config file are in a JSON file format all backslashes "\\" need to be escaped: \\ → \\\\

### Transcoding Tasks

The custom command transcoding task might have an different executable for the operating systems. There is a dropdown box to check if the transcoding task is valid for a certain operating system.  
![das-element_docu_multi-os-setup_transcoding-tasks_v001.png](https://docu.das-element.com/__attachments/a_977993776c0df595f9693c909f5237c14a909ef257ed64c858414f172a8bdf48/das-element_docu_multi-os-setup_transcoding-tasks_v001.png?cb=8e0e01acb8a0cc0b5a9118ef2f1ead7c)

### Example scripts

Some example scripts from the [Github page](https://github.com/das-element/resources) need to be adjusted for the different operating systems.

You sometimes will find the path to the executable (e.g. FFmpeg) on the top of each scripts.

    import sys
    CURRENT_OS = sys.platform

    if CURRENT_OS in ("linux", "linux2"):
        # Linux
        EXECUTABLE_FFMPEG = '/usr/bin/ffmpeg'
    elif CURRENT_OS == "darwin":
        # MacOS
        EXECUTABLE_FFMPEG = '/usr/bin/ffmpeg'
    elif CURRENT_OS in ("win32", "win64"):
        # Windows
        EXECUTABLE_FFMPEG = 'C:/ffmpeg/bin/ffmpeg.exe'
    else:
        raise Exception("Unknown operating system: {}".format(CURRENT_OS))

---
language: "en"
---
# Multi-site setup

## Concept

Each facility has a database server. For each site the facility library is the main library. The libraries from other facilities are replications. These replications are read-only. This means that every site is independent but still benefits from the work and libraries another facility is doing.

**In Postgres terms:**

Use a Streaming Replication for Multi-Site setups.

## Requirements

In each facility you have a database server up and running with [Postgres](https://www.postgresql.org/) installed.

In this example Linux is used to setup the database servers. It should however work with any other operating system as well.

## Create primary database server

### Configure primary server

1. change **postgres.conf**to enable networking

2. create a replication user

3. allow remote access in **pg_hba.conf**

This is the database server in our main facility - e.g. Munich

    initdb -D /var/lib/postgresql/daselement-munich

#### change postgres.conf to enable networking

    vim /var/lib/postgresql/daselement-munich/postgres.conf

    # uncomment and change the line:
    listen_addresses = '*'

    # and change the port to 5433 to avoid conflicts with any default instances that are running on port 5432
    port = 5433

    # start the Postgres server
    pg_ctl -D /var/lib/postgresql/daselement-munich start

#### Create a user accounts

    # postgres is the default postgres database
    psql --port 5433 postgres

    # create user that is allowed to create new databases and read/write information
    CREATE ROLE dbuser LOGIN password 'password';
    ALTER USER dbuser CREATEDB;

    # create replication user
    [local]:5433 postgres=# create user repuser replication;

#### Create a replication user

Allow remote access in **pg_hba.conf**

add line to allow access for the replication user

    vim /var/lib/postgresql/daselement-munich/pg_hba.conf

    # TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
    # IPv4 local connections
    host    all             repuser             localhost               trust

    # restart the Postgres server because of changes in the config files
    pg_ctl -D /var/lib/postgresql/daselement-munich restart

The primary system is now ready. Let's move on to the replica system!

## Create replica database server

### Configure replication server

Now we are at a clean database server in another facility - e.g. Vancouver

    # create the replica Postgres server
    # this command pg_basebackup copies the files from the primary database

    pg_basebackup -h db-munich -U repuser --checkpoint=fast -D /var/lib/postgresql/daselement-munich-replica/ -R --slot=daselement_munich -C --port 5432

In the replica directory you will find these two files:  

|------------------------|----------------------------------------------------------|
| `standby.signal `      | this file defines that the database that it is a replica |
| `postgresql.auto.conf` | contains information to connect to the primary server    |

Now start the replica server:

    # start the Postgres server
    pg_ctl -D /var/lib/postgresql/daselement-munich-replica

Any changes made in the primary database get synced/streamed to the replication server(s). If the replication server is down it will add the changes once it's back online!

### Configure library

In the other facility copy and import the library (.lib) from main facility:

1. update the library root

2. update the database information

3. lock the library (Lock Library option) to prevent editing and ingesting of new elements!

An option is to setup the main facility to automatically sync the Proxy Files to the other facilities when an element is ingested. This can be done with an additional transcoding task and a custom command task.

    # Example:
    your-sync-tool <paths.proxy.directory> /path/to/other/facility
    your-sync-tool <paths.filmstrip.directory> /path/to/other/facility
    your-sync-tool <paths.thumbnail.directory> /path/to/other/facility

To reduce disk space and network traffic only sync the high-res source files when needed

## Advanced Setup

If you want to take it a step further it's a good idea to look into these topics:

* high availability

* load balancing

* connection pooling

* automatic fail-over

Here is a great [video tutorial](https://www.youtube.com/watch?v=qpxKlH7DBjU) using [PGPool-II](https://pgpool.net/) to deal with these topics.

## Monitoring

Monitoring should be done on the primary database server

To monitor the databases you can for example use [pgwatch2](https://github.com/cybertec-postgresql/pgwatch2)

## Troubleshooting

**psql - commands**  

|                     **command**                      |        **description**        |
|------------------------------------------------------|-------------------------------|
| `\l `                                                | list all databases            |
| `\dt`                                                |                               |
| `\du`                                                | list all users                |
| `\dRp`                                               | lists available publications  |
| `\dRs`                                               | lists available subscriptions |
| `ALTER USER user_name WITH PASSWORD 'new_password';` | change user password          |

### Can not start Postgres Database

    FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5434.lock": Permission denied

Solution is to fix the permissions on the folder. For example like this:

    sudo chmod a+w+r /var/lib/postgresql

#### **initdb: command not found**

The **initdb** is located in the installation directory of Postgres.

Fix for Ubuntu:

    # create a symbolic link to initdb to access the command
    sudo ln -s /usr/lib/postgresql/14/bin/initdb /usr/local/bin

    # now you can run ...
    initdb

#### **pg_ctl: command not found**

The **pg_ctl** is located in the installation directory of Postgres.

Fix for Ubuntu:

    # create a symbolic link to initdb to access the command
    sudo ln -s /usr/lib/postgresql/14/bin/pg_ctl /usr/local/bin

    # now you can run ...
    pg_ctl

#### Unable to connect to server; FATAL: role "postgres" does not exist

Seems like there is no user in the database called "postgres".

To create a user use this command:

    # access the database
    psql --port=5432 postgres

    # create user in the database
    CREATE ROLE postgres LOGIN password 'postgres';

---
language: "en"
---
# Path Builder

[das-element_explained_path_values_v001_25fps_h264.mp4](https://docu.das-element.com/__attachments/a_37718b8885f9904252b4190dc38e2484322f66cad14c5b6f50561f14456118a4/das-element_explained_path_values_v001_25fps_h264.mp4.md)

You can use predefined values, attributes, and placeholder tokens that will be replaced by actual values depending on the element. For example, you can use the element's width and height to define the naming of the resolution folder.  
![image-20240607-150539.png](https://docu.das-element.com/__attachments/a_9c4e458d012033e8aeff33a55321d1553f9d99e8386d9b351c67e5395edd6982/image-20240607-150539.png?cb=68a63107d242c24b050d42d4b409a8bb)

The Color Code is a visual aid to distinguish between different path items. Each color represents a different type of item that you can drag and drop to build the folder structure and naming convention. Some values are predefined, some are only known during the ingest phase, and others can be set manually by you. These values are resolved to their actual values during ingest or render time.  

|---------------|---------------------------------------------------------------------------------------------|
| `custom`      | custom text values by the user in the section: `Path Values`                                |
| `generic`     | Generic characters like: `. _ - /` (dot underscore hyphen slash)                            |
| `default`     | default predefined element attributes like the path to the source or different proxy files. |
| `pattern key` | Pattern keys from the section `Path Pattern` that get resolved on render time               |
| `value keys`  | Value keys from the section: `Path Values`                                                  |

To toggle the edit mode of the Path Builder, click the pen button on the right side. In the config files, these path values will be surrounded by angle brackets (`< >`). Example: `<element.main.name>`  
![image-20240607-152448.png](https://docu.das-element.com/__attachments/a_7da99f0a656ff7c773d43846dd694b8c2dc56bb931f6124452127feecf1b66c4/image-20240607-152448.png?cb=582f99e1aeb961f0f9f38ea02e767ad5)

## Predefined element attributes

In the Settings → Global you will find a large list of predefined element attributes that you can use in for example custom commands to pass values to your custom command line scripts.  
![image-20240607-151901.png](https://docu.das-element.com/__attachments/a_89b46a9b4d46e967d60fcab7f26792c9a1998d9c670cf65403255bc05225c6d7/image-20240607-151901.png?cb=13198db1a5cf629afd97c47483751ff2)

* hover over an attribute to see how it accesses the information

* by clicking on an attribute, it will be copied to the clipboard.

![image-20240607-151828.png](https://docu.das-element.com/__attachments/a_550c7acad23a422c76607e83cb6e763aaefed69a854b6f8d6bec882af63b479a/image-20240607-151828.png?cb=d4a0d8c582300a003b3b38fef46b5ca6)

### Reserved keywords

There are a few reseverd keyword that will not be resolved to any other value. These are mainly used for the rendermanager Deadline: `STARTFRAME` `ENDFRAME` `QUOTE` `AUXFILE`

---
language: "en"
---
# Permission

Since version 2.2 the permission can be defined for each asset.

Like Unix file permissions, the three permission flags control an element's permissions:

* see (read)

* edit (write)

* use (execute)

**Examples**

* **111** → full permissions (see, edit, use)

* **000** → no permissions (can't see, can't edit, can't use)

* **101** → see, can't edit, use

* **100** → see, can't edit, can't use

| **Value** |     **Description**     |
|-----------|-------------------------|
| 000       | No permissions          |
| 001       | Use permission          |
| 010       | Edit permission         |
| 011       | Edit \& use permissions |
| 100       | See permission          |
| 101       | See \& use permissions  |
| 110       | See \& edit permissions |
| 111       | Full permissions        |

In Gallery View, icons indicate an element's permission unless the permission is "can't see," which hides the element in the lite and restricted standard version.  
![das-element_gallery_permission.png](https://docu.das-element.com/__attachments/a_bb0d488b35db26e1a7eac6d436a39a8f4841ade9a59707aa37d80c0beca1ca7a/das-element_gallery_permission.png?cb=4dcdc9dfaa61598d2db55cfa9b584a30)

## Edit permission

Setting / changing permissions can be done during ingest or afterwards in the Gallery View (edit mode).  
![image-20251110-102134.png](https://docu.das-element.com/__attachments/a_05876c02eeed02e09918ab84915c47c658724b3efd8e4aecbcfecd7073cd5538/image-20251110-102134.png?cb=83ea531a6736ca6510f44e3e60254a98)  
![das-element_version-release_2.2_permission.png](https://docu.das-element.com/__attachments/a_22eab3afcd5f33ad544e2c100878d14dfe96671aad790f1346e71bc75f50966f/das-element_version-release_2.2_permission.png?cb=f8d34ed0df30184c1af349d5c2edecfd)

## Permission edit level

Depending on the software type, users may or may not change different permissions.

### Standard version

* "admin" can always change the element permissions

* "admin" can always use, see and edit

### Restricted standard version

For advanced artists who ingest, but can't control the settings:

* advanced artists can see, edit and use

* advanced artists can see, use, but not edit

* advanced artists can see, but not use, not edit

* advanced artists can't see

Activate restricted standard version by setting the environment variable: `DASELEMENT_SETTINGS_RESTRICTED`

### Lite version (for artists)

* artist can see and use

* artist can see but not use

* artist can't see

## Control permission via Python hook

If more customization is required a Python hook can be used to dynamically control which elements will show up in the user interface.

Link to example hook:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/gallery/pre_gallery_load.py>

This lets you control permissions and set restrictions like these:

* Unrestricted (means all studios, all shows, all users can use the data),

* Show Restricted (limited to the specific show),

* Series Restricted (limited to the series: e.g.: project ABC's assets),

* Client Restricted (limited to the clients, e.g.: client A, client B),

* Studio Restricted (limited to the facility: Munich, Berlin, ...),

* Other Restrictions (anything else)

---
language: "en"
---
# Hooks

You can use Python (and Javascript) hook files to do some custom scripting.

In order to find the hook files the file name must match exactly. Please see list below.

The example scripts can be found here:

<https://github.com/das-element/resources/tree/main/scripts/hooks/examples>  

|        **Script**        |                                                                                                                       **Description**                                                                                                                        |
|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pre_render.py`          | Gets executed before each transcoding task                                                                                                                                                                                                                   |
| `post_render.py`         | Gets executed after each transcoding task                                                                                                                                                                                                                    |
| `pre_ingest_load.py`     | Gets executed before the file paths get loaded into the ingest view                                                                                                                                                                                          |
| `pre_element_delete.py`  | Gets executed before and elements is delete from the library                                                                                                                                                                                                 |
| `post_element_delete.py` | Gets executed after and elements got delete from the library                                                                                                                                                                                                 |
| `pre_export.py`          | Gets executed before the library elements get exported from the Settings → Library → `export elements` This is not drag\&drop of elements into another application! Use the drag\&drop notations or `pre_gallery_drag.js` instead, to customize dragged data |
| `pre_gallery_drag.js`    | Gets executed right after the drag of an element. Useful to customize and format the dragged data outside of the software. Please note that this is a Javascript file.                                                                                       |

The software follows this order looking for Python Hook files.

1. directory defined in the `$DASELEMENT_HOOKS` environment variable

2. directory defined in the `$DASELEMENT_RESOURCES/scripts/hooks` environment variable

3. your local `.das-element` folder (for Linux:` ~/.das-element/scripts/hooks` or for Windows `%homepath%/.das-element/scripts/hooks`)

The result data needs to be JSON serializable.

For example convert pathlib Path to string → str(Path('/some/path/file.exr'))

## Pre Render Hook

The input is the `resolver data dictionary` which will be used to resolve the path pattern. You can modify it here before the transcoding task gets processed.

You will need to return the same dictionary with your changes included.

In the example below, in order to resolve a path pattern like `<custom.dependecy>` you need to add some value for the custom data. If that is not provided the resolve would otherwise fail if you re-render the proxies and there is no main task to provide the dependency which we normally would get from the post render hook after sending the task to the render farm.

Link to example script:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/deadline/pre_render.py>

## Post Render Hook

The input is the output of the process called by the custom command task.

You will have to return a Dictionary which will be added as `custom` to the resolver data and can later be accessed in the Path Builder. `return {'dependency': job_id}` can later be resolved with `<custom.dependency>`

Link to example script:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/deadline/post_render.py>

## Pre Ingest Load

This hook can be used to parse the file paths to set tags and the category from the file path before the items are loaded into the ingest list. These tags and the category will automatically populate the ingest list items.

The input is a List of Dictionaries and the same has to be returned from the function.

Link to example script:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/ingest/pre_ingest_load.py>

## Pre Export

This hook can be used to edit, reformat or add additional values to the **export elements** from the settings page of the library.  
![image-20250219-135054.png](https://docu.das-element.com/__attachments/a_b361525146efe0a6b84f4d42521d559cbc4d1b0cd9f8f7a369e2327e9580fe30/image-20250219-135054.png?cb=3bb59df039006f78ed8a5bdf24888591)  
Tip: use this hook to create a CSV file that you can import into Shotgrid

The input is a List of Dictionaries and the same has to be returned from the function.

Link to example script:

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/shotgrid/pre_export.py>

## Pre / Post Element Delete

Hook file that gets exectued right befor and after an element was delete from the library and database. Allows custom cleanup and deletion of files.

By default software will only delete path files defined in the database:

* `path`

* `path_thumbnail`

* `path_filmstrip`

* `path_proxy`

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/delete_element/pre_element_delete.py>

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/delete_element/post_element_delete.py>

## Pre Gallery Drag

Use this hook to customize and format the data that is being dragged outside of the software.

It will drag a String format of the data that you specified in the hook file.

<https://github.com/das-element/resources/blob/main/scripts/hooks/examples/gallery/pre_gallery_drag.js>  
Please note that this is a Javascript file.

## Troubleshooting

### Logger inside python file

Since version `2.1.2` you can directly access the logger inside the hook files.
Python

    def main(*args, logger=none):
        items = args[0]

        # use the Das Element logger
        # will log to  ~/.das-element/logs/
        
        logger.warning('This is a warning!')
        
        return items

    if __name__ == '__main__':
        main(sys.argv[1:])

Example for `pre_load_ingest.py`
Python

    import logging

    def main(*args, logger=none):
        items = args[0]

        logger.warning('This is a warning!') # <- use the Das Element logger (~/.das-element/logs/)

        logging.warning('This is a warning!') # <- use the default logging module

        for item in items:
          print(item) # <- this print() will be output to the console
        return items

    if __name__ == '__main__':
        main(sys.argv[1:])

---
language: "en"
---
# Quick start

[das-element_the_first_setup_25fps_h264_v001.mp4](https://docu.das-element.com/__attachments/a_c2ae8fba2b48dbd2d86b47e62a6d61e1d6ce7241ca92362621635058300413f4/das-element_the_first_setup_25fps_h264_v001.mp4.md)

## First setup

The first time you start the application, you will see the start-up screen.

From here, you can either create a new configuration for a new library, load an existing configuration, or open the documentation.  
![image-20240607-163916.png](https://docu.das-element.com/__attachments/a_749b71326737a66819f1d6a8de328cb4f8ce45fd645d0eefd06de3df4d39e9d6/image-20240607-163916.png?cb=382dce54f7aee4cd0a8bf876cdaad483)

### Create new configurations

#### Where to save the configuration file?

Define where the configuration (config) file is saved.

The config file contains the global configuration for all libraries. Here you can define the file structure and naming convention for each library.

You can either use the default location or set a custom location. For single users, it's probably best to use the default location. For a studio, you may want to select a place on your server where everyone can access it.  
![image-20240607-163931.png](https://docu.das-element.com/__attachments/a_62bde6eac2f4317c556e160115347e2abc45d236a318e233c014b67f7bc17477/image-20240607-163931.png?cb=6d18485a852de0ace525686e5e50798f)

##### Use a preset?

Either start your configuration from scratch or use a predefined preset.

The preset will help you get started quickly by setting up the path patterns and values for you. If you are using the software for the first time, it's advisable to begin with a predefined preset.

Click **show Preview** to see a preview of the folder structure and naming convention.  
The path pattern and values define your naming convention and file structure on disk.  
![image-20240607-164119.png](https://docu.das-element.com/__attachments/a_bdff77d84b96c6e65f20f68560e6ca09a725ae1497efa066696548081158130f/image-20240607-164119.png?cb=cd0020f69998b47f0ee537e97d0d0ab5)

##### Complete

Finally, complete the first step by clicking the "**let's go!**" button to create the setup.  
![das-element-vfx-asset-element-library-software_startup-step-3.png](https://docu.das-element.com/__attachments/a_f284cadb37ad30f8a20d9a18fe7217d5a5c0167700e8c7208b5e3a58c2847e7f/das-element-vfx-asset-element-library-software_startup-step-3.png?cb=0c599621c7c402ab5128dab60f7589d2)

You will be redirected to a new page where you can choose either to **create** or **load/import** your libraries.  
![das-element vfx asset element library software no library](https://docu.das-element.com/__attachments/a_843bfc163b5980b2c482e0279851d91bbeda1ade3bc8904fb64657981cced690/das-element-vfx-asset-element-library-software_no-library.png?cb=2eba3030ad8e52ca4b97cd3186d2ee67)

The next step is:

* create a new library or import existing library

## Create new library

When you click **create library** a dialog will appear.  
![image-20240607-164343.png](https://docu.das-element.com/__attachments/a_2f2790d74abfa688a5b7e5fdc5323de3158345e4054ecabac7f6b57bf31f6389/image-20240607-164343.png?cb=46c7f19a0568b6b2e7a6f49aa7374550)
Choose display name of library  
![image-20240607-164611.png](https://docu.das-element.com/__attachments/a_eb83cb71eec38da69cec8bef8fbc715f9ef5704aa51f6bcd3f6698c4ba35180e/image-20240607-164611.png?cb=dd89e37440009fe19f678720b84a68e8)
Choose your preferred database  
![image-20240607-164708.png](https://docu.das-element.com/__attachments/a_4b40c99638641176dfa36513e4e8c72cc5c7df4d7f480f47efe3d1476252f0c1/image-20240607-164708.png?cb=928e3921303d7586a03a7473dbc94d3c)

|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Name         | display name of your library - this can be changed later and can contain spaces                                                                                                                                                                                                                                                                 |
| Preset       | You can choose a **Transcoding Preset** The presets specify the proxy generation, like thumbnails.                                                                                                                                                                                                                                              |
| Library File | The library file contains all information about the configuration of the library. It can be saved on a server where everybody has access.                                                                                                                                                                                                       |
| Library Root | Define the root location of the library data                                                                                                                                                                                                                                                                                                    |
| Database     | Select which database to use for library. It holds all information about the different elements. Either use a file based database (SQLite) or a server based database (e.g. PostgreSQL) The SQLite file can be saved on a server where everybody has access. It's recommanded to use a server based database like PostgreSQL, MySQL or MariaDB. |

Your current operating system (++underlined++) will be validated and the data is primarily added for this OS. It is possible to set the paths for the other operating systems by toggling the button on the bottom.

Go to **Settings** → L**ibrary**to manage the library you just created. Here you can configure your transcoding templates for the proxy generation.

## Views

The different views are depending on the version that you are using.

For example: ***Das Element Lite*** has no ingest view

### Gallery

This is the gallery view. Here you can search for elements and browse your libraries.  
![das-element-vfx-asset-element-library-software_gallery_small-01.png](https://docu.das-element.com/__attachments/a_7f16c04e8b69b24a4968370f351c31f302cf9b8aa3842f4bca1cb587f1d7a5a6/das-element-vfx-asset-element-library-software_gallery_small-01.png?cb=9960d8035943ce5da67c9c680d4b2e14)

### Ingest

Ingest new elements into one of your libraries. This is where the tagging is happening.  
![das-element-vfx-asset-element-library-software_ingest_small-01.png](https://docu.das-element.com/__attachments/a_16cacd728b8803400e060e310bb72988c2e06ac21727ff51c7128936bd3e7893/das-element-vfx-asset-element-library-software_ingest_small-01.png?cb=7cf4ebb74b757788a379b6d6f8f92ce0)

### Settings

In the settings you can manage different things, your libraries and transcoding templates.  
![das-element-vfx-asset-element-library-software_settings_small.png](https://docu.das-element.com/__attachments/a_40ed0a343ac698d38740f28738591dac3ef2eaddfcd72c7043afe395bbe1f379/das-element-vfx-asset-element-library-software_settings_small.png?cb=86847fbef4e357635d72aebab7e9878e)

---
language: "en"
---
# Render meaningful thumbnail

The software is rendering a **meaningful thumbnail** when using the transcoding task **thumbnail** in a local render task. To render a meaningful thumbnail outside of the software e.g. on the render farm, you can use the CLI version of the software.

The flag `render-element-proxies` allows to render a transcoding mapping for an element.

You need to provide:

* `element uuid`

* `template mapping name`

Command line to trigger the proxy rendering via the CLI tool:

    /path/to/das-element_1.2.5_lin render-element-proxies <element.uuid> "template mapping name"
    "C:/path/to/das-element_1.2.5_win.exe" render-element-proxies <element.uuid> "template mapping name"

The example Python script ([create_thumbnail.py](https://github.com/das-element/resources/blob/main/scripts/custom/examples/create_thumbnail.py)) from the GitHub page does not include this feature to detect a meaningful thumbnail frame. A lot of "magic" is happending behind the scenes which would make the example script to complex and to harder to maintain.

## Example setup

The **main farm** transcoding taskwill be send the main transcoding job to the farm. The proxy tasks (proxy, thumbnail, filmstrip) have **noop** (no operation) as the transcoding tasks. This is needed in order to save the correct file paths to the database for the proxies.

An **extra** job triggers the template mapping **render proxies on farm**via the CLI tool that renders the proxy files. This will execute a local render including the rendering of a meaningful thumbnail.  
![das-element-vfx-asset-element-library-software_settings_transcoding-cli-render-element-proxies_01.png](https://docu.das-element.com/__attachments/a_af24c5186eae5f0555d51d7bce18542b29a4ed140cbc1ed7c1a678d5e564eea4/das-element-vfx-asset-element-library-software_settings_transcoding-cli-render-element-proxies_01.png?cb=0ad7450c3ac1e6277968811f656957e0)

### Example for the extra render job with Deadline

#### Exec

    "C:/Program Files/Thinkbox/Deadline10/bin/deadlinecommand.exe"

#### Params

    -SubmitCommandLineJob -executable "C:/mnt/server/path/to/das-element_1.2.5_win.exe" -arguments "render-element-proxies <element.uuid> \"render proxies\"" -name "[das element] <name> - proxy" -prop BatchName="[das element] <name>" -frames 1 -chunksize 1 -priority 50 -prop JobDependencies="<custom.dependency>" -prop OutputDirectory0=\"<paths.proxy.directory>\" -prop OutputFilename0=\"<paths.proxy.filename>\"

[Next Page](https://docu.das-element.com/llms-full.txt/1)
