Reference/Release Notes/2.40/addons

From Blender Developer Wiki
Jump to: navigation, search

<section begin=2.40-Game Engine-Python API />

API and Modules changed

Armature - complete overhaul - see docs

BezTriple - code cleanup and bug fixes

BGL - code cleanup

Blender - code cleanup

Bone - complete overhaul - see docs

Build - removed

constant - complete overhaul

CurNurb - code cleanup and bug fixes

Curve - added functions getKey, getTaperOb, setTaberOb

Draw - code cleanup

Effect - major over haul and additions

euler - rotate, nds, setattr, richcmpr, slicing, cleanup

gen_utils - FlaotsAreEqual, VectorsAreEqual, GetModuleConstant, intError, objError, incr2, incr3, decr2, decr2, setFloatClamped, setIvalueClamped, setFloatRange, setIValueRange, setModuleConstant, getBitfield, setBitfield, setterWrapper, setterWrapperTuple, dict-set_item_str

Image - GetCurrent, New, getPixelI, setPixelF, setPixelI, getMinXY, save, getStart, getEnd, getSpeed, setStart, setEnd, setSpeed

Ipo - cleanup

Ipocurve - getDriver, setDriver, getDriverObject, setDriverObject, getDriverChannel, setDriverChannel, getseters, improved Init, removed setPoints

Key - New module

Lamp - setComponent, getTypesConst, getModesConst, getComponent, getUsers, getsetters, removed setIpo, (ask about deprecated...)

Lattice - getKey

Library - cleanup

Material - getseters, getColorComponent, getOopsLoc, getOopsSel, setOopsLoc, setOopsSel, getUsers

Mathutils - major overhaul see below

matrix - len, item, ass_item, slice, coerce

Mesh - new module

Metaball - clean up

MTex - getsetters

