Skip to main content

CPMel

一个现代的maya python库

ta有以下设计目标

  1. 相对较快地初始化速度
  2. 易于与maya-api1、maya-api2交互
  3. 易于扩展
  4. 够用的性能

目录

快速开始

安装

注意下方的python是你的Python, 正常情况下可以直接通过python调用, 而Maya的python一般是"C:\Program Files\Autodesk\<Maya版本>\bin\mayapy.exe"

python -m pip install cpmel

在windows下maya的安装例子

注意:

  1. 请将Maya路径替换为自己的。
  2. 请使用cmd
"C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -m pip install cpmel

测试

执行以下程序应当可以获得选择列表,如果正确那么恭喜你安装完成!

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

sel = cc.ls(sl=True)

使用教程

命令调用

获得选择列表

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

sel = cc.ls(sl=True)

创建关节

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

cc.select(cl=True)
jin = cc.joint()

创建UI

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

window_name = 'your_window_name'
if cc.window(window_name, ex=True):
    cc.deleteUI(window_name)
cc.window(window_name)
with cc.flowLayout():
    cc.button()
    cc.button()
    cc.button()
cc.showWindow()

与api交互

获得节点的函数集对象

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node = cc.createNode('transform')
# api1版本的函数集对象
node.api1_m_fn()
# api2版本的函数集对象
node.api2_m_fn()

获得属性的MPlug对象

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node = cc.createNode('transform')
attr = node.tx
# api1版本的
attr.api1_m_plug()
# api2版本的
attr.api2_m_plug()

一些其他的

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node = cc.createNode('transform')

# api1版本
node.api1_m_fn_dependency_node()
node.api1_node_object()
node.api1_m_dag_path()
# api2版本
node.api2_m_fn_dependency_node()
node.api2_node_object()
node.api2_m_dag_path()

常用的对象方法

名称相关操作

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node = cc.createNode('transform')
# 获得最短名称
node.name()
# 仅获得节点名称
node.node_name()
# 获得完整路径
node.full_path_name()

dag相关操作

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node_a = cc.createNode('transform')
node_b = cc.createNode('transform')
node_c = cc.createNode('transform')

# 设置父对象
node_a.parent = node_b
# or node_a.set_parent(node_b)
# 获得父对象
print('获得父对象', node_a.parent)
# or node_a.get_parent()
# 添加子对象
node_c.add_child(node_b)
# 获得子对象
print('获得子对象', node_c.childs)
# or node_c.get_childs()

附加特性

属性相关操作

# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc

node = cc.createNode('transform')
# 获得属性
# 方法1
tx_attr = node.tx
# 方法2 ps: 在节点属性名称与对象属性冲突时可以使用这个
tx_attr = node.attr('tx')

# 读写属性
# 方法1
# 写
node['tx'] = 1.0
# 读
tx_val = node['tx']
# 方法2
# 写
node.tx.set_value(1.0)
# 读
tx_val = node.tx.get_value()

# 连接属性
# 方法1
node.tx >> node.ty
# 方法2
node.tx.connect(node.ty)
# 断开属性连接
node.tx.disconnect(node.ty)

版权说明

该项目签署了Apache-2.0 授权许可,详情请参阅 LICENSE

Release files for cpmel 3.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpmel 3.7.0
File Size Uploaded
cpmel-3.7.0.tar.gz 86.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cpmel 3.7.0
File Interpreter ABI Platform
cpmel-3.7.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 176.0 kB

Release files / cpmel-3.7.0.tar.gz

Download URL cpmel-3.7.0.tar.gz
Size 86.4 kB
Tags Source
SHA-256 checksum
How to use checksums
55af03c06a112dfac0484d966f837da401d6b621f0635cf36f46058708bb9893
BLAKE2b-256 checksum
How to use checksums
6b3cf8c8534293ad37074bffbcf5d1c5413e6fbb16cd9765f33222a5c64bc49c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / cpmel-3.7.0-py2.py3-none-any.whl

Download URL cpmel-3.7.0-py2.py3-none-any.whl
Size 89.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
350c6362da9c1d08f2d31991583f2e20095a2dc134eba6d3ff76af57362f15bf
BLAKE2b-256 checksum
How to use checksums
7840d1fdc722cec915dfcac56f5d97f10449a2f0356c8e3ec925a1c4c85d38ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page