`
schi
  • 浏览: 200978 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

算法(algorithm) 101

阅读更多
在Maya中实现深度/广度优先搜索算法
Depth-First-Search And Breadth-First-Search in Maya

深度优先搜索算法Depth-First-Search
广度优先搜索算法Breadth-First-Search

# -*- coding: utf-8 -*-
 
from maya import cmds
 
def search(rootNode, mod=0):
    """
    search dag nodes with Breadth-First-Search or Depth-First-Search.
        mod 0 Breadth-First-Search
            1 Depth-First-Search
    """
    def BFS(node):
        nodes = []
        childNodes = cmds.listRelatives(node, c=1, type="transform")
        if childNodes:
            nodes += childNodes + BFS(childNodes)
        return nodes
 
    def DFS(node):
        nodes = []
        childNodes = cmds.listRelatives(node, c=1, type="transform")
        if childNodes:
            for n in childNodes:
                nodes.append(n)
                nodes += DFS(n)
        return nodes
 
    if mod == 0:
        nodes = [rootNode] + BFS(rootNode)
        for n in nodes:
            # do something
            print n
    elif mod == 1:
        nodes = [rootNode] + DFS(rootNode)
        for n in nodes:
            # do something
            print n
    else:
        raise Exception("unknow search mode...")
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics