djParentShape.mel

david | animation, mel script | Sunday, July 6th, 2008

I’ve been doing a fair amount of rigging where I use joints and empty groups as controllers. I try to minimize the need for going to the outliner to select things by adding shapeNodes to these controllers so that they can be selected directly in the viewport.

To parent a shapeNode to a different transform you need to use the command

parent -r -shape;

but often you’ll get the shape jumping to a new location when it adjusts to its new parent. If that happens you can select the cv’s or verts and move them to where you want them, but if you are doing this alot it can get messy and becomes time consuming. And that was the motivation for writing djParentShape.mel

With djParentShape you select the new controller object, shift-select the joint and run the script. It has two modes of operation: move to position or preserve position so you simply choose the one you need.

Download from here.

Keep reading for details… (more…)

toggle hypershade thumbnail updates

david | dj mod, mel script | Friday, July 4th, 2008

A few weeks ago I saw this thread on cgtalk where Matt Estela offered a workaround for the slowness that we experience when using the hypershade when complex shaders or shaders with large file textures are involved. The update lag seems worse if some of the new mia shaders are involved. Matt’s workaround is to simply disable the thumbnail updates while you are changing attribute values and to re-enable the updates again later when its more convenient.

I spent some time modifying a maya2008 sp1 mel script called hyperShadePanel.mel to add Matt’s suggested workaround to a new button. Its the one with the little green shader ball icon in the center collumn as shown here

thumbnailUpdatesToggleButton.jpg

You can use it to toggle thumbnail updates on and off. You’ll get one of those purple warnings in the info window to tell you the update state has changed.

warningMessage.jpg

You can download my modified version with the button icons from my downloads page. Put hyperShadePanel.mel in your local scripts folder and the xpm files in your icons folder and you’ll get the new button when you restart maya.

Download here.

I previously uploaded an earlier mod version soon after reading the cgtalk post, but the button behavior was slightly awkward. This has been corrected now, so this note is for anybody who tried it before - its better now.

tips for rendering maya fur with mentalray

david | mentalray, rendering, tutorials | Sunday, June 29th, 2008

I’ve been working on a project involving the use of maya fur. It’s the first time I have rendered fur using the mentalray renderer, so there was much to learn. One of the difficulties I encountered was dealing with the illumination of near-white colored fur (like a polar bear). In the past, using maya’s native software renderer, I would have added fur shadowing attributes to my lights to allow me to control and balance the amount of illumination on the fur, but these attributes are not supported by mentalray so I had to find another way.

In this post I show an approach to rendering near-white colored maya fur with mentalray.

(more…)

disruption

david | Uncategorized | Thursday, June 12th, 2008

Someone figured out how to embed hundreds of hidden links in my code so until I fugure out how to prevent it comments and ping-backs will be disabled. If you want to contact me you can find my email address in the djRivet.mel script at highend3d. How boring.

update 14 June 2008: I’ve upgraded wordpress and am in the process of cleaning the gunk from the database so things should be back to normal in a day or two.

poseDeformer for maya2008-x64

david | animation, mel script | Monday, May 26th, 2008

My downloads page now has a version of Michael Comet’s poseDeformer which I have compiled for maya2008-x64.

I have not done much testing, but it seems to be working ok on vista 64 with maya2008 sp1 64 bit.

Please test it properly yourself before committing to a production that relys on this plugin. If you encounter problems, feel free to comment here.

Download here. (Its near the bottom of the page)

Update: I’ve discovered you need to install .net framework 3.5 for this to work correctly.

djDepth phenomena

david | mentalray, rendering, tutorials | Tuesday, May 6th, 2008

Last year I wrote about my experiences creating a mentalray phenomenon called dj_mix_colors. Shortly after that I wrote about how to create a zDepthDOF shader using some of the standard maya utility nodes. Now I’m going to combine the two ideas and build a zDepthDOF style shader as a mentalray phenomena.

Let me start by saying all I’m really doing here is emulating (once again) the zDepthDOF shader by Andreas Bauer. But I have two reasons for doing so. Firstly I have recently become aware of a suite of freely available mentalray shaders called drUtilSuite 1.01 written by Duiker Research. It contains roughy 200 shaders

…to provide clearly defined atomic operations that may or may not be available already in Maya and mental ray.

Most accomplish a single basic task and they are designed to be built into something bigger. So I decided that it would be a good exercise in phenomenon building to create something useful. And that brings me to my second reason.

These shaders are provided for windows x32 and 64, linux x32 and 64 as well as osx uni, so they could fill some of the gaps currently facing those on modern os’s.

You can download djDepth with some example scene files from here.

If you are interested in the full story click here to read (more…)

mia_material propagate alpha

david | mentalray, rendering | Thursday, May 1st, 2008

About a year ago I wrote about a trick I had discovered to get correct alpha channels in the refraction of mia_materials. I’ve seen it mentioned occasionally in forums like cgtalk, so I thought I should post a quick update.

In maya 2008 the mia_material Advanced Refraction attribute called Propagate Alpha now works correctly, so the trick I wrote about is no longer required.

djSetKeyframe.mel and “straight ahead” animation

david | animation, mel script | Tuesday, April 22nd, 2008

I usually animate in a straight ahead manner, where I create a pose… keyframe… move forward on the timeline… create the next pose and so on. Since there are no keys ahead of where I am working, the last pose is held when I move forward. I find it easy to do a first pass this way.

But the first pass is rarely final and when changing some animation in the middle of a sequence it is often easier to delete a block of keyframes rather than mess with the existing ones. But now the keyframes that come after the deleted section mean those poses are no longer held when I move forward in time.

