Showing posts with label MaxScript. Show all posts
Showing posts with label MaxScript. Show all posts

Tuesday, March 22, 2011

MEL/MAXScript Tutorial Requests

I've been wanting to write another MEL and/or MAXScript tutorial lately, but I'm not sure yet what topic(s) I want to cover. There's plenty of MEL commands and techniques and other stuff I could do but I figured I'd put out a call and see if anyone had some specific requests. Leave a comment if you have an idea for a tutorial that you'd like to see.

Wednesday, July 21, 2010

Maxscript: Check If Auto Key Is Turned On

Need to query if auto key is turned on or off using maxscript? Use the animButtonState command. It returns true or false, so using this info you can check it's current state and then setup a toggle for it, or use it make sure Max is in the correct mode before running a script.

Simple, yet extremely useful!

Wednesday, July 14, 2010

MEL To Maxscript To MEL

For whatever reason, I am a huge fan of using MEL to export a Maxscript file and vice versa. There is a strange feeling of satisfaction, something along the lines of getting away with a crime or not letting the man bring you down. Grab your code by the balls. That is all. :)

Saturday, February 20, 2010

MEL: Remove Namespaces From A String or Object Name

Dealing with namespaces is a pain in the ass. Period.

Veteran TD's and Maya guys will tell you how easy it is and that there are so many ways to deal with them and this and that. They are correct. However, they are still a giant, giant pain in the ass.

Thankfully there's a simple trick to remove namespaces from using the tokenize MEL command.

What tokenize does is split a string into multiple parts using a character(s) as the splitting point. For example, if an object is named this_Object if you were to tokenize it and split it using the character "_" than you would end up with two tokens: "this" and "Object".

We know that if an object has a namespace, or in some cases multiple namespaces that the object name will always be prefixed with the namespace and a colon. (:)

So, let's tokenize it out using a colon.

string $objectName = "Character:r_arm_CTRL" ; // Our Object Name
string $buffer[] ; // Create Empty Array To Hold Tokens
tokenize $objectName ":" $buffer ; // Split $objectName by ":"

// Now...
string $namespace = $buffer[0] ; // "Character"
string $object = $buffer[1] ; // "r_arm_CTRL"

With this example we've done a basic namespace removal. However, this is prone to errors for multiple reasons. What if you have multiple namespaces? By hardcoding which index you're getting from $buffer you will end up potentially grabbing the wrong data. A way around this is to use a programming trick to always grab the very last item in an array. As with namespaces, we always know the last item will be the object itself so we'll end up with the correct string.

string $objectName = "Character:r_arm_CTRL" ;
string $buffer[] ;
tokenize $objectName ":" $buffer ;

string $objectWithoutNamespace = $buffer[size($buffer)-1] ;


By getting the size of the array, and subtracting one, you'll end up with the last index of a zero-based array. If it were Maxscript, arrays are one-based (they start with one, not zero) so you wouldn't need to subtract one from the size.

