Commit Graph

55 Commits

Author SHA1 Message Date
8f5b2e946b BGE bug #20446: revert to orignal code, the problems comes from misunderstanding of matrix theory. More details in bug report. 2009-12-22 09:46:03 +00:00
Dalai Felinto
9c22e846fe [#20446] mathutils: bugfix for matrix * matrix - patch by Paul Parchenko (parfoure) thanks
From the tracker:
- typo was making the multiplication to transpose resulting matrix
eg
####
from Mathutils import *
from math import radians

cont = GameLogic.getCurrentController()
owner = cont.owner

owner.worldOrientation = RotationMatrix(radians(1), 3, 'z') * owner.worldOrientation
####
2009-12-22 07:27:53 +00:00
926201acf8 - string copy without .py wasnt terminating the string
- console import autocomplete wasnt including modules defined in C like BGL, Mathutils
2009-12-07 14:09:53 +00:00
33c444f965 User Script support added back.
- the scripts path set in the user preferences or ~/.blender/scripts/ui (io, op, io etc..) will be used to load scripts.
- the default home dir part probably only works in *nix os's

- Added a missing sync callback to vector.toTuple()
2009-11-30 22:32:04 +00:00
d98093a91a - added a new math function double_round, useful for rounding a number to a number of decimal places.
- added Mathutils vector method, vec.asTuple(round), since this is tedious in python and fairly common task.
2009-11-29 22:42:33 +00:00
383093957a Mathutils vec += vec wasnt running mathutls callbacks 2009-11-26 16:19:20 +00:00
854cc87a80 option to have scripts run on startup for per blendfile UI's 2009-11-20 15:01:09 +00:00
ac8ff25b2d idprop.get(key, default=None)
matching pythons dict.get()

removed checks for a failed PyObject_New(), if python cant make a new object your probably going to crash anyway.
2009-11-19 17:04:28 +00:00
3b4c9d9699 correcting ID property list was incorrect on porting 2009-11-19 11:56:13 +00:00
d3794d9f94 fix for memory leak, use Key Errors for pyrna getitem access & idprops 2009-11-18 13:02:09 +00:00
f7682e2e0f - in pose mode, pose bone properties are edited rather then armature bone
- new id property array method convert_to_pyobject()
- editing an array in the UI broke
- fixed for own error when updating ID prop api
2009-11-17 12:54:29 +00:00
3087da0b25 my chnges broke 'del idprop["key"]'
made it possible to remove properties from rna types.

eg.
 del group["someprop"]
2009-11-16 22:21:39 +00:00
6ed0686fcc bpy/rna methods to find properties (works nice with autocomp!)
keys(), values() & items()

ed...
 print(bpy.context.active_object.keys())

Possible name conflict here, need to keep an eye on it.
2009-11-16 20:16:45 +00:00
66dfaabb9d update idproperty python api for python 3.1
- removed 'group.has_key("key")', use... '"key" in group' instead
- removed verbose float and int conversions that are not needed
- fixed memory leak
2009-11-16 18:56:58 +00:00
cf1700bdd5 python api for ID property access by Joseph Eager, copied from blender 2.4x. 2009-11-16 18:53:11 +00:00
4f47f21d44 small corrections, no functionality change 2009-11-12 12:48:39 +00:00
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
Ken Hughes
5133f75779 Python API
----------
Incorrect row and column values were passed to newMatrixObject() by
Matrix_new() when the argument to Matrix() was a matrix.
2009-10-23 00:44:18 +00:00
5fb73d8b81 Make compiler happy, remove doubtful non init usage. 2009-10-21 17:56:26 +00:00
Dalai Felinto
78d9891dfe mathutils: bugfix for matrix * vector
- terrible typo was making the multiplication to run in an infinite loop.
- Any matrix * vector multiplication would crash Blender.
eg
####
import Mathutils
from Mathutils import *

vec_ray = Vector(0.0, 0.0, 1.0)
tilt_mat = RotationMatrix(0.0, 3, "y")
vec_ray = tilt_mat * vec_ray
####
2009-10-03 21:48:15 +00:00
591a30dab0 bugfix for LineIntersectLine()
- was imperfect calculation for points marking shortest distance for non-crossing lines in 3d
2009-09-16 22:12:23 +00:00
bee18c57d4 fix warning 2009-09-14 17:13:58 +00:00
e271b03340 simple error in recent arithb.c commit, have Mathutils.RotationMatrix use AxisAngleToMat3 2009-09-12 13:25:38 +00:00
042d3e5956 2.5: fix for merge, forward_diff_bezier needed to be updated. 2009-09-11 14:56:54 +00:00
31fec003a1 Fix row/column order in matrix printout function. 2009-09-08 11:14:36 +00:00
Dalai Felinto
f7deb2046e manual merge trunk -r 23037
strangely vector.c was skipped in last merge from trunk.

-----------------------------------
Mathutils fix: Vector.reflect
* correct function for reflection and moving it to arithb.c
2009-09-08 03:25:00 +00:00
0ab2f675c3 Fix bug in Mathutil with matrix/matrix and matrix/vector multiplication order.
MathUtil matrix type follows Blender convention of column
major storage.  This means that the elements on one column
are contiguous in memory. Vectors are one dimensional
arrays that can be considered in row or in column but
the Blender convention is column so vector should only
be considered as row. This means that the only logical
multiplication operation between matrix and vector is
matrix * vector.

This convention is respected in all parts of MathUtil
except in matrix/matrix and matrix/vector multiplication
where the row major convention is assumed, which in the
and is equivalent to reversing the order of multiplication.

This is clearly a bug and must be corrected but the side
effect is that it will break all scripts using these
operations. Script writers who care about the correctness
of the matrix operations have already implemented work around:

1) change order of matrix/vector multiplication.
vec2 = vec1 * mat1

