ayon-core/server_addon/max/server/settings/main.py

139 lines
4.4 KiB
Python

from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import ImageIOSettings
from .render_settings import (
RenderSettingsModel, DEFAULT_RENDER_SETTINGS
)
from .create_review_settings import (
CreateReviewModel, DEFAULT_CREATE_REVIEW_SETTINGS
)
from .publishers import (
PublishersModel, DEFAULT_PUBLISH_SETTINGS
)
def unit_scale_enum():
"""Return enumerator for scene unit scale."""
return [
{"label": "mm", "value": "Millimeters"},
{"label": "cm", "value": "Centimeters"},
{"label": "m", "value": "Meters"},
{"label": "km", "value": "Kilometers"}
]
class MxpWorkspaceSettings(BaseSettingsModel):
enabled_project_creation: bool = SettingsField(
False, title="Enable Project Creation")
mxp_workspace_script: str = SettingsField(
title="Max mxp Workspace", widget="textarea"
)
class UnitScaleSettings(BaseSettingsModel):
enabled: bool = SettingsField(True, title="Enabled")
scene_unit_scale: str = SettingsField(
"Centimeters",
title="Scene Unit Scale",
enum_resolver=unit_scale_enum
)
class PRTAttributesModel(BaseSettingsModel):
_layout = "compact"
name: str = SettingsField(title="Name")
value: str = SettingsField(title="Attribute")
class PointCloudSettings(BaseSettingsModel):
attribute: list[PRTAttributesModel] = SettingsField(
default_factory=list, title="Channel Attribute")
class MaxSettings(BaseSettingsModel):
unit_scale_settings: UnitScaleSettings = SettingsField(
default_factory=UnitScaleSettings,
title="Set Unit Scale"
)
mxp_workspace: MxpWorkspaceSettings = SettingsField(
default_factory=MxpWorkspaceSettings,
title="Max Workspace"
)
imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings,
title="Color Management (ImageIO)"
)
RenderSettings: RenderSettingsModel = SettingsField(
default_factory=RenderSettingsModel,
title="Render Settings"
)
CreateReview: CreateReviewModel = SettingsField(
default_factory=CreateReviewModel,
title="Create Review"
)
PointCloud: PointCloudSettings = SettingsField(
default_factory=PointCloudSettings,
title="Point Cloud"
)
publish: PublishersModel = SettingsField(
default_factory=PublishersModel,
title="Publish Plugins")
DEFAULT_MXP_WORKSPACE_SETTINGS = "\n".join((
'[Directories]',
'Animations= ./sceneassets/animations',
'Archives=./archives',
'AutoBackup=./autoback',
'BitmapProxies=./proxies',
'Fluid Simulations=./SimCache',
'Images=./sceneassets/images',
'MaxStart=./',
'Previews=./previews',
'RenderAssets=./sceneassets/renderassets',
'RenderOutput= ./renders/3dsmax'
'Scenes=./',
'Sounds=./sceneassets/sounds',
'[XReferenceDirs]',
'Dir1=./',
'[BitmapDirs]',
'Dir1=C:/Program Files/Autodesk/3ds Max 2023/Maps',
'Dir2=C:/Program Files/Autodesk/3ds Max 2023/Maps/glare',
'Dir3=C:/Program Files/Autodesk/3ds Max 2023/Maps/adskMtl',
'Dir4=C:/Program Files/Autodesk/3ds Max 2023/Maps/Noise',
'Dir5=C:/Program Files/Autodesk/3ds Max 2023/Maps/mental_mill',
'Dir6=C:/Program Files/Autodesk/3ds Max 2023/Maps/fx',
'Dir7=C:/Program Files/Autodesk/3ds Max 2023/Maps/Particle Flow Presets',
'',
))
DEFAULT_VALUES = {
"unit_scale_settings": {
"enabled": True,
"scene_unit_scale": "Centimeters"
},
"mxp_workspace": {
"enabled_project_creation": False,
"mxp_workspace_script": DEFAULT_MXP_WORKSPACE_SETTINGS
},
"RenderSettings": DEFAULT_RENDER_SETTINGS,
"CreateReview": DEFAULT_CREATE_REVIEW_SETTINGS,
"PointCloud": {
"attribute": [
{"name": "Age", "value": "age"},
{"name": "Radius", "value": "radius"},
{"name": "Position", "value": "position"},
{"name": "Rotation", "value": "rotation"},
{"name": "Scale", "value": "scale"},
{"name": "Velocity", "value": "velocity"},
{"name": "Color", "value": "color"},
{"name": "TextureCoordinate", "value": "texcoord"},
{"name": "MaterialID", "value": "matid"},
{"name": "custFloats", "value": "custFloats"},
{"name": "custVecs", "value": "custVecs"},
]
},
"publish": DEFAULT_PUBLISH_SETTINGS
}