Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions conda_recipes/3dsmax-2025/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Autodesk 3ds Max 2025 conda build recipe

## Creating an archive file for Windows

The Windows installer requires Administrator permissions that are not available in most conda package
build environments, such as on Deadline Cloud service-managed fleets. Follow these instructions to
install 3ds Max 2025 on a freshly created EC2 instance as Administrator, and create an archive file
for use by the conda build recipe.

1. Launch a fresh Windows Server 2022 instance.
1. From the AWS EC2 management console, select the option to Launch instance.
2. Enter instance name "Create Windows 3ds Max archive".
3. Select "Microsoft Windows Server 2022 Base" for the AMI.
4. Select an instance type with enough vCPUs and RAM, for example c5.4xlarge has 8 vCPUs and 16 GiB RAM.
5. Select "Proceed without a key pair" for the "Key pair (login)" option.
Comment thread
leongdl marked this conversation as resolved.
6. We will use SSM port forwarding to avoid sending RDP protocol traffic directly over the internet.
1. Make sure that "Allow RDP traffic" is unchecked.
2. Make sure the security group does not allow any inbound traffic.
3. Make sure to remove any public IP addresses from the instance.
7. Set the storage to at least 64 GiB. Adjust other settings as you like, e.g. if you want an encrypted volume of type gp3.
8. Select "Launch instance."
9. If it asks, select "Proceed without key pair" and proceed with the launch.
10. Once it launched, navigate to the instance detail page. Select "Connect," and with "Session manager" selected, again select "Connect."
If it says "SSM Agent is not online," you may have to wait a few minutes for it to initialize.
11. Create a secure password for the Administrator account. From the Administrator PowerShell window that session manager,
enter the following command with your secure password substituted to change the password.
1. `net user Administrator MY_SECURE_PASSWORD`
2. Connect to the instance with SSM port forwarding and RDP.
1. Install or update the AWS CLI v2 from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html.
2. Install or update the Session Manager plugin from https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html.
3. Run the following command, using AWS credentials that have suitable permissions, to start the SSM port forwarding. Replace INSTANCE_ID with the one you launched.
1. `aws ssm start-session --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=33389,portNumber=3389" --target INSTANCE_ID`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Local port can also be 3389 to keep things simple and the same.

4. Open RDP, and enter the following connection details:
1. Computer: `localhost:33389`
2. User name: `Administrator`
5. Enter the password you set for Administrator after you created the instance. You should now have a remote desktop session to your instance.
3. Install 3ds Max 2025 on the instance.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or any other instance actually

1. Download the 3ds Max 2025 installer for Windows from Autodesk (for example via Autodesk Access).
2. Run the installer on the EC2 instance and complete installation using the default settings.
3. Optionally install the `deadline-cloud-for-3ds-max` Python package inside 3ds Max if you want the Deadline Cloud integration available on the workstation you use for archiving.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Installing it with 3dsmax and then zipping into a conda is fine, but you will not get the benefit of run time installation that we provide since we release the adapter into our conda channel.

4. From an Administrator PowerShell window, create the archive from the installed files and capture its hash.
1. `Compress-Archive -Path 'C:\Program Files\Autodesk\3ds Max 2025' -DestinationPath Autodesk_3dsMax_2025_Windows_installation.zip`
2. `(Get-FileHash -Path "Autodesk_3dsMax_2025_Windows_installation.zip" -Algorithm SHA256).Hash.ToLower()`
5. Upload the zip to your private S3 bucket. You can use a PowerShell command like
`Write-S3Object -BucketName MY_BUCKET_NAME -Key Autodesk_3dsMax_2025_Windows_installation.zip -File Autodesk_3dsMax_2025_Windows_installation.zip`.
6. Terminate the EC2 instance.
7. Download the zip file to the `conda_recipes/archive_files` directory in your git clone of the
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried rattler build? We are migrating all of our recipes.

https://github.com/prefix-dev/rattler-build

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call. Essentially I re-used a lot of the methodology of the maya-2025 recipe which used conda-build for the Win-build I'll check and test it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Rattler should work on Windows.

[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for
submitting package build jobs, and update the Windows source artifact hash in `meta.yaml`.

The build script installs `pywin32` into 3ds Max's embedded Python to enable automation and sets environment
variables (`ADSK_3DSMAX_*`, plus `3DSMAX_EXECUTABLE` in the Windows activation script) to simplify invoking
`3dsmaxbatch.exe` from Deadline Cloud jobs.

## Required host dependencies
3ds Max 2025 requires .NET 8 runtimes to be present on the host OS. Install them (with admin rights) before running jobs:

- .NET 8 SDK 8.0.416 (includes .NET, ASP.NET Core, and Desktop runtimes): `ods-sandbox/accounts/deadline/smf/fleets/ods-deadlinedemo-win-cpu-smf-3dsmax_dotnet.ps1`

Run that PowerShell script during fleet/bootstrap setup to ensure the required runtimes are available on the worker.

PowerShell snippet (for convenience if the repo isn’t available):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question - this installation does not install adsklicense service. While I know and understand Autodesk cloud rights, I think we have to past a disclaimer here. Its an important part of providing the sample and usage legitimately.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. If you have an example for it other than mentioning it in the recipe/meta.yaml I'd be happy for your input. See

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup - we have a standard messaging regarding cloud rates on our user guide to link to the auto desk documentation:
https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html

And we had our blog here:
https://aws.amazon.com/blogs/media/how-to-use-3ds-max-with-service-managed-fleets-on-aws-deadline-cloud/

Note: Autodesk 3ds Max has its own licensing requirements separate from AWS. Confirm you have the appropriate licenses before proceeding. See additional details on [Autodesk Cloud Rights for 3ds Max](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html).


```powershell
Comment thread
oehmends marked this conversation as resolved.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a host config script, maybe move this section to 3dsmax_conda_host_config.ps1?

Something is odd too, we have done internal Conda tests and I remember we had to add some Windows Registries (auto desk) related for this to work properly. I'm surprised it is not in the sample.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It definitely makes sense to put this into a separate file to make the Readme lighter.

I'd be curious which Registry keys you had to add. If it's anything Version (2025/2026) specific, it would only make sense to set those in the conda environment itself.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have the old prototypes handy, let me search for it. It was some time ago when we encountered challenges with 3dsmax + Conda.

# Install .NET 8 SDK (x64) which includes .NET Runtime, ASP.NET Core Runtime, and .NET Desktop Runtime 8.0.22
$sdkDisplayPrefix = "Microsoft .NET SDK 8.0.416"
$sdkDownloadUri = "https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.416/dotnet-sdk-8.0.416-win-x64.exe"
$sdkInstaller = Join-Path $env:TEMP ([IO.Path]::GetFileName($sdkDownloadUri))

$sdkExisting = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like "$sdkDisplayPrefix*" }

if (-not $sdkExisting) {
Write-Host "Downloading .NET 8 SDK from $sdkDownloadUri ..."
Invoke-WebRequest -Uri $sdkDownloadUri -OutFile $sdkInstaller -UseBasicParsing
Write-Host "Installing .NET 8 SDK silently (includes runtime, ASP.NET Core, and Desktop runtimes)..."
Start-Process -FilePath $sdkInstaller -ArgumentList "/install", "/quiet", "/norestart" -Wait
$sdkInstalled = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like "$sdkDisplayPrefix*" }
if ($sdkInstalled) {
Write-Host ".NET 8 SDK installed: $($sdkInstalled.DisplayName)"
} else {
Write-Host ".NET 8 SDK not detected after install." -ForegroundColor Red
}
Remove-Item $sdkInstaller -Force -ErrorAction SilentlyContinue
} else {
Write-Host ".NET 8 SDK already installed: $($sdkExisting.DisplayName)"
}
```

## Notes on environment variables
- POSIX shells cannot export variable names that start with a digit, so `3DSMAX_EXECUTABLE` cannot be set by the `.sh` activation script. The Windows `.bat` sets it, but bash activation relies on the ADSK-prefixed variables instead.
- The adaptor’s `executable_handler.py` needs to be hotpatched in a Conda environment before the run to fall back to `ADSK_3DSMAX_EXECUTABLE` / `ADSK_3DSMAX_BATCH_EXE` when `3DSMAX_EXECUTABLE` is absent. Keep this in mind if you update or replace the handler.
Comment on lines +92 to +93
Copy link
Copy Markdown
Author

@oehmends oehmends Jan 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see the reported issue here: aws-deadline/deadline-cloud-for-3ds-max#190

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, responded. We can add a second env variable to support conda.

The reason we have 3dsmax HostConfig installation to begin with was so we can get admin access to SMF. We started with a HostConfig script over conda because of the script above. Customers regardless have to open up the SMF instance.

Kudos and thanks for doing this.


## Renderer plug-ins (e.g., Corona)
If you intend to render with Corona or other third-party renderers, ensure their DLLs are present in the 3ds Max plug-in search path (e.g., `Autodesk/3ds Max 2025/Plugins`). The main 3dsmax package does not carry Corona binaries; use the `3dsmax-corona` package to place the real Corona DLLs into the environment. Without that package (or manually copied DLLs), Max will warn about missing plug-ins and the adaptor will fail.
7 changes: 7 additions & 0 deletions conda_recipes/3dsmax-2025/deadline-cloud.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
condaPlatforms:
- platform: win-64
defaultSubmit: true
sourceArchiveFilename:
- Autodesk_3dsMax_2025_Windows_installation.zip
sourceDownloadInstructions: 'Follow the README instructions to create the Windows archive from an installed 3ds Max 2025.'
buildTool: conda-build
2 changes: 2 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bash %RECIPE_DIR%/build_win.sh
if errorlevel 1 exit 1
111 changes: 111 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/build_win.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#!/bin/sh

set -xeuo pipefail

# The version without the update number
MAX_VERSION=${PKG_VERSION%.*}
AUTODESK_ROOT="Autodesk"
INSTALL_DIR="$PREFIX/$AUTODESK_ROOT/3ds Max $MAX_VERSION"

mkdir -p "$PREFIX/$AUTODESK_ROOT"

# Locate the extracted 3ds Max root (zip contents may include an extra top-level folder).
SRC_ROOT="$SRC_DIR/3dsmax"
Comment thread
leongdl marked this conversation as resolved.
if [ ! -f "$SRC_ROOT/3dsmax.exe" ]; then
FOUND_PATH=$(find "$SRC_DIR" -maxdepth 4 -type f -name "3dsmax.exe" | head -n 1 || true)
if [ -n "$FOUND_PATH" ]; then
SRC_ROOT=$(dirname "$FOUND_PATH")
fi
fi

# Copy the extracted files into the install location (robust against read-only flags and file/dir collisions).
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cmd <<EOF
setlocal
rem Use robocopy without ACL/owner copying to avoid access denied; accept codes 0-7 as success.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is interesting, any reason why?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Robocopy defaults to copying ACLs/owner info, which often fails in conda-build/CI because permissions don’t map cleanly. /COPY:DAT /DCOPY:DAT avoids that so the copy is reliable, and robocopy uses exit codes 0–7 for “success with minor differences,” so we treat those as OK

robocopy "$(cygpath -w "$SRC_ROOT")" "$(cygpath -w "$INSTALL_DIR")" /E /COPY:DAT /DCOPY:DAT /R:1 /W:1 /NFL /NDL >nul
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the builder need to install robocopy?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. robocopy ships with Windows (in System32) and is available by default in Windows environments, including conda-build on Windows.

set RC=%ERRORLEVEL%
echo Robocopy exit code: %RC%
if %RC% GEQ 8 exit /b %RC%
exit /b 0
EOF

# The conda-build environment sets pip to offline/no-deps by default; allow installs for 3ds Max Python.
unset PIP_NO_DEPENDENCIES
unset PIP_IGNORE_INSTALLED
unset PIP_NO_INDEX

# Ensure 3ds Max's bundled Python has pip and pywin32 available for automation.
"$INSTALL_DIR\\Python\\python.exe" -m ensurepip
"$INSTALL_DIR\\Python\\python.exe" -m pip install pywin32
"$INSTALL_DIR\\Python\\python.exe" -m pip install deadline-cloud-for-3ds-max --upgrade

mkdir -p "$PREFIX/etc/conda/activate.d"
mkdir -p "$PREFIX/etc/conda/deactivate.d"

# See https://docs.conda.io/projects/conda/en/latest/dev-guide/deep-dives/activation.html
# for details on activation. The Deadline Cloud sample queue environments use bash
# to activate environments on Windows, so always produce both .bat and .sh files.

cat <<EOF > "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.sh"
export ADSK_3DSMAX_VERSION=$MAX_VERSION
export ADSK_3DSMAX_LOCATION="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"
export ADSK_3DSMAX_PYTHON="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/python.exe"
export ADSK_3DSMAX_BATCH_EXE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe"
export ADSK_3DSMAX_EXECUTABLE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be 3dsmax.exe?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I understand, some customers have actual GUI licenses, so they share the GUI licenses with deadline and render with 3dsmax.exe

export ADSK_3DSMAX_ROOT="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"
export ADSK_3DSMAX_PLUGINS_ADDON_DIR="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Plugins"
export ADSK_APPLICATION_PLUGINS="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Plugins"
export PATH="\$(cygpath "\$CONDA_PREFIX/bin"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):\$PATH"
Comment thread
leongdl marked this conversation as resolved.
export PYTHONPATH="\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):\$PYTHONPATH"
EOF
cat "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.sh"

cat <<EOF > "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
set "ADSK_3DSMAX_VERSION=$MAX_VERSION"
set "ADSK_3DSMAX_LOCATION=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION"
set "ADSK_3DSMAX_PYTHON=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\python.exe"
set "ADSK_3DSMAX_BATCH_EXE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe"
set "ADSK_3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3dsmax.exe?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9

set "ADSK_3DSMAX_ROOT=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION"
set "ADSK_3DSMAX_PLUGINS_ADDON_DIR=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Plugins"
set "ADSK_APPLICATION_PLUGINS=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Plugins"
set "3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe"
set "PATH=%CONDA_PREFIX%\\bin;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;%PATH%"
set "PYTHONPATH=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;%PYTHONPATH%"
EOF
cat "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.bat"

cat <<EOF > "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.sh"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):/}"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):/}"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"):/}"
export PYTHONPATH="\${PYTHONPATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):/}"
export PYTHONPATH="\${PYTHONPATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):/}"
unset ADSK_3DSMAX_EXECUTABLE
unset ADSK_3DSMAX_BATCH_EXE
unset ADSK_3DSMAX_PYTHON
unset ADSK_3DSMAX_LOCATION
unset ADSK_3DSMAX_VERSION
unset ADSK_3DSMAX_ROOT
unset ADSK_3DSMAX_PLUGINS_ADDON_DIR
unset ADSK_APPLICATION_PLUGINS
EOF
cat "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.sh"