(If you're curious, the equivalent of tokenize in Maxscript is filterString)

So there you are, a quick, easy, non-dirty way of getting rid of namespaces in an object's name.

Saturday, October 17, 2009

Blur Gives Us Python And PyQT In 3DSMax

http://forums.cgsociety.org/showthread.php?f=98&t=816475

Developed by Blur, these plugins have the potential to replace Maxscript and finally let us use Python properly in 3DS Max.

I'm just starting to dig into it, fingers crossed...

Saturday, May 9, 2009

MAXScript: Removing Spaces From Names

Here is a quick snippet of code that will remove all the spaces in your object names and replace them with underscores. Simple yet elegant.


for s in selection do
(
oldname = filterString s.name " "
temp = oldname[1]
for i = 2 to oldname.count do
(
temp = temp + "_" + oldname[i]
)

s.name = temp
)


Select all the objects first, and run this script.

Thursday, March 26, 2009

MAXScript: Floating Slider Time


This is something we whipped up at work a few months ago for using in Max. I've never been a fan of the default Max time configuration setup so we made this one. It lets you set the current frame, and move the start and end frames with the spinners or by typing them in.


fn floatingTime =
(

if (theTimeRollout != undefined)
then (destroydialog theTimeRollout)

rollout theTimeRollout "Floating Slider Time" width:258 height:25
(
spinner theStartFrame "Start: " pos:[22,4] width:60 range:[-100,50000,1] type:#integer
edittext theTimeInput "Go To:" pos:[89,4] width:80
spinner theEndFrame "End: " pos:[193,4] width:60 range:[-100,50000,1] type:#integer



on theTimeRollout open do
(
theTimeInput.text = ((sliderTime as integer) / ticksperframe) as string
theStartFrame.value = (animationRange.start as integer / ticksperframe)
theEndFrame.value = (animationRange.end as integer / ticksperframe)
)
on theTimeInput entered x do
(
slidertime = x as integer
)
on theStartFrame changed x do
(
if (x < animationrange =" interval" value =" (animationRange.end" animationrange =" interval"> animationrange.start)
then
(
animationRange = interval animationrange.start x
)
else
(
theEndFrame.value = (animationRange.start as integer / ticksperframe) + 1
animationRange = interval animationrange.start theEndFrame.value
)
)

)createDialog theTimeRollout style:#(#style_toolwindow, #style_sysmenu)

)
This will create your function, then you can call it either with a button, or by typing "floatingTime()"

Scripting Topics

MEL (41) Maya (39) Scripting (32) Scripts (21) programming (14) Free Mel Scripts (8) MaxScript (7) Coding (6) Rigging (5) tutorial (5) 3ds Max (4) Python (4) Tricks (4) faceware (4) image metrics (4) Learn (3) Namespace (3) Namespacing (3) animation (3) facial (3) webinar (3) Code (2) GDC (2) Game Developers Conference (2) Multiple Namespaces (2) Print Selected Objects (2) Recursive (2) Removing Namespace (2) Return (2) Set Driven Keys (2) TOkenize (2) Tips (2) Toggle Background Color with MEL (2) animation tools (2) animators resource (2) deformers (2) learning (2) maya tools (2) mesh (2) modeling (2) nodes (2) procedure (2) script swell (2) transforms (2) Animschool (1) Attribute (1) Background Color (1) Beer (1) Blur (1) Character Setup (1) Check if an object exists (1) Class (1) Command Line (1) Constraints (1) Create SDK (1) Create a directory with mel (1) Data (1) Export (1) FilterString (1) Fix (1) Floating Slider Time (1) Functions (1) Get Maya Version MEL (1) Get Parent (1) Google (1) Holiday (1) How To Write To A Text File (1) Import (1) Incremental Save (1) Index (1) Joint Chain (1) Make Set Driven Keys (1) Maya Version (1) Modules (1) Objects (1) Orient Constraint (1) PYMEL (1) Parent (1) Parent Constraint (1) Point Constraint (1) Position (1) Print (1) Print Current Selection (1) Print Random Quotes (1) Print Selection (1) Print Vertices (1) Progress Bar (1) Progress Window (1) PyQT (1) Removing Spaces From Names (1) Scene File Name (1) Select Connections (1) Select Outgoing Nodes (1) Split Bones (1) Split Joints (1) St. Patrick's Day (1) String Array (1) System (1) Transfer UVs (1) Viewport (1) White Space (1) Windows Username (1) Zero Out Attributes (1) animButtonState (1) arrays (1) articles (1) auto key (1) better (1) blendshapes (1) break (1) confirm dialog (1) continue (1) convention (1) e3 (1) efficiency (1) error (1) eval (1) executable (1) fclose (1) fopen (1) fprint (1) games (1) improving (1) infinite loop (1) joints (1) listHistory (1) listRelatives (1) logic (1) loops (1) milestone (1) nodeType (1) objExists (1) recursion (1) rotates (1) rotations (1) schools (1) sculpting (1) setAttr (1) shout outs (1) source (1) source a script with a variable (1) speed (1) tech-artists.org (1) translates (1) video (1) warning (1) world matrix (1) worldMatrix (1)
 
Script Swell - Blogged