Dev:Ref/Release Notes/2.40/addons
<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,
Particle_Type
vector - toPoint, toTrackQuat
Wave - removed
windowTheme - lamp, textfield_hi
Scripts
- 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
Mathutils
- 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 />