NLA.c - minimal changes (shouldn't this have a major update??)

NMesh - getKey, nmedge_from_index,nmvert_from_float, nmface_from_index, correctFaceIndex, new_NMesh_displist, removed addEdgesData (edges are always present now)

Object - getParentBoneName, makeParentDeform, makeParentVertex, getEffects, updateDag, add the

following attributes - DupSta, DupEnd, DupOn, DupOff, Dupliframes, effects, users, protectFlags, removed functions getSBEnable, setSBEnable, getSBPostDef, setSBPostDef

Particle - New, Get, getType, setType, getFlag, setFlag, getsta, setSta, getEnd, setEnd, getLifetime, setLifetime, getNormfac, setNormfac, getObfac, setObfac, getRandfac, setRandfac, getTexfac, setTexfac, getRandlife, setRandlife, getNabla, setNabla, getVectsize, setVecSize, getTotpart, setTotpart, getTotkey, setTotkey, getSeed, setSeed, getForce, setForce, getMut, setMult, getLife, setLife, getMat, setMat, getChild, setChild, getDefvec, setDefvec

point - new module

quat - getsetter, repr (print self) richcmpr, len,

item, coerce - major improvements in robustness and

automatic type conversion

rgbTuple - cleanup

Scene - getTimeLine

sceneRender - SaveRenderedImage added HDR type

sceneTimeLine - new module

Text3d - code cleanup

Texture - getsetters, compare, ProjDict, NoiseDict,

BlendModesDict, MappingsDict

Types - Mesh_Type, MFace_Type, MVert_Type, PVert-Type,

MEdge_Type, MCol_Type, point_type, remove Build_Type,


vector - toPoint, toTrackQuat

Wave - removed

windowTheme - lamp, textfield_hi


  • added - 3ds_import, 3ds_export, md2_export, md2_import, XSI_export
  • updated - ac3d_import, ac3d_export, bevel_center, bvh2arm, bvh_import, console, DirectX8Exporter, discombobulator, disp_paint, hotkeys, lightwave_export, lightwave_import, obj_export, obj_import, rvk1_torvk2, skin, tex2uvbaker, uv_export, wings_export, wings_import


   - clean up of uninitialized variables & removal of unneccessary objects
   - NMesh returns wrapped vectors now
   - World returns wrapped matrices now
   - Object.getEuler() and Object.getBoundingBox() return Wrapped data when data is present
   - Object.getMatrix() returns wrapped data if it's worldspace, 'localspace' returns a new matrix
   - Vector, Euler, Mat, Quat, call all now internally wrap object without destroying internal datablocks
   - Vector's resize methods are only applicable to new vectors not wrapped data.
   - Matrix(), Quat(), Euler(), Vector() now accepts ANY sequence list, including tuples, list,
   or a self object to copy - matrices accept multiple sequences
   - Fixed Slerp() so that it now works correctly values are clamped between 0 and 1
   - Euler.rotate does internal rotation now
   - Slice assignment now works better for all types
   - Vector * Vector and Quat * Quat are defined and return the DOT product
   - Mat * Vec and Vec * Mat are defined now
   - matrix.toQuat() and .toEuler() now fixed take appropriate matrix sizes
   - Matrix() with no parameters now returns an identity matrix by default not a zero matrix
   - printf() now prints with 6 digits instead of 4
   - printf() now prints output with object descriptor
   - Matrices now support [x][y] assignment (e.g. matrix[x][y] = 5.4)
   - Matrix[index] = value now expectes a sequence not an integer. This will now
   set a ROW of the matrix through a sequence.  index cannot go above the row
   size of the matrix.
   - slice operations on matrices work with sequences now (rows of the matrix) example:
   mymatrix[0:2] returns a list of 2 wrapped vectors with access to the matrix data.
   - slice assignment will no longer modify the data if the assignment operation fails
   - fixed error in matrix * scalar multiplication
   - euler.toMatrix(), toQuat() no longer causes "creep" from repeated use
   - Wrapped data will generate wrapped objects when toEuler(), toQuat(), toMatrix() is used
   - Quats can be created with angle/axis, axis/angle
   - 4x4 matrices can be multiplied by 3D vectors (by popular demand :))
   - vec *quat / quat * vec is now defined
   - vec.magnitude alias for vec.length
   - all self, internal methods return a pointer to self now so you can do print
   vector.internalmethod() or vector.internalmethod().nextmethod() 
   (no more print matrix.inverse() returning 'none')
   - added the ability to negate vectors/points with "-vec"
     * deprecated vector.negate()
   - added the ability to shorthand inverse matrices with "~mat" (tilde)
   - added some equivalency testing for vector classes
    >, >=, <, <= test vector magnitude
    ==, != test vector values 'within epsilon' :)
    Added some equvalency tests for the other math objects
   * ==, != are defined for matrix, quat, euler.
   - conversion between vector/point with toXXX() methods
   - intersection tests for lines
   - triangle area function
   - tracking quaternion from vector
   - some helpful normal calculators
   -fix for angleBetweenVecs
   * adds a test to check for zero-length vectors
   - these methods have been deprecated (still functioning but suggested to use
   the corrected functionality):
     * CopyVec() - replaced by Vector() functionality
     * CopyMat() - replaced by Matrix() functionality
     * CopyQuat() - replace by Quaternion() functionality
     * CopyEuler() - replaced by Euler() functionality
     * RotateEuler() - replaced by Euler.rotate() funtionality
     * MatMultVec() - replaced by matrix * vector
     * VecMultMat() - replaced by vector * matrix
   -  New struct containers references to python object data or internally allocated
   blender data for wrapping
   * Explaination here:  math structs now function as a 'simple wrapper' or a 'py_object' -
   data that is created  on the fly will now be a 'py_object' with its memory managed 
   by python otherwise if the data is returned by blender's G.main then the math object
   is a 'simple wrapper' and data can be accessed directly from the struct just like other
   python objects.

<section end=2.40-Game Engine-Python API />