Python随机选择Maya场景元素

  之前在公司参与的一个与国外合作的项目中,需要动态的随机选取场景中的一些物体,当时是用Houdini的节点+Hscript 解决的;

  今天用简洁优雅的Python在Maya中写了一个类似的效果,代码如下:

import maya.cmds as mc
import random

def selTest():
    mc.select(allDagObjects=1)
    sel = mc.ls(sl=True)
    selSize = len(sel)
    #print sel
    rand = random.sample(sel, 17)
    mc.select(rand, r=1)

selTest()  

  运行效果:

  这段代码需要使用Python的随机模块,但Maya的commandsPython帮助中没有这个模块,幸运的是我们依然可以直接从Python库中调用;

import random

  ramdom模块的函数很多,这里用sample()采样即可;

  改天再给这段代码加上赋予随机材质的效果。

  

时间: 2024-10-11 16:10:35

Python随机选择Maya场景元素的相关文章

从数组中随机选择3个元素

用到的方法:splice()//删除数组中的某一元素 var Arr=["aaa","bbb","ccc","ddd","eee","fff"]var arrNew=[]; for(var i=0;i<3;i++){      var _num = Math.floor(Math.random()*Arr.length)      var mm = Arr[_num];     

python random 从集合中随机选择元素

使用python random模块的choice方法随机选择某个元素 from random import choice foo = ['a', 'b', 'c', 'd', 'e'] print (choice(foo)) 使用python random模块的sample函数从列表中随机选择一组元素 list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回 pri

php array_rand()函数从数组中随机选择一个或多个元素

php使用array_rand()函数从数组中随机选择一个或多个元素的方法. 使用array_rand() 函数从数组中随机选出一个或多个元素,并返回. array_rand(array,number) 参数 描述 array 必需.规定输入的数组参数. www.jbxue.com number 可选.默认是 1.规定返回多少个随机的元素. 例子: <?php $a=array("a"=>"Dog","b"=>"Cat

python random 随机选择操作

# -*- coding:utf-8 -*- import random arr = ['A','B','C','D','E','F'] #生成(0.0, 1.0)的随机数 print random.random() #0.133648715391 # 生成随机浮点数 0<N<100 print random.uniform(0,100) #10.535881824 #生成随机整数 0<N<100 print random.randint(0,100) #随机生成一个0-100内3

在python中实现随机选择

想从一个序列中随机抽取若干元素,或者想生成几个随机数. random 模块有大量的函数用来产生随机数和随机选择元素.比如,要想从一个序列中随机的抽取一个元素,可以使用random.choice() : >>> import random >>> values = [1, 2, 3, 4, 5, 6] >>> random.choice(values) 2 >>> random.choice(values) 3 >>>

Python 随机生成数字,字符串,用户自动化生成数据

需要提前了解两个模块,string,random 1.关于string模块 import string print(string.punctuation) #输出为:!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ print(string.digits) #输出为:0123456789 print(string.ascii_letters) #输出为:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM

算法系列笔记2(静态表顺序统计-随机选择算法)

问题:当给定存在静态表(如数组)中的n个元素,如何快速找到其中位数.最小值.最大值.第i小的数? 首先想到的方法是先对数组元素进行排序,然后找到第i小的元素.这样是可行的,但比较排序最快也需要O(nlgn),能否在线性时间内解决呢.这就是随机的分治法-随机选择. 思想:利用随机划分(在快速排序中介绍过)找到主元r,这样就将小于等于r的元素放在了其左边,大于r的元素放在了其右边.这是可以计算出r的rank为k,如果正好等于i,则就返回该元素:如果k大于i,则在左边中寻找第i小的元素,否则在右边中寻

Randomize select algorithm 随机选择算法

从一个序列里面选择第k大的数在没有学习算法导论之前我想最通用的想法是给这个数组排序,然后按照排序结果返回第k大的数值.如果使用排序方法来做的话时间复杂度肯定至少为O(nlgn). 问题是从序列中选择第k大的数完全没有必要来排序,可以采用分治法的思想解决这个问题.Randomize select 算法的期望时间复杂度可以达到O(n),这正是这个算法的迷人之处.具体的算法分析可以在<算法导论>这本书里查看. 贴出伪代码: RANDOMIZED-SELECT(A, p, r, i) 1 if p =

Python代码修复Maya RenderView窗口not found问题

Error:setParent: Object 'renderView' not found 这是一个在工作中很常见的问题,有10%的概率会碰到,多发生在打开其他组交接来的场景文件的时候,当你不管是从File菜单Open,还是直接拖进Maya.亦或是直接双击打开都无法解决时.使用下面这段代码即可: 这原本是一段Mel,我用Python把她重写了一下,变成了Python代码~ import maya.cmds as mc exists = 0 getPan = mc.getPanel(script