This must be changed to the normal order:
vec2 = mat1 * vec1

2) change order of matrix/matrix multiplication
(with matl a local transform in matw reference)
mat3 = matl * matw

This must be changed to the normal order:
mat3 = matw * matl

3) transpose before an after the multiplication
matl.transpose()
matw.transpose()
mat3 = matw * matl
mat3.transpose()

This must be changed to:
mat3 = matw * matl;
2009-09-07 22:26:23 +00:00
4342235489 - Mathutils.Vector assignment wasnt working in the BGE's py api, was using getValue() rather than setValue()
- added GPL header to bpy_interface.c from 2.4x's BPY_interface.c
- warning fixes
2009-08-26 06:15:43 +00:00
dfc7d63911 - typos in boxpack comments (incorrectly had comment that it was from NAN)
- removed unused defines STREQ, STREQ2, STREQ3 and MINSIZE
2009-08-16 08:36:08 +00:00
314b14301f 2.5: warning fixes
Directories intern/ and source/blender/ now compile warning
free again here with scons/gcc.
2009-08-15 16:36:25 +00:00
eef09b9cba cmake changes
- set python to 3.1 on linux (dont use FindPackage for now)
- remove duplicate settings (disable cache for copied settings, was quite confusing)
- added an option WITH_INSTALL, when disabled scripts and language files wont be copied to the target dir (better for quick builds)
- remove .svn (was still CVS), and pyc/pyc files after copy
- copy the 'io' as well as 'ui'
2009-08-14 17:16:16 +00:00
a27cc1adf0 2.5 audio cleanup:
* Removed CD Actuator
* Removed bSample and bSoundListener
* Removed SoundSystem
* Removed -noaudio parameter
2009-08-10 15:39:11 +00:00
7440fee85c remove python2.x support 2009-08-10 00:07:34 +00:00
2a727083c9 fix for warnings and implicit declarations
also fixed smoke comparing a float's mem-location rather then its value.
2009-07-31 01:40:15 +00:00
8bf9a8cb1e Added error prints if the text's main is not set. 2009-07-20 11:30:27 +00:00
d410135408 Sculpt+Paint/2.5:
* Moved brush NKEY panel from C to Python. Could use some UI review :)
* Added a NULL check in bpy_internal_import.c, was crashing here on Python errors
* Added RNA for vpaint brush and for weight paint
* Added context for vpaint/wpaint similar to edit_object and sculpt_object
2009-07-19 17:44:44 +00:00
4fb20358e4 Source code with executable property, manual fix. *sigh* 2009-07-17 18:35:49 +00:00
1227d5d6d3 mathutils types didnt work properly in python2x. vec*matrix failed for eg.
Now with KX_Python.h line 35 commented YoFrankie 1.1 should run unmodified in blender2.5
2009-07-13 12:17:07 +00:00
64f300ccf4 Use python subtypes so bpy.types.Mesh is a subtype of bpy.types.ID
This means checks like this work.
 isinstance(bpy.data.meshes[0], bpy.types.ID)
 
 bpy.types.Mesh.__base__ == bpy.types.ID
2009-07-10 18:09:53 +00:00
5e659c0b08 2.5
Monthly cleaning round to make it compile warning free.
Mostly it was const stuff (strings, Context), but also
a couple useful fixes, like wrong use of temp pointers.

Only Mathutils callback struct I left alone... design issue.
2009-07-09 15:40:04 +00:00
666ce6de80 needed for building with py2 2009-07-01 20:55:32 +00:00
1a86cd6dcd slice support working in py3 for Vector and Matrix types.
Added slice to PyRNA collections and arrays (py3 only).

eg.
some_verts = mesh.verts[0:10]
some_rna_array[4:-1] = [0,1,2,3]

Collections dont support assignment, when assigning slices, resizing the array isnt support like with python lists.
2009-07-01 13:31:36 +00:00
f60760e2e2 Python API
Mathutils support for subclassing Vector, Quat, Euler and Matrix types.

Removed C docstrings, prefer to make sure our epydocs are well maintained rather then duplicate, vague doc strings.
Will convert scripts to detect missing docs from the BGE.
2009-06-30 00:42:17 +00:00
1b5851b4f9 PyNumberMethods needed ifdefs for python3.x and some other corrections. 2009-06-28 13:27:06 +00:00
4b914c7f75 Made Mathutils use radians rather then degrees. defining USE_MATHUTILS_DEG for testing existing scripts.
Added conversion for BGE Quaternion WXYZ (Blender/C) -> XYZW (Moto C++).
BGE Python API now uses WXYZ following mathutils (break script warning).
2009-06-25 20:47:41 +00:00
d428ba1de8 PyAPI RNA/BGE
* all mathutils types now have optional callbacks
* PyRNA returns mathutils quat and euler types automatically when they have the rotation subtype.
* PyRNA, reuse the BPy_StructRNA PyObject rather name making a new one for each function returned.
* use more arithb.c functions for Mathutils quaternion type (less inline cruft).
* BGE Mathutils integration mostly finished- KX_PyMath now converts to Mathutils types rather then lists.
* make all mathutils types share the same header so they can share a number of functions - dealloc, getWrapped, getOwner.
2009-06-25 10:11:37 +00:00
eb22a7b210 PyRNA API support for matrix types as Mathutils matrix (with callbacks) rather then a generic rna sequence of floats.
Any 3x3 or 4x4 rna matrix will automatically be returned as a Mathutils matrix.
This makes useful stuff like multiplying a vector location by an object matrix possible.
 ob = bpy.data.scenes[0].objects[0]
 print (ob.data.verts[0].co * ob.matrix)

Also added mathutils matrix types to the BGE GameObject.localOrientation, worldOrientation

* MT_Matrix3x3 added getValue3x3 and setValue3x3, assumed a 4x3 float array.
* KX_GameObject.cpp convenience functions NodeSetGlobalOrientation, NodeGetLocalOrientation, NodeGetLocalScaling, NodeGetLocalPosition.
* 2.5 python api now initializes modules BGL, Mathutils and Geometry
* modules py3 PyModuleDef's use PyModuleDef_HEAD_INIT, rather then {}, was making msvc fail to build.
* added macros for Vector_ReadCallback, Vector_WriteCallback etc. to check if the callback pointer is set before calling the function.
2009-06-23 13:34:45 +00:00
333e231fa6 SVN maintenance. 2009-06-23 00:09:26 +00:00
bce3f7e019 PyAPI Mathutils Vector callbacks, referencing other PyObjects rather then thin wrapping vectors which is crash prone.
in short, vectors can work as if they are thin wrapped but not crash blender if the original data is removed.

* RNA vector's return Mathutils vector types.
* BGE vectors for GameObject's localPosition, worldPosition, localPosition, localScale, worldScale, localInertia.
* Comment USE_MATHUTILS define to disable returning vectors.

Example...

* 2.49... *
 loc = gameOb.worldPosition
 loc[1] = 0
 gameOb.worldPosition = loc

* With vectors... *
 gameOb.worldPosition[1] = 0


* But this wont crash... *
 loc = gameOb.worldPosition
 gameOb.endObject()
 loc[1] = 0 # will raise an error that the objects removed.

This breaks games which assume return values are lists.

Will add this to eulers, matrix and quaternion types later.
2009-06-22 04:26:48 +00:00
7785ead4eb ObColor wasnt converted into an RNA string.
Updated Mathutils.Vector/Euler/Quaternion/Matrix so these are types rather then module methods, each type now has a tp_new function, matching python builtins float/int/str.
Also cleaned up float conversion and arg passing.

Changed buttons_objects.py...
 if ob in groups.objects: # no longer works
 if ob.name in groups.objects: # is the new syntax
...its more dict like and a lot faster (avoids python iterating over each item and comparing each, use a single rna lookup instead).
2009-06-20 02:44:57 +00:00