The question I get asked most often by people just getting into scripting in Maya is, "Should I learn MEL first or go right to Python?". It's a legitimate question and at this stage in the lives of both languages, it has merit. The reality is you need to learn both...but which one first? And why learn MEL when Python is there? Maya's embedded language has been around for ages and is notoriously weak and difficult to use in certain areas. As Python slithers it's way deeper and deeper into our pipelines, many believe MEL will be phased out completely in coming years. Seeings how it will inevitably become more and more prevalent in 3D applications and is not Maya-specific, isn't it only logical to not bother with Maya's aging language and go right to Python? All signs seem to point that way, but I don't agree with this philosophy and I'll explain why.
My answer is almost always the same when people ask me this question: First, learn enough MEL for it to be useful and help you work, then start to learn Python along side it.
If you are new to programming and scripting, you are unlikely to learn enough Python quickly enough for it to be of any use to you. Python is definitely more powerful, gives you more control, and is really more fun to use in the end...BUT...it's more difficult. There are more rules, more things involved with getting it working properly and generally just more things you need to know in order to use and learn it. You'll need to learn the basics of installing libraries, having paths set up correctly, using environment variables, linking modules, and all sorts of steps just to get it doing what you want. Of course you can just go in there and start giving it Maya commands, but at that point you're not taking advantage of it's abilities and may as well use MEL. That brings me to my point.
With MEL, you can start doing things almost instantly even with little to no knowledge of how it works. Compared to some languages it's relatively easy to pick up and get going with and it exists in Maya already with great documentation. To get started, you can watch your Script Editor to see what certain commands are doing and how they work. Run a tool or do something in Maya and watch what kind of code it spits out in the Script Editor. Copy and paste that code and start changing things around to make your own little scripts and buttons. Learning the basics of variables, functions and syntax are all easy using the tutorials in the Maya documentation. All in all, within a couple of hours you can be writing small snippets of code that will actually be speeding up your work-flow. It's not to say you can't do the same with Python if you're a fast learner, but generally speaking you'll be up and running with MEL a lot quicker.
Once you're cruising with MEL and you're putting it good use...that is when I'd recommend diving into some Python and beginning to learn how it works. At the end of the day you can (and will) use both in various situations, but I'd never suggest to anyone to NOT learn how to script in MEL. Whether it be needing to clean up a co-workers code, make changes to a script, write a Maya GUI, or write a script in an older version of Maya that doesn't have Python...there are plenty of reasons you should not skip MEL.
All that being said, PyMEL combines the best of both and is my drug of choice at the moment. Learn them all so that you can make your own call on what's best. :)
Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts
Wednesday, July 7, 2010
Friday, March 19, 2010
Python: Learn Python via Google
Google has put up a free video collection of Python classes. Another great resource on the web for learning how to code in the coolest language ever. :)
From Google Code:
http://code.google.com/edu/languages/google-python-class/
From Google Code:
"Welcome to Google's Python Class -- this is a free class for people with a little bit of programming experience who want to learn Python. The class includes written materials, lecture videos, and lots of code exercises to practice Python coding. These materials are used within Google to introduce Python to people who have just a little programming experience. The first exercises work on basic Python concepts like strings and lists, building up to the later exercises which are full programs dealing with text files, processes, and http connections. The class is geared for people who have a little bit of programming experience in some language, enough to know what a "variable" or "if statement" is. Beyond that, you do not need to be an expert programmer to use this material."Very cool if you're looking to learn some Python and have been waiting for an opportunity.
http://code.google.com/edu/languages/google-python-class/
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...
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...
Friday, May 8, 2009
MEL: Breaking out of infinite loops
I read a great article today about how to break out of an infinite for or while loop in MEL. It happens to all of us at some point. Every so often you forget to add a counter or you miss a variable somewhere and you create a never-ending loop that you'd need to force quit maya in order to stop. This is a cool trick to prevent that.
http://www.naughtynathan.co.uk/?p=59
Great stuff. He also has a version for Python.
http://www.naughtynathan.co.uk/?p=59
Great stuff. He also has a version for Python.
Labels:
infinite loop,
Maya,
MEL,
Python
Subscribe to:
Posts (Atom)
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)
