dbr
________ and Technical Ramblings
Wednesday, July 10, 2013
Sherlock Holmes
First bit of progress on Sherlock Holmes as played by Jeremy Brett. I haven't done a head model straight from Maya in a long time, so, that's what I've decided to do. This first initial stage I'm doing without reference planes in Maya. I'm trying to force myself to really analyze Brett's features and not go into auto-pilot. I'm far from satisfied, but it's a start! Eventually I'll take this into zbrush and line everything up better to some reference before doing skin pores and wrinkles.
Sunday, June 30, 2013
Friday, June 21, 2013
Friday, May 3, 2013
maya.cmds help snippet
For a long time I'd leave a mel tab up in the Maya script editor simply to use the help command to print maya help. The help command is also in the maya.cmds module but the syntax is a bit annoying to use.
mel vs. python
help ls cmds.help('ls')
I finally got sick enough of doing this to create a little helper function to place in my userSetup.py
#Convenience function for maya.cmds.help
def docs(fn):
print cmds.help(fn.__name__)
So now I can just go...
docs(cmds.ls)
Woooohoooooo
mel vs. python
help ls cmds.help('ls')
I finally got sick enough of doing this to create a little helper function to place in my userSetup.py
#Convenience function for maya.cmds.help
def docs(fn):
print cmds.help(fn.__name__)
So now I can just go...
docs(cmds.ls)
Woooohoooooo
Monday, April 29, 2013
mayabatch
Easily batch process Maya files with any number of modules. mayabatch.actions subpackage comes with a template module.
Get it from github: https://github.com/danbradham/mayabatch
Features:
Command line
python batch.py --help
Multiple Worker Processes through multibatch module
Cross-platform support (Haven't tested on Mac or Linux yet but it *should* work.)
Tested on systems with Maya 2012 and 2013
Extensible through actions modules
Command Line Single Process Example:
python batch.py --queue file01.ma file02.ma file03.ma file03.ma --modules mayabatch.actions.actionA mayabatch.actions.actionB
Python Multiprocessing Example:
import os
import mayabatch.multibatch as mb
if __name__ == '__main__':
path = 'C:/Users/Administrator/Documents/maya/projects/default/'
filepaths = []
for root, subdirs, files in os.walk(path):
for f in files:
if os.path.splitext(f)[-1] in ['.ma', '.mb']:
filepaths.append(os.path.join(root, f))
modules = ['mayabatch.actions.actionA', 'mayabatch.actions.actionB']
processes = 4
mb.main(filepaths, processes, modules)
A simple benchmark produced the following results:
50 maya files
4 processes: 10.433 seconds
1 process: 8.145 seconds
350 maya files
4 processes: 15.353 seconds
1 processes: 26.932 seconds
As you can see it's a balancing act between the amount of processes and files. These tests were run on a system where maya's usersetup script is far from ideal for batch processing.
Notes
At the moment filepaths for each individual file are placed in the command line. Depending on the complexity of the paths the maximum length of args in a windows command prompt can be reached quickly. Pickling will be introduced into the mix to work around the command line args limit.
Get it from github: https://github.com/danbradham/mayabatch
Thursday, April 4, 2013
Thursday, February 21, 2013
clearFlats or SUPER DELETE STATIC CHANNELS
This script will look at the animation curves of all selected objects in your scene, and delete unnecessary keys. If the value of the previous and next key is the same as the current key, it will mark that key for deletion. The result of is that it acts like Delete by Type > Static Channels, while also removing unnecessary keys on all your curves. Let me know if you find any bugs!
import maya.cmds as cmds def clearFlats(): ''' Clear keys that lie on flat sections of animation curves. If no channels are selected, clear flats on all keyed channels. ''' nodes = cmds.ls(sl = True) cmds.undoInfo(openChunk = True) #Capture all changes in a single undo for node in nodes: #Make Sure we have channels to work on channels = cmds.channelBox('mainChannelBox', query = True, selectedMainAttributes = True) if not channels: keyable_attrs = cmds.listAttr(node, keyable = True) user_attrs = cmds.listAttr(node, userDefined = True) if user_attrs: keyable_attrs.extend(user_attrs) channels = [attr for attr in keyable_attrs if cmds.keyframe('{0}.{1}'.format(node, attr), query = True, keyframeCount = True)] try: for channel in channels: keyValues = cmds.keyframe('{0}.{1}'.format(node, channel), q = True, valueChange = True) del_index = [] if len(keyValues) == 1: del_index.append((0,)) else: for i, keyValue in enumerate(keyValues): if i == 0: if keyValue == keyValues[i + 1]: del_index.append((i,)) elif i == len(keyValues) - 1: if keyValue == keyValues[i - 1]: del_index.append((i,)) else: if keyValues[i-1] == keyValues[i+1] == keyValue: del_index.append((i,)) if del_index: cmds.cutKey(node, attribute = channel, index = del_index) except TypeError: pass cmds.undoInfo(closeChunk = True) #Close our undo chunk if __name__ == '__main__': clearFlats()
Friday, February 1, 2013
Tuesday, January 29, 2013
Fiber Test
Messing around with fiber mesh on this speed sculpt from this past weekend. The groom tools in ZBrush are sooo nice. I hadn't realized you could use standard brushes with hair until a half hour in, overall ZBrush may just be the most powerful hair grooming tool I've used.
It seems the Groom Long brush is the most versatile, it allows you to only modify hair past the point that you click on a hair. So if you click the middle of a hair, you can groom just the back half. Super useful because it allows you to maintain previously groomed sections of hairs. To get a really specific hairstyle I'll probably still be manually drawing curves in maya...we'll see!
It seems the Groom Long brush is the most versatile, it allows you to only modify hair past the point that you click on a hair. So if you click the middle of a hair, you can groom just the back half. Super useful because it allows you to maintain previously groomed sections of hairs. To get a really specific hairstyle I'll probably still be manually drawing curves in maya...we'll see!
Subscribe to:
Posts (Atom)