Settings reference

Updated July 2026

All project configuration — the pipeline behavior every artist on a project shares — lives in the Dousen web management portal at /portal/ and is admin-only. DousenDesktop itself no longer carries admin-level pipeline settings; it is purely a client that reads whatever the portal publishes. This page is your reference for those project-level settings.

DousenDesktop does keep its own local settings — per machine, never synced to DousenCore — for things that are inherently per-workstation rather than per-project. See the distinction below before assuming a setting belongs in the portal.

Where settings live

Each project in the portal holds several YAML documents plus a few scalar fields, all edited from the project view:

SettingWhat it controls
Pipeline settingsExport/import behavior, texture rules, custom validator paths, OCIO, Jira-on-submit. Covered on this page.
Naming conventionsAsset naming rules. See Naming conventions.
ValidatorsPre-export and admin asset checks. See Asset validation.
Jira configBase URL, project key, and account email for server-side actions like Jira-on-submit. The portal form has no API-token field yet — the transition token is set at the database level for now. See Jira.
Perforce depot pathThe depot path used to auto-create artist workspaces. See Perforce.

Project settings vs. desktop app settings

Everything above is a project setting: server-side YAML, shared by every artist on that project, edited by an admin in the portal. DousenDesktop separately keeps a small set of local settings — a JSON config file per machine, never sent to DousenCore — for things that are inherently about this workstation rather than this project. They live behind Settings in the tray app, not the portal:

The DousenDesktop Settings dialog where per-machine local settings are edited.
Local settings live in this dialog, not the web portal.
Local settingWhere it's editedWhat it controls
DCC Apps — Launch Arguments, Environment VariablesSettings → DCC Apps, per app entryExtra command-line arguments and env vars for launching one DCC on this machine. See Loading studio tools.
jiraBaseUrl, jiraEmailSettings → Jira tabThis machine's Jira connection for fetching tasks directly from Jira (the API token is stored separately, obfuscated). See Jira tasks.
ueAutoImportWhenClosed, ueEditorCmdPathSettingsWhether DousenDesktop headlessly imports assets via UnrealEditor-Cmd when the Unreal Editor isn't already polling the bridge, and the path to that executable. See Unreal Engine.
gdriveMountPath, onedriveMountPathSettingsLocal mount points for source assets stored on Google Drive or OneDrive instead of Perforce.
defaultP4Port, defaultP4User, defaultP4Workspace, defaultP4LocalRootFirst-run onboardingPerforce connection hints used when setting up a new project's workspace on this machine. See Perforce.

Local settings are read from this machine's config file at launch and never round-trip through DousenCore — two artists on the same project can have entirely different DCC launch arguments or Jira accounts configured. The rest of this page is exclusively about the project settings above the table.

Pipeline settings

Pipeline settings are a single YAML document per project. The recognized keys are below; unknown keys are ignored, so studio-specific notes can live alongside them.

KeyMeaning
export_presets.<dcc>.<key>Per-DCC export defaults. Supported DCCs: blender, maya, 3dsmax, houdini, substance_painter, substance_designer.
texture.allowed_formatsList of texture file formats artists may export. tga is the recommended default; png, exr and tif are also accepted.
validators.extra_pathsFolders to load custom validators from. See Asset validation.
app_paths.<dcc>.startup_scriptsStudio scripts run after Dousen's own DCC initialization. See Loading studio tools.
jira.on_submit_transitionJira transition applied when a changelist is submitted. See Jira tasks.
ocio.config_pathShared OCIO config path. Blank means each DCC uses its own default.

Export presets

Each preset is keyed by DCC, then by a leaf setting; the addon reads its own DCC's block and applies whichever keys it recognizes as native export options — an unrecognized or absent key is simply skipped, not an error. Every row below is a key the corresponding addon actually reads and applies, not just a documented placeholder:

DCCKeys under export_presets.<dcc>Applied as
blenderfbx_version, apply_modifiers, embed_textures, use_armature_deform_only, bake_anim, bake_anim_use_all_bones, bake_anim_step, axis_forward, axis_upKeyword arguments to bpy.ops.export_scene.fbx().
mayafbx_version, apply_modifiers, embed_textures, smoothing_groups, hard_edges, tangents, smooth_mesh, triangulateFBXExport* MEL commands run before FBXExport.
3dsmaxfbx_version, smoothing_groups, tangents, triangulate, embed_textures, preserve_instances, up_axisFBXExporterSetParam calls via pymxs.
houdinialembic_format, flatten_hierarchy, save_attributesParameters on the Alembic ROP node (format, flatten, savealiases).
substance_painterformatExport preset output file format.
substance_designerformatBake/export output file format.

