Thursday, 26 May 2016

Huh... I forgot this thing still existed.



So, we've finally released Total War: Warhammer.

What a project! Huge amount of work and fun!
Very proud to have worked on this game, and to work with so many talented developers.


Perhaps I'll give this blog another go.

Thursday, 18 April 2013

a nice alternative to a quick Rigid Bodies sim: Dynamica Plugin

If you're after a quick little rigidbody sim, I'd suggest giving this a try. Simple, quick, fairly consistent and reliable (so far!).
Just make sure you keep organised and clean the scene up straight after baking, crashes do happen...

Details:
http://bulletphysics.org/mediawiki-1.5.8/index.php/Maya_Dynamica_Plugin

Downloads:
https://code.google.com/p/dynamica/downloads/list

Siggraph 2011 vid:
http://mbakr.squarespace.com/blog/siggraph-2011-destruction-dynamics-for-film-and-game-product.html



Thursday, 28 February 2013

quick update



Been mega busy last 6 months, alot of changes, not much time to work on personal stuff, but had a great learning curve so plenty to look into once things slow down.

Sunday, 26 August 2012

[Maya][Python] Querying soft selection

Handy little script modified from here to query and select the soft selection influenced components.

import maya.cmds as mc
import maya.OpenMaya as om

def softSelection():
    selection = OpenMaya.MSelectionList()
    softSelection = OpenMaya.MRichSelection()
    OpenMaya.MGlobal.getRichSelection(softSelection)
    softSelection.getSelection(selection)
    
    dagPath = OpenMaya.MDagPath()
    component = OpenMaya.MObject()
    
    iter = OpenMaya.MItSelectionList( selection,OpenMaya.MFn.kMeshVertComponent )
    elements = []
    while not iter.isDone(): 
        iter.getDagPath( dagPath, component )
        dagPath.pop()
        node = dagPath.fullPathName()
        fnComp = OpenMaya.MFnSingleIndexedComponent(component)   
                
        for i in range(fnComp.elementCount()):
            elements.append('%s.vtx[%i]' % (node, fnComp.element(i)))
        iter.next()
    return elements
    

mc.select(softSelection())
mc.softSelect(softSelectEnabled=False)

This one instead returns the influenced objects. Great for quickly querying the objects within a specific distance of another object.

import maya.cmds as mc
import maya.OpenMaya as om

def softSelection():
    selection = om.MSelectionList()
    softSelection = om.MRichSelection()
    om.MGlobal.getRichSelection(softSelection)
    softSelection.getSelection(selection)
    dagPath = om.MDagPath()
    
    iter = om.MItSelectionList(selection)
    elements = []
    while not iter.isDone(): 
        iter.getDagPath(dagPath)
        dagPath.pop()
        elements.append('%s'%dagPath.fullPathName())
        iter.next()
    return elements

def getObjectsInRadius(radius=20.0):
    mc.softSelect(softSelectEnabled=True,softSelectDistance=radius,softSelectFalloff=2)
    return softSelection()

print getObjectsInRadius(mc.ls(sl=True)[0])[1:]

Monday, 2 July 2012

ROME II announced


What I'm currently working on here at CA.

Thursday, 31 May 2012

Update



Thought i'd update, considering it has been a month or two.
Been pretty busy lately with the moving, new job and 5-hour commute (temporary), so I haven't had much time to work on any of my own stuff, or do... well... anything.
Once settled i'll probably get back on it.

Friday, 13 April 2012

Script: ld_selectMe (v2)

Re-wrote my free selection-set creation script, 'ld_selectMe' in python.
Updates include a more dynamic UI, faster set creation and overall, a much better write of the actual selection script, allowing the same functionality but only much, much faster than its mel counterpart.

You can download the re-write for free here (mediafire.com)
or creativecrash here.

Any comments/suggestions welcome.