3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

create annotation along root hierarchy.

ふと考えたんです。
3Dでモデルの仕様書を作るときにどうやるのが楽ちんかなーって。
私の場合はリグに関するのを作るのが多いかも…ということでこんなのを作ってみました。

f:id:blendcomp:20131031234727j:plain

rootノードを選んで実行するとrootからAnnotationを作っていきます。
要するにrootの子供を見て、その子供の子供を見て…
といった木構造…再帰的な作りにしています。

理由としては、階層を色で表したかったんです。
階層を色で表現することで左右対称のチェックも同時にできます。

Annotationはジョイント名で作られて、
AnnotationGrpの中に入れられます。

是非、試してみてください。

import pymel.core as pm

colorValue = 5
rootNodes = pm.selected(type='joint')
annotationGrp = pm.createNode('transform',n='annotationGrp')
def createAnnoRoot(rootNodes,colorValue = colorValue -1):
	colorValue += 1
	for node in rootNodes:
		getNodeName = str(node)
		getNodePosition = list(node.getTranslation(space='world'))
		createAnnotation = (pm.createNode('annotationShape')).getParent()
		createAnnotation.rename('%sAnnotation' % node)
		createAnnotation.setTranslation(getNodePosition,space='world')
		createAnnotation.text.set(getNodeName)
		createAnnotation.displayArrow.set(False)
		createAnnotation.setParent(annotationGrp)
		createAnnotation.overrideEnabled.set(True)
		createAnnotation.overrideColor.set(colorValue)
		rootNodes = node.getChildren(type='joint')
		if rootNodes is not None: createAnnoRoot(rootNodes,colorValue)
createAnnoRoot(rootNodes,colorValue)