cat <<EOF > "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
set "PATH=%PATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION;=%"
set "PYTHONPATH=%PYTHONPATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;=%"
set "PYTHONPATH=%PYTHONPATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;=%"
set 3DSMAX_EXECUTABLE=
set ADSK_3DSMAX_BATCH_EXE=
set ADSK_3DSMAX_EXECUTABLE=
set ADSK_3DSMAX_ROOT=
set ADSK_3DSMAX_PLUGINS_ADDON_DIR=
set ADSK_APPLICATION_PLUGINS=
set ADSK_3DSMAX_PYTHON=
set ADSK_3DSMAX_LOCATION=
set ADSK_3DSMAX_VERSION=
EOF
cat "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
29 changes: 29 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{% set name = "3dsmax" %}
{% set display_name = "3ds Max" %}
{% set major_version = "2025" %}
{% set minor_version = "3" %}
{% set version = major_version + "." + minor_version %}

package:
name: {{ name }}
version: {{ version }}

source:
- url: archive_files/Autodesk_3dsMax_{{ major_version }}_Windows_installation.zip # [win64]
Comment thread
leongdl marked this conversation as resolved.
sha256: 0064a976aef6f61b66d42272322dacd77caebb233b41f8a71f3def33b8a1154e # [win64]
folder: 3dsmax