The portal's Form view renders a dropdown, not a free-text box, for the keys with a fixed value set — this is a UI convenience only; the API itself doesn't validate these values, so the YAML view (or a raw PUT) accepts any string:

Texture rules

texture.allowed_formats is a list of file extensions artists are expected to export. Today it's actively checked in one place — Substance Painter's export-finished callback compares every exported file's extension against the list and prints an advisory console warning for anything outside it; it does not block the export. The other texturing paths store and round-trip the key but don't yet check against it.

TGA is the recommended source format — it's what the Substance addons export by default (export_presets.<dcc>.format defaults to tga). The source format never ships in the game: Unreal recompresses every texture to a GPU block format (BC/ASTC) at cook time, so TGA vs. PNG makes no runtime difference. TGA is preferred because it's the games-pipeline convention and carries no colour-management metadata at all — the values you write are the values that get read. That matters most for raw data maps (normal, roughness, metallic, masks), which must stay linear: PNG's optional gamma/sRGB/ICC chunks are handled inconsistently and can leave a linear map wrongly gamma-corrected somewhere in the chain, whereas TGA can't. (It also sidesteps PNG's undefined RGB under fully-transparent pixels.) For genuinely linear data needing more than 8 bits — heightmaps, HDR — use exr or 16-bit tif; 8-bit of any format bands badly when stored linear.

Within Dousen's own DCC → Unreal path this is handled for you regardless of format: the plugin's texture classifier sets each map's sRGB flag per channel on import (BaseColor and Emissive sRGB; Normal, Roughness, Metallic, AO, ARM, Mask, Height and Opacity linear), so the colour space follows the channel, not the file's chunks. The PNG ambiguity above bites mainly in general interchange between tools that trust the gamma chunk. PNG's one real edge is a smaller on-disk footprint in source control.

Texture size limits — texture.max_resolution and texture.resolution_power_of_2 — are validator rules set in the Validators tab, not pipeline settings. See Asset validation.

Custom validators

validators.extra_paths lists folders Dousen loads extra validators from. Each entry can be a Perforce path (//depot/...), a path relative to the source root, or an absolute path.

Startup scripts

app_paths.<dcc>.startup_scripts lists studio scripts that run after Dousen's own DCC init — use this to inject existing pipeline tools without disrupting the addon. Full guide: Loading studio tools.

Jira on submit

jira.on_submit_transition names the Jira transition applied automatically when a linked changelist is submitted. Matching is case-insensitive; leave it blank to disable. See Jira tasks and Perforce.

Color management

ocio.config_path points every DCC at a shared OCIO config. Blank means each DCC keeps its own default color setup.

Example

YAMLexport_presets:
  blender:
    fbx_version: FBX202000
    axis_forward: -Z
    axis_up: Y
  maya:
    fbx_version: FBX201900
    up_axis: y
  houdini:
    alembic_format: Ogawa

texture:
  allowed_formats: [tga, png, exr, tif]

validators:
  extra_paths:
    - //depot/pipeline/dousen/validators
    - ./tools/validators

jira:
  on_submit_transition: In Review

ocio:
  config_path: //depot/color/aces/config.ocio

Who can view and edit

Reading settings only requires a valid session for the project's tenant — any signed-in member (and the DCC addons, which fetch with the same server-issued token) can GET the current YAML. Saving is admin-only, enforced twice: the whole admin section of the portal (including both settings editors below) sits behind a require_admin route guard, and the raw PUT /api/projects/:id/settings endpoint independently rejects any caller whose JWT role isn't Admin with 403 Forbidden — so a non-admin can't reach it even by calling the API directly.

Editing in the portal

The project's Pipeline settings tab offers two views over the same document:

Both views write through the same validation: the submitted text must parse as YAML or the save is rejected with an inline error.

API endpoint

Outside the portal, pipeline settings are also reachable directly:

MethodEndpoint
GET/api/projects/:id/settings
PUT/api/projects/:id/settings

The body is the settings YAML. GET returns the built-in defaults (not an error) for a project that has never saved custom settings, so a client always gets a usable document. PUT is admin-only and validates the body parses as YAML before saving; an invalid body is rejected with 400 Bad Request and the previous settings are left untouched.

How changes reach a running DCC

Propagation timing depends on which setting changed — there's no single answer:

Asset versioning (not a setting)

Dousen keeps immutable asset versions for published work — each version records the Perforce changelist, the Jira key, and who published it, along with the version's file representations and dependencies. This is read-only history available through the API; there is nothing to configure here.