AtomSplitter has been updated to v1.6, available through cmivfx.com

AtomSplitter 1.6 – cmiVFX.com

Updates:

  • Exports Terragen .tgd scene file format

See the original post.

COMMAND LINE HELP

OSX:
AtomSplitter.app/Contents/MacOS/AtomSplitter <chan file> [out file]

Linux:
AtomSplitter <chan file> [out file]

Windows:
AtomSplitter.exe <chan file> [out file]

=========================================

HELP:
>>> AtomSplitter -h

Usage: AtomSplitter <chan file> [out file]

Options:
-h, --help
        show this help message and exit
-o OBJ, --obj=OBJ
        Optional nuke-exported pointCloud .obj file
-f FPS, --fps=FPS
        Set FPS rate (default 24)
-x WIDTH, --width=WIDTH
        Set frame width (default 2048)
-y HEIGHT, --height=HEIGHT
        Set frame height (default 1556)
--filmwidth=FILMWIDTH
        Set film aperature width in mm (default 24.576)
--filmheight=FILMHEIGHT
        Set film aperature height in mm (default 18.672)
-s SCALE, --scale=SCALE
        Scale the translation values by this amount
-F FORMAT, --format=FORMAT
        Output format (fbx, action, terragen)

chan2fbx

AtomSplitter has been updated to v1.5, available through cmivfx.com

AtomSplitter 1.5 – cmiVFX.com

Updates:

  • Added the ability to convert point cloud data, exported from Nuke as a .obj, to be included in the fbx/action export.

See the original post.

chan2fbx

AtomSplitter (chanToFbx) has been updated to v1.2, available through cmivfx.com

AtomSplitter 1.2 – cmiVFX.com

Updates:

  • Camera rotation order set to ZXY, which is the Nuke camera default
  • Fixed a bug where the FocalLength value was not being keyframed properly
  • Added a scene scale field, for adjusting the translation values globally.

If you haven’t visited cmiVFX.com before, PLEASE check them out. Chris Maynard does an amazing job rounding up top talent in the industry to create these outstanding visual fx tutorials. The information is always cutting edge.

See the original post.

taskMonster2

I get to do a lot of interesting applications at SouthPark. This one in particular was the most challenging use of PyQt that I have experienced to date.

The backstory….
The art department wanted a tool to help them track assigned tasks, the progress, and to share media and notes associated with the tasks. Furthermore, they wanted to be able to skin the interface with custom graphics to make it their own.

Progress…
During the winter break (about a month) I was able to come up with version 1.0 of TaskMonster. It was written in python, using PyQt for the UI, sqlalchemy to talk to the database, and twisted for the client/server communication. Each client app sends messages to a small server daemon which in turn tells the rest of the clients about the updates.

Version 2.0 Alpha…
Tony Postma, from the art department, put together a design in Corel which I could hopefully implement in the UI.  It called for the users to be represented as little pods in a circle around the supervisor, Adrien Beard. And each user pod could be clicked and rotated into place, in order to view that persons tasks.
After a bunch of testing I was able to design a rotating widget that could dynamically lay out N widgets around it in a circle, track their position, and jump to any other widget. I was also able to break down the corel->illustrator file, into a combination of SVG and PNG images, and skin the UI via CSS stylesheets.
Its currently an alpha release. I guess I need to really learn how to control the widget painting, to make it faster. Never had to do this much before.

What I came up with…        Click here to watch the demo video

You know when you have all these widgets laid out in your class, and you are hooking up all the connections, and you say “Aw dammit I have to subclass QLabel now just so make it ignore blahEvent”? You end up with all these little widget subclasses, where all they are doing is ignoring an event.

I noticed I was doing this a few times, in more than one of my classes, and finally got annoyed for the last time. I figured there had to be a simple way of just overloading the method on the normal object when I create an instance. Fortunately python considers everything objects and pretty much anything can be changed. So I did this:

myLabel = QLabel()
myLabel.mousePressEvent = lambda event: event.ignore()

Magic.

I have also had to make clickable widgets, such as QLabel:

myLabel = QLabel()
myLabel.mousePressEvent = lambda event: myLabel.emit(SIGNAL("clicked"))

Or if you had to do more than just a single statement:

myLabel = QLabel()
def clickedEvent(event):
    myLabel.emit(SIGNAL("clicked"))
    # do other stuff
        # do stuff
    event.accept()
myLabel.mousePressEvent = clickedEvent

I like this better than piling up subclasses that don’t do much.

chan2fbx

I had received a mailing list email from cmiVFX, where Chris Maynard was challenging the community to write a tool that could convert a nuke camera .chan file to a functional FBX format. This was apparently meant to compliment the new 3d camera tracker in NukeX. So I decided to take on the challenge.

The tool started out as a command-line python script that would translate the chan files simple column-style output to fbx. But in testing specifically with Flame, Chris found that the fbx simply would not import all the channels properly. Thus, I was asked to integrate a solution by Georges Nakhle for converting the chan to an .action format, which is native to Flame. So with George’s .action code, Chris’s testing with the scaling in Flame, and the rest of my code, we seemed to have all the bases covered in getting the .chan file into a universal format.

Chris asked if I would wrap the tool into a GUI, to allow easier access to the few options the script provides. Using the cmiVFX.com website as a reference, I threw together a nice looking GUI in PyQt. It was fun because I got to really play around with CSS and skinning in PyQt, which is something I never really had to do before. I learned how much of a pain in the ass Palettes are, and how freaking simple the CSS route makes it to control the look or widgets.

Chris released it today: http://www.fxmogul.com/

Currently there is a version for both OSX and Windows. I have been having some issues packaging the code under Linux, but I just need to really sit down and figure it out. The build is kinda larger than I hoped, but thats what I get for distributing PyQt :-)

.chan To FBX GUI (osx)

.chan To FBX GUI (osx)