build:
skip: true # [not win64]
number: 0
# These build options for repackaging an application
# https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html
binary_relocation: False
detect_binary_files_with_prefix: False
missing_dso_whitelist:
- "**"

about:
home: https://www.autodesk.com/products/3ds-max/overview
license: LicenseRef-AutodeskEULA
summary: 3ds Max is professional 3D modeling, animation, and rendering software from Autodesk.
23 changes: 23 additions & 0 deletions conda_recipes/3dsmax-corona/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 3dsmax-corona conda package

This package repackages the Corona Renderer plug-in for Autodesk 3ds Max into a conda-installable bundle. It should be installed alongside the matching `3dsmax` conda package.

## Contents
- Corona Renderer payload for 3ds Max (version 13.1) sourced from `archive_files/3dsmax-corona/win-64`.
- Windows-only build that copies the plug-in files into the 3ds Max installation inside the conda prefix.

## Usage
1. Ensure the `3dsmax` conda package for the matching major version is installed.
2. Install this package via your conda channel (e.g., `conda install 3dsmax-corona`).
3. Activate the environment; the plug-in will live under the 3ds Max plug-ins directory.

## Building the archive payload
If you need to refresh the archive payload:
1. Run the Corona installer `.exe` for 3ds Max on a Windows OS.
2. After install, copy the Corona files from `C:\Program Files\Chaos\Corona\Corona Renderer for 3ds Max\2025` (or matching year) into `archive_files/3dsmax-corona/win-64/` in this repo.
3. Build the conda package (`conda build conda_recipes/3dsmax-corona/recipe`).

