Get skincluster data with maya’s python API

The code below demonstrates, via maya’s python api, how to retrieve:
– mObject from a mesh, and its skincluster
– MFnSkinCluster for the skincluster on that mesh
– the influences in that skin cluster and their names
– the influence weights for every vert in that mesh
Enjoy!

# Imports first!
# Don‘t mind the short names, I have a habit of using mc, om, oma for maya‘s modules
import maya.OpenMaya as om
import maya.OpenMayaAnim as oma

Next, we’ll get the MObject & MDagPath for our mesh’s shapenode

# The shape node for some mesh
mesh = ‘pSphereShape1‘
mSel = om.MSelectionList()
mSel.add(mesh)
meshMObject = om.MObject()
meshDagPath  = om.MDagPath()
mSel.getDependNode(0, meshMObject)
mSel.getDagPath(0, meshDagPath)

Next, an MDagPathArray of the influences and the influence count.
Also, the node names for those influences, for convenience.

# Influences & Influence count
influences= om.MDagPathArray()
infCount = skinFn.influenceObjects(influences)
# Get node names for influences
influenceNames = [influences[i].partialPathName() for i in range(infCount)]

Finally, get all of the weight data, organized as a dictionary of dictionaries.
The first level will use vert indices for keys, the next will be a dict of influence name : weight.

weightData = {} # Ordered by vertIter 0-numVerts
vertIter = om.MItGeometry(meshMObject)
while not vertIter.isDone():
    vertInfCount = om.MScriptUtil()
    vertInfCountPtr = vertInfCount.asUintPtr()
    om.MScriptUtil.setUint(vertInfCountPtr, 0)
    weights = om.MDoubleArray()
    skinFn.getWeights(meshDagPath,
                      vertIter.currentItem(),
                      weights,
                      vertInfCountPtr)
    # Create a dictionary for each vert index in the mesh
    # All influences will be returned for each vert, but may have 0 influence
    weightData[vertIter.index()] = dict(zip(influenceNames, weights))
    vertIter.next()
时间: 2024-10-15 06:00:22

Get skincluster data with maya’s python API的相关文章

自动化运维工具Ansible之Python API

Ansible 的Python API使用起来相当简单快捷,使用API可以将某些运维操作封装成一个带有WEB界面的操作,免去了每次执行某个操作的时候都需要SSH运行Ansible命令. 官方给出的一个简单示例: import ansible.runner          runner = ansible.runner.Runner(        module_name='ping',        module_args='',        pattern='web*',        f

Appium===Appium+Python API(转)

Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts 2. current_context cu

Zabbix Python API 应用实战

做监控的同学应该知道,公司IDC机房经常有上架.下架.报修和报废的服务器.如果服务器数量很多的时候很容易造成监控遗漏.    大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机器的时候CMDB里面会记录相关的信息,Zabbix根据CMDB里面信息自动Link相关的模块,添加|删除监控.很多小的公司没有资产管理系统,但作为监控的负责人应该每天知道上架了哪些新的机器,确保能添加到Zabbix监控里面.    首先给大家说一下脚本思路:1)通过Nmap工具

Appium+python自动化8-Appium Python API

前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts 2. current_context current_context(self): Returns the cur

Appium Python API

Appium Python API (by appium 1.4.13.1) - .contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts - . current_context current_context(self): Returns the current c

《Spark Python API 官方文档中文版》 之 pyspark.sql (一)

摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需,所以利用闲暇之余将官方文档翻译为中文版,并亲测Demo的代码.在此记录一下,希望对那些对Spark感兴趣和从事大数据开发的人员提供有价值的中文资料,对PySpark开发人员的工作和学习有所帮助. 官网地址:http://spark.apache.org/docs/1.6.2/api/python/p

Appium+python自动化-Appium Python API

前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts 2. current_context current_context(self): Returns the cur

初识Django —Python API接口编程入门

初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数

k8s python api二次封装 例子

k8s python api二次封装 pip install pprint kubernetes import urllib3 from pprint import pprint from kubernetes import client from os import path import yaml class K8sApi(object): def __init__(self): # self.config = config.kube_config.load_kube_config() ur