djSetKeyframe.mel was written to enable a more “straight ahead” approach when making changes to these middle bits.

Say for example, I delete all the keyframes between frame 100 and 200 so I can redo that section. I would then start by setting a new keyframe at frame 199. Then I goto to the last keyframe before frame 100 and run djSetKeyframe 1 0; which copies that keyframe to frame 199 and sets the inbetween tangents to linear. This creates a “hold” until frame 199.

Now I can work forward as I did in my first pass. Each new keyframe I set using djSetKeyframe 1 0; to simultaneously update the hold frame at 199. Of course, at some point the new animation needs to blend back into the old, so then I just delete the keyframe at 199.

The numbers you see after the command in the above examples, change its behaviour. The first is the “push” flag; set to 0 behaves just like the channel box rmb-menu Key Selected. Set to 1 and it will also copy the new keyframe forward.

The second number is the “unlock tangent weights” flag. (I wish I knew how to make unlocked weighted tangents the default in maya) Set this 2nd number to 0 and you get the usual locked tangent weights, but set it to 1 and the weights will be unlocked as you create new keyframes.

djSetKeyframe.mel was written to be mapped to hot-keys (or marking menus if you prefer). I have djSetKeyframe 0 1; mapped to [s] and djSetKeyframe 1 1; mapped to [S].

NOTES and CREDITS: This script requires the installation of Hamish McKenzies zooToolbox. I have used a proc called zooSetkeyPush which is just one of many useful functions that are part of the marking menu built by zooSetKey.mel.

Download djSetKeyframe.rar from here. (see file header for full usage details)

An afterthought: As I re-read this tonight, I realize that I will probably be asked “Why dont you just use “step” tangents instead ?”. The simple answer is… um… that’s not the way I prefer to work. I like to be able to scrub through my animation as I am creating it so I can judge the momentum and flow of my action. I know this is a departure from the widely used workflow of blocking out the action using only poses and step tangents on the first pass. (And I was reminded of this recently while reading Cameron Fielding’s blog where he links to a nice document by Mike Walling) Getting those key poses down is essential, I agree. I’m impatient though. I want to see it move too. This is what I have become used to.

djSwitchManipOnSelection.mel

david | mel script | Friday, April 18th, 2008

In my last post I wrote about two methods for getting the manipulator handle to change automatically when you select an object. Then, thanks to Brad Clark’s post on cgtalk I discovered yet another way (actually the same technique as zooTriggered, but doesnt require the zooToolbox to be installed).

I thought it would be useful to put Brad’s whichTool() proc into an easy to use mel script. I’ve called it djSwitchManipOnSelection.mel to stick with my usual naming, but really the guts of this are Brad’s code and a bit from Hamish - thanks guys.

You need to source djSwitchManipOnSelection.mel, probably by adding a line to your userSetup.mel. Then you have a few commands you can use. Here is a basic work flow.

Select some objects. Then in the cmd window type djCreateDefaultToolAttr 0 to flag those objects for worldspace move (substitute 1 for object move, 2 for rotate, 3 for scale). An attribute called defaultTool is added to the objects and specifies the manipulator type, which you can change later if you wish.

djSwitchManipOnSelection 1 activates the manipulator switching scriptJob. Now a change of selection will check for the defaultTool attribute and change manipulator accordingly.

djSwitchManipOnSelection 0 deactivates manipulator switching.

djRemoveDefaultToolAttr removes the defaultTool attribute from selected objects.

These commands will be easier to use if you assign them to shelf buttons or marking menus.

Download djSwitchManipOnSelection.rar here.

default manipulators and zooTriggered

david | animation, mel script, tutorials | Wednesday, April 16th, 2008

Yesterday I learned something new. Stev Kalinowski posted this on CGTalk

In the attribute editor, under the Display rollout you set the “Show Manip Default” drop down list to Translate or Rotate for each control. Then to select objects hit “t” (Show Manipulators) instead of the move or rotate tool. Now when you select objects you’ll get the manipulator you set for each control.

I tested it out using two objects called “translateMe” and “rotateMe” and I set the Show Manip Default attribute as shown here

defaultManipAttrEd_translate.jpg

defaultManipAttrEd_rotate.jpg

Now, as long as I am in Show Manipulators mode (invoked with the “t” hotkey by default) then the manipulator handle will change based on my selection.

This is quite handy when animating, but it depends on being in the Show Manipulators mode, which I would not be as comfortable with alot of the time, since I frequently need to also use the translate, rotate and scale modes.

Well, there is another way to do the same thing using Hamish McKenzie’s zooTriggered scripts.

I have written about using zooTriggered here, but if you read that quick walk-through, you might think it’s use is restricted to selecting a control object to trigger the selection of another object(s). In fact zooTriggered can trigger almost any mel command(s) which means it can be used to activate a specified manipulator when you select an object.

Here’s a really quick look.

Open the zooTriggered UI and in the View menu make sure “Edit zooTriggered command” is selected. Then add the objects you want to configure (to the top left pane). Then right-mouse-click in the lower pane and select either the “use move tool preset” or the “use rotate tool preset”.

zooTriggeredMoveToolPreset1.jpg

You should end up with something like this

zooTriggeredRotateToolPreset2.jpg

Now enable the trigger by clicking the “load” button so that the “load status” bar changes to green

zooTriggeredEnable.jpg

That’s it. Now whenever you select the object, the manipulator tool you specified will become active.

There is a slight delay between your selection and the change of the manipulator, which is not the case with the Show Manipulators mode, but my preference is still the zooTriggered method since it allows me to stick with the regular translate, rotate, scale modes that I generally use.

Next Page »

Powered by WordPress | Based on a theme by Roy Tanck