## Notes
- Platform: `win-64` only.
- License: Chaos EULA (see vendor site).
- Documentation: https://docs.chaos.com/display/CRMAX
5 changes: 5 additions & 0 deletions conda_recipes/3dsmax-corona/deadline-cloud.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
condaPlatforms:
- platform: win-64
defaultSubmit: true
sourceArchiveDirectory: 3dsmax-corona-2025-13-2/win-64/
buildTool: conda-build
38 changes: 38 additions & 0 deletions conda_recipes/3dsmax-corona/recipe/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
@echo off
setlocal enableextensions enabledelayedexpansion

set "MAX_VERSION=2025"

rem Install Corona to the expected Chaos path under the conda prefix.
set "TARGET=%PREFIX%\Program Files\Chaos\Corona\Corona Renderer for 3ds Max\%MAX_VERSION%"
if not exist "%TARGET%" mkdir "%TARGET%"

rem /E recursive, /I assume destination is a directory, /H copy hidden, /Y overwrite
xcopy "%SRC_DIR%" "%TARGET%" /E /I /H /Y >nul
if errorlevel 1 exit /b 1

rem Add activation hooks to expose the Corona load path
set "ACTIVATE_DIR=%PREFIX%\etc\conda\activate.d"
set "DEACTIVATE_DIR=%PREFIX%\etc\conda\deactivate.d"
if not exist "%ACTIVATE_DIR%" mkdir "%ACTIVATE_DIR%"
if not exist "%DEACTIVATE_DIR%" mkdir "%DEACTIVATE_DIR%"

set "ACTIVATE_SH=%ACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.sh"
set "DEACTIVATE_SH=%DEACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.sh"
set "ACTIVATE_BAT=%ACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.bat"
set "DEACTIVATE_BAT=%DEACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.bat"

(
echo #!/bin/sh
echo export CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH=\"$(cygpath "%TARGET%")\"
) > "%ACTIVATE_SH%"

(
echo #!/bin/sh
echo unset CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH
) > "%DEACTIVATE_SH%"

echo set "CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH=%TARGET%" > "%ACTIVATE_BAT%"
echo set CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH= > "%DEACTIVATE_BAT%"

exit /b 0
32 changes: 32 additions & 0 deletions conda_recipes/3dsmax-corona/recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{% set name = "3dsmax-corona-2025" %}
{% set version = "13.2" %}

package:
name: {{ name }}
version: {{ version }}

source:
# Plugin payload extracted under archive_files/3dsmax-corona/win-64
- path: ../../archive_files/3dsmax-corona-2025-13-2/win-64 # [win64]

build:
skip: true # [not win64]
number: 0
binary_relocation: false
detect_binary_files_with_prefix: false
missing_dso_whitelist:
- "**"

requirements:
run:
- 3dsmax >=2025,<2026

about:
home: https://www.chaos.com/corona
documentation: https://docs.chaos.com/display/CRMAX
license: LicenseRef-ChaosEULA
summary: Corona Renderer plug-in for Autodesk 3ds Max
description: |
Packages the Corona Renderer for 3ds Max (13.1) into the conda environment.
The plug-in payload is copied into the 3ds Max plugins folder; the package
should be installed alongside the matching 3dsmax conda package.