Current errata for the book. As a guide to the corrections, any text in green should be added. Any text in
redwith strikethrough should be removed. Any text in blue replaces the existing text.
Location
Existing Text
Correction/Addition
page 18, paragraph 4, line 5
makeNurbsSphere
makeNurb
sSpherepage 22, paragraph 3, line 2
makeMyNurbsSphere
makeMyNurb
sSpherepage 22, paragraph 5, line 5
... volume of given sphere.
... volume of a given sphere.
page 29, paragraph 3, line 1
Direct acyclic graph
Directed acyclic graph
page 31, paragraph 2, line 5
... assumes the transform node does ...
... assumes the transform node doesn't ...
page 31, figure 2.16
page 32, figure 2.18
(There is no need for the arrow(s) since there is no flow of information. The figure simply shows that a node above another is a parent; a node below another is a child.)
page 46, paragraph 1, line 1
attributeAffects (input, output)
attributeAffects(input, output) (no space)
page 68, paragraph 1, line 2
upper-
upper-
page 72, paragraph 10, line 3
// Third element set to 3
// Third element set to 7
page 76, paragraph 5, line 3
Since you didn't explicitly specify the type of the variable, Maya assumed that it was an integer, since the value 3 is clearly an integer.
Since you didn't explicitly specify the type of the variable, Maya assumed that it was an integer, since the value 5 is clearly an integer.
page 76, paragraph 7, line 4
// Result: 3.34
// Result: 3.43
page 89, paragraph 2, line 6
if( $a == 10 && $b = 2 )
if( $a == 10 && $b == 2 )
page 101, paragraph 1, line 1
... always preferable explicitly ...
... always preferable to explicitly ...
page 112, paragraph 5, line 1
If don't have ...
If you don't have ...
page 114, paragraph 4, line 2
MAYA_SCRIPTS_PATH
MAYA_SCRIPT
S_PATHpage 114, paragraph 4, line 6
set MAYA_SCRIPTS_PATH=$MAYA_SCRIPTS_PATH;c:\myScripts
set MAYA_SCRIPT
S_PATH=$MAYA_SCRIPTS_PATH;c:\myScriptspage 114, paragraph 5, line 1
MAYA_SCRIPTS_PATH
MAYA_SCRIPT
S_PATHpage 115, paragraph 1, line 4
MAYA_SCRIPTS_PATH=custom_script_directory
MAYA_SCRIPT
S_PATH=custom_script_directorypage 116, paragraph 10
Mac OS X:
system("open -e learning.mel");page 125, paragraph 9, line 1-2
float $ver = float( `about -version` );
if( $ver < 4.0 )string $ver = `about -version`;
string $verParts[];
tokenize( $ver, ".", $verParts );
if( int($verParts[0]) < 4 )
page 126, paragraph 10, line 1,
paragraph 11, line 1,
paragraph 13, line 1MAYA_SCRIPTS_PATH
MAYA_SCRIPT
S_PATHpage 137, paragraph 2, line 5
if( size($pt) != 3 &&size($mtx) != 16 )
if( size($pt) != 3 || size($mtx) != 16 )
page 143, paragraph 6, line 1
$pt = spaceToSpace( $pt, "world", "", "nurbsCone1", "local" );
$pt = spaceToSpace( $pt, "world", "", "local", "nurbsCone1" );
page 144, paragraph 6, line 1
vector $s = <<1.5, 2.3, 1.4>>;
vector $sc = <<1.5, 2.3, 1.4>>;
page 145, paragraph 5, line 4
addAttr -longName "points" -attributeType int $obj;
addAttr -longName "points" -attributeType long $obj;
page 145, paragraph 5, line 7
-enumNames "Weapon:Potion:Obstacle" $obj;
-enumName
s"Weapon:Potion:Obstacle" $obj;page 147, paragraph 8, line 6
It also possible ...
It is also possible ...
page 150, paragraph 1, line 1
float $cTime = currentTime -query;
float $cTime = `currentTime -query`;
page 151, paragraph 3, line 3
The animation range remains at 0, 48.
The animation range remains at 1, 48.
page 152, paragraph 9, line 1
playblast -file test.mov;
playblast -filename test.mov;
page 157, paragraph 3, line 1
keyframe -query -time 250 -eval ball.translateX;
keyframe -time 250 -query -eval ball.translateX;
page 164, paragraph 2
The angle of a tangent defines ...
Since a tangent is a vector, it has both a direction and a length. By default, each key's in and out tangents are locked together; both tangents will rotate and scale equally. When the tangents are unlocked, they can rotate and scale independently of each other. To change the lengths of the tangents, the curve must be turned into a weighted curve and the key's weight locking must be turned off.
page 167, paragraph 4, line 11
The key's value is scaled by half.
The key's value is scaled by half.page 171, paragraph 2, line 1
printTangentPostions
printTangentPositions
page 171, paragraph 2, line 31
page 173, paragraph 6, line 2$ycomps = `keyTangent -query $xreq $animCurve`;
$ycomps = `keyTangent -query $yreq $animCurve`;
page 173, paragraph 3, line 1
Depending on which tangent you need, you repair the ...
Depending on which tangent you need, you prepare the ...
page 174, paragraph 9, line 3
8113845077
81.13845077
page 179, paragraph 1, line 4
page 181, paragraph 9, line 1
page 184, paragraph 2, line 4
page 184, paragraph 7, line 1string $childNodes[] = `listRelatives -fullPath -type joint -children -allDescendents $rootNode`;
string $childNodes[] = `listRelatives -fullPath -type joint
-children-allDescendents $rootNode`;page 181, paragraph 8, line 1
Get a list of all the child joints.
Get a list of all the child joints using the listRelatives command. This list includes all the descendants and not just the direct children.
It is very important that the complete path to the children be used. Some of the children have the same name so aren't unique and when used in later statements would cause problems. In fact Maya would complain that the node name wasn't unique. However their complete paths (which include their ancestors) are unique, so the complete path is used.page 185, paragraph 1
It is very important ...
* This paragraph should be moved to page 181 after paragraph 8
page 186, paragraph 12, line 6
string $srcNodes[] = `listRelatives -fullPath -children -allDescendents $srcRootNode`;
string $srcNodes[] = `listRelatives -fullPath
-children-allDescendents $srcRootNode`;page 186, paragraph 12, line 10
string $destNodes[] = `listRelatives -fullPath -children -allDescendents $destRootNode`;
string $destNodes[] = `listRelatives -fullPath
-children-allDescendents $destRootNode`;page 187, paragraph 1, line 41
}
<tab>}
page 187, paragraph 1, line 21
-destination yes
-source yes -destination no
* the inclusion of -source yes isn't necessary since it is on by default but it does help clarify the intention.page 190, paragraph 10, line 2
-destination yes
-source yes -destination no
* the inclusion of -source yes isn't necessary since it is on by default but it does help clarify the intention.page 204, paragraph 5, line 4
This reason for ...
The reason for ...
page 211, paragraph 4, line 2
... has a width of 30 and ...
... has a width of 60 and ...
page 214, paragraph 3, line 1
The third button is vertically positioned at 50% of the form's height.
The third button is vertically positioned at 5
0% of the form's height.page 215, paragraph 2, line 3
-collapsible
-collapsable
page 231, paragraph 1
The picture command is designed to display .xpm and .bmp (under Windows) images, while the image command can display these formats and a lot more.
Under Windows, the picture command will display .xpm and .bmp files, while under Linux it will display only .xpm files. The image command can display these formats and a lot more.
page 242, paragraph 1, line 11
-attachNone $frame "top"
-attachForm $frame "top"
page 250, paragraph 6, line 3
siren.colorR = siren.colorB = siren.colorC = 1;
siren.colorR = siren.colorG = siren.colorB = 1;
page 256, paragraph 6, line 1
... of type, float ...
... of type
,float ...page 256, paragraph 6, line
... float, int, or boolean ...
... float, int, vector, or boolean ...
page 257, paragraph 7, line 1
commands must be used.
commands must not be used.
page 271, paragraph 8, line 5
This ensures that the animation node isn't automatically removed, since it is always this newly formed connection.
This ensures that the animation node isn't automatically removed, since it
is alwayshas this newly formed connection.page 272, paragraph 8, line 3
... with the plane's x and z position, reduced by a factor 3.
... with the plane's x and z position, reduced by a factor of 3.
page 274, paragraph 4, line 2
To split an edge, ...
To split a
nface, ...page 276, paragraph 2, line 4
... standard Maya does.
... standard Maya solver does.
page 285, paragraph 2, line 5
Mobject
MObject
page 286, paragraph 4, line 1
transformNodeObj
transformObj
page 286, paragraph 4, line 2
dagNodeFn
transformFn
page 286, paragraph 6, line 2
FnBase
MFnBase
page 292, paragraph 2, line 1
page 292, paragraph 3, line 1
page 292, paragraph 5, line 2helloWorld.dll
helloWorld.mll
page 297, line 9
MstatusdoIt
MStatus doIt (insert space)
page 305, paragraph 5, line 2
... no longer need, it ...
... no longer needed, it ...
page 306, paragraph 3, lines 3-5
line 3: if( !`pluginInfo -query -unloadOk $pluginFile` )
line 4: file -f new;
line 5: unloadPlugin $pluginFile;line 3: if( `pluginInfo -query -loaded $pluginFile` && !`pluginInfo -query -unloadOk $pluginFile` )
line 4: file -f -new;
line 5: unloadPlugin helloWorld.mll;
page 306, paragraph 5, line 7
Last the plugin...
Lastly the plugin...
page 313, paragraph 3, lines 6-8
const int nPosts = 5;
const double radius = 0.5;
const double height = 5.0;
const int nPosts = 5;
const double radius = 0.5;
const double height = 5.0;const int nPosts = 5;
const double radius = 0.5;
const double height = 5.0;
const int nPosts = 5;
const double radius = 0.5;
const double height = 5.0;page 311, paragraph 1, line 11
unsigned int i;
unsignedint i;page 315, paragraph 7, line 6
posts1-number 10 -radius 1
posts2 -number 10 -radius 1
page 316, paragraph 4, line 4
The MArgsList class used ...
The MArgsList class is used ...
page 316, 317,318, 319
MArgsList
replace all instances with:
MArg
sListpage 318, paragraph 2, line 2
page 320, paragraph 3, line 2MArgsDatabase
MArg
sDatabasepage 349, paragraph 10, line 1
This same ...
These same ...
page 350, paragraph 1, line 2
rotationX
rotationZ
page 355, paragraph 7, line 9
MAttribute
MFnAttribute
page 358, paragraph 6, line 1
unitializePlugin
uninitializePlugin
page 362, paragraph 1, line 1
nurbSphereShape1
nurbsSphereShape1
page 362, paragraph 1, line 2
nurbSphere1
nurbsSphere1
page 364, paragraph 7, line 2
nurbSphereShape1
nurbsSphereShape1
page 365, paragraph 5, line 3
nurbSphereShape1
nurbsSphereShape1
page 365, paragraph 5, line 4
MDGModifer's
MDGModifier's
page 366, paragraph 2, line 3
However, this is a simpler method.
However, there is a simpler method.
page 372, paragraph 7, line 3
Channel Control
Channel Box
page 373, paragraph 4, line 1
should be displayed
should not be displayed
page 374, paragraph 2, line 1
object's
objects
page 381, paragraph 2, line 1
... is set the ...
... is set to the ...
page 389, paragraph 7, line 1
compFn.addChild( nameAttr )
compFn.addChild( ageAttr )
page 393, paragraph 6, line 3
// Can no hold ...
// Can now hold ...
page 395, paragraph 3, line 2
MdataBlock
MDataBlock
page 399, paragraph 6, line 8
MyNode::scoredAttr
MyNode::scoresAttr
page 406, paragraph 4, line 1
GroundShadowNode::compute
MyNode::compute
page 409, paragraph 4, line 5
You node will most ...
Your node will most ...
page 415, paragraph 2, line 4
... object is the selection ...
... object is in the selection ...
page 420, figure 4.27
labels qType, xWidth, zWidth
labels Type, XWidth, ZWidth
page 422, paragraph 2
Maya current ...
Maya currently ...
page 424, paragraph 10, line 3
baseLocatorManip
basicLocatorManip
page 428, paragraph 4, line 1
page 428, paragraph 6, line 1finishAddingMaps
finishAddingManips
page 436, paragraph 9, line 5
MitGeometry
MItGeometry
page 441, paragraph 4, line 1
nurbsPlaneShapeOrg
nurbsPlaneShape1Orig
page 447, paragraph 2, line 2
... don't hold on for ...
... don't hold onto it for ...
page 453, paragraph 2, line 3
propograted
propog
ratedpage 459, paragraph 7, line 4
... as well its ...
... as well as its ...
page 461, paragraph 3
MEL does not provide pointers. However all variables are passed into functions by reference.
MEL does not provide pointers. All variables, except arrays, are passed by value into procedures. All arrays are passed by reference.
page 470, paragraph 1, line 1
makeNurbsSphere
makeNurb
sSpherepage 472, paragraph 5, line 1
If no explicitly ...
If not explicit
ly...page 472, paragraph 8, line 3
MPxNode::attributeEffects
MPxNode::attributeAffects
page 475, paragraph 7, line 1
... is placeholder ...
... is a placeholder ...
page 476, paragraph 6, line 1
This is a pseudorandom number.
This is a continous function that generates pseudorandom numbers.
page 476, paragraph 10, line 2
... the plug sign ...
... the plus sign ...
page 478, paragraph 8, line 1
When an command ...
When a
ncommand ...
Please send an email to David Gould, davidgould@davidgould.com, with any errors, omissions, and so on, that you may find.
Subscribe to the newsletter to receive a notification when new errata is added.