ArchSun is a Python-based Autodesk Maya tool that creates and updates an Arnold daylight setup from real-world location, date, time, and scene north settings.
This project was built as a CG TD trainee portfolio piece. The goal was to make a small but complete Maya tool that combines:
- Qt UI inside Maya
- scene creation and scene updates through
maya.cmds - a NOAA-style solar-position calculation
- release packaging for non-technical users
- Creates an Arnold daylight setup in the Maya scene
- Uses latitude, longitude, date, time, and north offset to drive sun direction
- Provides a dockable Maya UI
- Lets the user choose a preset city or pick a point from a world map
- Supports manual scene-side intensity adjustment
- Builds an installable release bundle with install and uninstall scripts
ArchSun currently creates and manages these Maya nodes:
- Group:
ARCHSUN_DAYLIGHT_GRP - Skydome transform:
ARCHSUN_SKYDOME_LGT - Physical sky texture:
ARCHSUN_PHYSICALSKY_TEX
- Python
- Autodesk Maya
- Arnold (
mtoa) - PySide2 / PySide6 compatibility layer
- archsun/core: solar math, data models, location helpers
- archsun/maya: Maya runtime access, daylight setup creation, installer support
- archsun/ui: dockable Qt UI, sections, resources, status messaging
- tests: unit, integration, and manual smoke coverage
- tools: release build script
- Launch ArchSun inside Maya.
- Choose a city or pick a location from the map.
- Set the date and time.
- Adjust north offset and intensity if needed.
- Click
Update Lighting. - ArchSun creates or updates the Arnold daylight setup in the scene.
ArchSun is meant to run inside Autodesk Maya.
If the package is available on Maya's Python path, you can launch it with:
from archsun.launcher import show_archsun
show_archsun()Build the release bundle from the repo root:
python -m tools.build_releaseThis creates:
dist/ArchSun-0.3.5dist/ArchSun-0.3.5.zip
The bundle includes:
archsun_install_drop.pyarchsun_uninstall_drop.py- a packaged
archsunfolder - a simple install readme for Maya users
The project includes:
- unit tests for solar logic, status text, launcher behavior, and release packaging
- Maya-facing integration tests built around a fake
maya.cmdslayer - a manual UI smoke checklist
Typical command:
python -m pytest -qInstall development dependencies with:
python -m pip install -r requirements-dev.txt- Clear separation between core logic, Maya integration, and UI
- Real scene-side behavior instead of a UI-only demo
- Release packaging and shelf-install support
- Naming cleanup for scene nodes
- A test suite that covers multiple layers of the tool
- Timezone handling is manual and not daylight-savings aware.
- The tool is currently Arnold-specific.
- UI smoke testing inside Maya is still partly manual.
