-
Notifications
You must be signed in to change notification settings - Fork 53
feat/conda recipe for 3ds Max and Chaos Corona #173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: mainline
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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. | ||||
| 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` | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Have you tried rattler build? We are migrating all of our recipes.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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): | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: And we had our blog here: |
||||
|
|
||||
| ```powershell | ||||
|
oehmends marked this conversation as resolved.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||
| 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 |
| 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 |
| 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" | ||
|
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. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This comment is interesting, any reason why?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does the builder need to install robocopy?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should this be 3dsmax.exe?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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" | ||
|
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" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3dsmax.exe?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. |
||
| 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" | ||
| 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] | ||
|
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. | ||
| 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 |
| 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 |
| 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 |
| 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. |
Uh oh!
There was an error while loading. Please reload this page.