Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-04-17Patch from GSR that a) fixes a whole bunch of GPL/BL licenseChris Want
blocks that were previously missed; and b) greatly increase my ohloh stats!
2007-12-17Reverting to 2_2x BPYMartin Poirier
I was careful in selectively rolling back revisions, but if you've committed changes unrelated to BPY mixed with BPY changes, I might have reverted those too, so please double check.
2007-09-07matrix to scale fixes from stableCampbell Barton
2007-05-21=== Bugfix ===Martin Poirier
Fix potential problem with Matrix initializer (can't call Matrix_Identity on non square matrices).
2007-03-16type initialization updates, and refcount fix for lamp, reverted some ↵Campbell Barton
changes to NMesh
2006-10-07removed some unused vars from Curve and matrixCampbell Barton
scn.objects.new(None) - adds a new empty - new objects are selected by default now further stripped down the vector struct, the wrapped state was being stored and 2 places.
2006-10-03Mathutils.Vector speedupCampbell Barton
removed the need for casting python objects to Vectors pyobjects when performing vec/float arithmatic. a PyObject for coercing has also been removed from the vector struct so a little less memory will be used also. Benchmarked before and after this change ___________________________________ import Blender v= Blender.Mathutils.Vector m= Blender.Mathutils.Matrix a= v(1,2,3) b= v(3,2,1) c= m() t= Blender.sys.time() for i in xrange(20000000): a*b a*10 a/10 a+b b-a a*c print Blender.sys.time()-t _______________________________________ Before 63.5sec after 49.5 about 3 sec of that is looping
2006-08-21removed the unpopular 'ed' functions, and added .copy() to Mathutils vector ↵Campbell Barton
and matrix (inverted, normalized, transposed) making an inverted copy of an objects matrix used to be.. (2.42) imat= Mathutils.Matrix(ob.matrixWorld) imat.invert() # inverted.. I added but now removed imat= ob.matrixWorld.inverted() # with copy (current functionality)... imat= ob.matrixWorld.copy().invert()
2006-08-07Removed debug line added when testing for matrix memory leaks that messed up ↵Campbell Barton
matrix.invert() updated bvh import which was modified to account for that. as well as other minor changes.
2006-07-27matrix .inverted() and .transposed() didnt work because the matrix was ↵Campbell Barton
wrongly copied. 2 more memory leaks in matrix multiplication fixed.
2006-07-27Addition to MathutilsCampbell Barton
vec.normalized() mat.inverted() mat.transposed() made vec/float possible normalize/invert/transpose now return None because they modify the data in place. use the ...(ed) versions to return a modified copy. Fixed Memory leaks from not decreffing PyFloat_AS_DOUBLE from these python functions... (found when testing above functions) ob.rbMass ob.rbRadius matrix.determinant() quat*float vec*float matrix.transpose() EXPP_setModuleConstant Checked all instances of PyFloat_AS_DOUBLE so I dont think there are any mroe leaks there.
2006-04-27Added scalePart to mathutils matrix type object.Campbell Barton
and made it so toEuler converts a 4x4 matrix to a 3x3 rather then raising an error. Its not straight fwd to get an objects worldspace loc/size/rot from its 4x4 matrix. Example from updated docs. import Blender scn = Blender.Scene.GetCurrent() ob = scn.getActiveObject() if ob: mat= ob.mat # Same as martixWorld print 'Location", mat.translationPart() # 3D Vector print 'Size", mat.scalePart() # 3D Vector print 'Rotation", mat.toEuler() # Euler object
2006-04-25===Bugfix===Ken Hughes
matrix.resize4x4() was incorrectly allocating a array of pointers using the wrong cast -- sizeof(float) instead of sizeof(float *). Worked fine on 32-bit systems but caused a crash on AMD64. Discovered by a student in one of my classes (kudos, Joe).
2006-02-16==Python==Brecht Van Lommel
Small bug reported on irc, matrix.translationPart didn't check bounds properly (needed to use || instead of &&). Also fixed similar bugs in rotationPart and rich compare.
2006-01-11*pose code for pythonJoseph Gilbert
- adds object.getPose - ability to manipulate poses /posebones - fixes a overflow bug in matrix sequence accessor - adds code to get vec/roll from mat3 - few internal fixes to NLA - ability to set bone matrices
2006-01-04[ #3661 ] resize4x4 in Matrix class doesn't set ones on the diagonalJoseph Gilbert
* resizing a matrix now puts 1's back on the diagonals.
2005-12-05-- Bugfix #3072: As discussed on IRC, matrix.invert() should throw aKen Hughes
ValueError exception if matrix is singular.
2005-12-05-- Bugfix 3453: coercion operations were doing an extra incref on coercedKen Hughes
objects. Also found extra increfs on some newly-created quat and matrix objects, from calls to Matrix_Identity() and Quaternion_Identity().
2005-11-22Added some equvalency tests for the other math objectsJoseph Gilbert
* ==, != are defined for matrix, quat, euler.
2005-11-03Silly error string correctionJoseph Gilbert
2005-09-27Refcount fixesJoseph Gilbert
* fixes posible reference count issues with mathutils * mathutils classes should no longer memory leak
2005-09-12bugfix: [ #3009 ] possible memory leak in MathutilsStephen Swaney
fixed by patch [ #3013 ] patch for memleak in vector Submitted By: Ken Hughes (khughes)
2005-07-23_new point class and update_Joseph Gilbert
- adds a new point class * point/ vector math (p + v = p, p - p = v, etc.) * points can be transformed by matrices/quats * wraps 'place vector' type vectors that have no magnitude - wrapped toXXX() methods work correctly * toXXX() will NOT wrap data (this is due to the fact that wrapped data cannot be converted) * added a 'wrapped' attribute to mathutils classes to determine wether the object is accessing python or blender data - added the ability to negate vectors/points with "-vec" * deprecated vector.negate() - added the ability to shorhand inverse matrices with "~mat" (tilde) - conversion between vector/point with toXXX() methods
2005-07-19__ bug fix__Joseph Gilbert
- internal methods for mathutils class need to incref before returning a pointer to self * memory allocation errors (freeing bad pointers) were appearing after repeatedly calling internal methods on the same object due to ref counts.
2005-07-19-Patch submitted by Campbell BartonJoseph Gilbert
-Fixed matrix.invert() to return the correct inverse matrix
2005-07-18Header file clean up and warning fixesJoseph Gilbert
- Mostly this cleans up the #includes and header files in the python project. - Warning fixes are mostly casting issues and misc fixes. General warning clean up. - #include Python.h MUST come as the first include to avoid the POSIX redefine warning in the unix makefiles - fno-strict-aliasing flag added to makefile to fix a unavoidable type punning warning in types.c
2005-07-14Mathutils updateJoseph Gilbert
- also included is some fixes for preprocessor inclues and some clean up of the previous commit -rewrite and bugfixes ---------------------------------- Here's my changelog: -fixed Rand() so that it doesn't seed everytime and should generate better random numbers - changed a few error return types to something more appropriate - 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 - Removed memory allocation (unneeded) from all methods - 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 - Moved #includes to .c file from headers. Also fixed prototypes in mathutils - Added new helper functions for incref'ing to genutils - Major cleanup of header files includes - include Mathutils.h for access to math types - 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') - 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.
2005-05-22Roll back changes from Big Mathutils Commit on 2005/05/20.Stephen Swaney
2005-05-22Matrix_Determinant() was returning its input arg rather thanStephen Swaney
the determinant. bugfix via LetterRip.
2005-05-20-rewrite and bugfixesJoseph Gilbert
---------------------------------- Here's my changelog: -fixed Rand() so that it doesn't seed everytime and should generate better random numbers - changed a few error return types to something more appropriate - 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 - Removed memory allocation (unneeded) from all methods - 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 - Moved #includes to .c file from headers. Also fixed prototypes in mathutils - Added new helper functions for incref'ing to genutils - Major cleanup of header files includes - include Mathutils.h for access to math types - 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') - 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.
2005-03-09big warning hunt commitJean-Luc Peurière
lot of casts, added prototypes, missing includes and some true errors
2004-10-15Make msvc happy by 'improving' order of declaration and removing superfluous ↵Nathan Letwory
layout issues.
2004-10-15bugfix: #1642 Matrix multiplication memory leakStephen Swaney
another memory leak plugged.
2004-10-14fix bad return types for errors in Matrix_coerce().Stephen Swaney
EXPP_ReturnPyObjError() should have been EXPP_ReturnIntError().
2004-10-14followup to vector memory leak fixes:Stephen Swaney
fix for problems with NMesh vertices. plug some more leaks in matrix module. new vector method newVectorProxy(). In BPy-Land, we have overloaded the meaning of our Vector type. One use is for vectors in the traditional mathmatical sense. The other legacy use is as a proxy for Blender data. The recent memory leak fixed have lead to the Vector type behaving as mathematical vectors. However, the NMesh module is still using Vector types as a proxy to manipulate NMVert data. To support this usage, in the vector module there is a new factory method newVectorProxy(). This creates a Vector that references memory outside the Vector. Vectors created by newVectorProxy() do NOT free their referenced memory. The newVectorProxy() is used only in bpy code and is not exposed thru the scripting interface. Anyone using newVectorProxy() must be aware of object lifetime and scoping issues because the returned Vector holds a pointer to memory it does not own. This works in the NMVert case since we are referencing memory belonging to the NMVert object via an NMVert method.
2004-10-11fix memory leak in Object.GetSelected().Stephen Swaney
bugfix: #1631 Memory Leak in newMatrixObject PyMem_Malloc()s not followed with PyMem_Free(). allocation error checking contributed by Tom Musgrove.
2004-09-26Another round in the Great BPy Cleanup:Stephen Swaney
Run everything thru indent to cleanup spaces vs tabs. Clean up some of the comments by hand. BGL.c was not touched due to all that macro wackyness. There are no functional changes to the code. Pre-indent versions of source are tagged with tag bpy-cleanup-20040925 , just in case.
2004-09-18One small part of the Great Bpy Code Cleanup.Stephen Swaney
Add cvs $Id tag to files
2004-04-23BPython:Willian Padovani Germano
- fixed two warnings, unused var in Object.c and undeclared function in script.c - updated Blender.Draw doc, it was missing info about Button object - refactored pytype initialization to try to fix for once platform (and distro!) specific crashes on startup. This asked for tiny updates in Effect.[ch] (removed static from declaration, moved definitions to the .c file) and modules.h - fixed error I made trying to fix scripts w/ no [eol] char in menus. Thanks Michael Velikanje for reporting the problem!
2004-03-15-bug fix: matrix_item callback now returns rows from a matrix as in previous ↵Joseph Gilbert
API implementation (exmple: ob.getMatrix()[0])
2004-02-29Mathutils library for the python APIJoseph Gilbert
- support for quaternions, euler, vector, matrix operations. - euler supports unique rotation calculation - new matrix memory construction and internal functions - quaternion slerp and diff calculation - 2d, 3d, 4d vector construction and handling - full conversion support between types - update to object/window to reflect to matrix type - update to types/blender/module to reflect new module
2003-07-11* Object_getInverseMatrix now returns a correct matrix.Michel Selten
The problem was that the memory was allocated at the stack, but after the Python object was created, the pointer to the memory goes invalid. Thanks to Kester Maddoc for providing a patch - almost 2 weeks ago. Ouch, I should read my mail a little bit better.
2003-07-06* Fixed:Michel Selten
- Object_getMatrix() - prints correct values now - Object_getName() - removes the two identifying chars from the front - Object_setName() - calls the internal function to correctly set the name of the object. * Removed the Object_print function. It causes a crash on Windows. * Updated the Object_repr function to display the Object nicely. * Object.Get() now returns a list of Objects when no argument has passed to it. * Changed the function declaration for newMatrixObject function Easier to read now.
2003-06-23* Added matrix moduleMichel Selten
* Moved the function EXPP_tuple_repr from vector.c to gen_utils.[ch] * Matrix functionality should work now in Object module. * Fixed compilation warning about implicit declaration of M_World_Init. Added the declaration to modules.h