The universal scripting wrapper for Maya, Houdini and Unreal Engine.
OTHER License
Windows | CentOS/macOS | packages | |
---|---|---|---|
status |
The universal scripting environment with Python which Maya, Houdini and Unreal Engine.
DCC tool scripting is almost used Python, but these api isn't similarly anything. If you make lightweight tool, need to remember each application manners. Yurlungur is common interface which adapted each application for universal wrapper.
Yurlungur is inspired by PyMEL.
Yurlungur is pure Python and can be used synchronously in mixed Python2 and Python3 environments with RPC.
Node | Attribute | Sync | |
---|---|---|---|
Maya (2016~) | |||
Substance 3D Designer (2018.1.2~) | |||
Houdini (16~) | |||
Unreal (4.22~) | |||
Blender (2.80~) | |||
Nuke (10~) | |||
DaVinci Resolve(&Fusion) (15~) | |||
Cinema 4D (R21~) | |||
3dsMax (2017~) | |||
Substance 3D Painter (2020~) | |||
Marmoset Toolbag (3~) |
We also support Photoshop, Modo, Renderdoc(and RV).
Some DCC applications that support Python, such as Substance3DPainter, MarmosetToolbag, and RenderDoc There are also applications that specialize in specific functions and require less scene graph manipulation.
A mechanism for pseudo-operation of the linked application from the host application can be created by using a This is achieved by combining standard formats such as FBX and USD, RPC, shared maps and clipboards.
The SDK can be used for vendor or proprietary applications, or for applications that are restricted by open source licenses and cannot embed the SDK in the application. Users do not need to be constrained by vendor, proprietary application, or open source license restrictions that prevent the SDK from being built into the application.
$ pip install yurlungur
If you use UE4 Editor or Standalone for full supports, Yurlungur recommend Qt for Python
module.
$ pip install PySide2
# Blender Python
import bpy
bpy.data.objects["foo"].bar = True
// Maya MEL
setAttr "foo.bar" true;
// Unity C#
using UnityEngine;
UnityEngine.GameObject.Find("foo").bar = true;
YNode behaves as a base class for the object.
# yurlungur
import yurlungur as yr
yr.Node("foo").bar.set(True)
Sample scripts can be found here.
lets see CONTRIBUTING.
Yurlungur is MIT License.