blender.git
11 years ago== compile fix ==
Andrea Weikert [Fri, 4 Jul 2008 20:21:08 +0000 (20:21 +0000)]
== compile fix ==
- fix compilation for MSVC (added missing math define)
- note: defines were already duplicated, added twice to keep them in synch

11 years agoMade some python game engine funcs use NOARGS, getAxisVec was using wrong multiplica...
Campbell Barton [Fri, 4 Jul 2008 19:00:56 +0000 (19:00 +0000)]
Made some python  game engine funcs use NOARGS, getAxisVec was using wrong multiplication order.
Use BUT_TOGDUAL for controllers init states so you can see what the init state is for any controller without using the button to check.

11 years ago-> Vertex Group support for bevel (editmode only)
Geoffrey Bantle [Fri, 4 Jul 2008 17:59:16 +0000 (17:59 +0000)]
-> Vertex Group support for bevel (editmode only)

Vertex groups are now preserved when beveling (editmode only).
Modifier support as well as uv/vert colors to follow soon.

11 years ago-> Moving Pooling Alloctor to BlenLib
Geoffrey Bantle [Fri, 4 Jul 2008 17:32:55 +0000 (17:32 +0000)]
-> Moving Pooling Alloctor to BlenLib

Bmesh's pooling allocator is probably usefull for other parts of blender as
well, so I am moving it to BlenLib.

11 years agoBGE logic update: new servo control motion actuator, new distance constraint actuator...
Benoit Bolsee [Fri, 4 Jul 2008 08:14:50 +0000 (08:14 +0000)]
BGE logic update: new servo control motion actuator, new distance constraint actuator, new orientation constraint actuator, new actuator sensor.

General
=======
- Removal of Damp option in motion actuator (replaced by
  Servo control motion).
- No PyDoc at present, will be added soon.

Generalization of the Lvl option
================================
A sensor with the Lvl option selected will always produce an
event at the start of the game or when entering a state or at
object creation. The event will be positive or negative
depending of the sensor condition. A negative pulse makes
sense when used with a NAND controller: it will be converted
into an actuator activation.

Servo control motion
====================
A new variant of the motion actuator allows to control speed
with force. The control if of type "PID" (Propotional, Integral,
Derivate): the force is automatically adapted to achieve the
target speed. All the parameters of the servo controller are
configurable. The result is a great variety of motion style:
anysotropic friction, flying, sliding, pseudo Dloc...
This actuator should be used in preference to Dloc and LinV
as it produces more fluid movements and avoids the collision
problem with Dloc.
LinV : target speed as (X,Y,Z) vector in local or world
       coordinates (mostly useful in local coordinates).
Limit: the force can be limited along each axis (in the same
       coordinates of LinV). No limitation means that the force
       will grow as large as necessary to achieve the target
       speed along that axis. Set a max value to limit the
       accelaration along an axis (slow start) and set a min
       value (negative) to limit the brake force.
P:     Proportional coefficient of servo controller, don't set
       directly unless you know what you're doing.
I:     Integral coefficient of servo controller. Use low value
       (<0.1) for slow reaction (sliding), high values (>0.5)
       for hard control. The P coefficient will be automatically
       set to 60 times the I coefficient (a reasonable value).
D:     Derivate coefficient. Leave to 0 unless you know what
       you're doing. High values create instability.

Notes: - This actuator works perfectly in zero friction
         environment: the PID controller will simulate friction
         by applying force as needed.
       - This actuator is compatible with simple Drot motion
         actuator but not with LinV and Dloc motion.
       - (0,0,0) is a valid target speed.
       - All parameters are accessible through Python.

Distance constraint actuator
============================
A new variant of the constraint actuator allows to set the
distance and orientation relative to a surface. The controller
uses a ray to detect the surface (or any object) and adapt the
distance and orientation parallel to the surface.
Damp:  Time constant (in nb of frames) of distance and
       orientation control.
Dist:  Select to enable distance control and set target
       distance. The object will be position at the given
       distance of surface along the ray direction.
Direction: chose a local axis as the ray direction.
Range: length of ray. Objecgt within this distance will be
       detected.
N    : Select to enable orientation control. The actuator will
       change the orientation and the location of the object
       so that it is parallel to the surface at the vertical
       of the point of contact of the ray.
M/P  : Select to enable material detection. Default is property
       detection.
Property/Material: name of property/material that the target of
       ray must have to be detected. If not set, property/
       material filter is disabled and any collisioning object
       within range will be detected.
PER  : Select to enable persistent operation. Normally the
       actuator disables itself automatically if the ray does
       not reach a valid target.
time : Maximum activation time of actuator.
       0 : unlimited.
       >0: number of frames before automatic deactivation.
rotDamp: Time constant (in nb of frame) of orientation control.
       0 : use Damp parameter.
       >0: use a different time constant for orientation.

Notes: - If neither N nor Dist options are set, the actuator
         does not change the position and orientation of the
         object; it works as a ray sensor.
       - The ray has no "X-ray" capability: if the first object
         hit does not have the required property/material, it
         returns no hit and the actuator disables itself unless
         PER option is enabled.
       - This actuator changes the position and orientation but
         not the speed of the object. This has an important
         implication in a gravity environment: the gravity will
         cause the speed to increase although the object seems
         to stay still (it is repositioned at each frame).
         The gravity must be compensated in one way or another.
         the new servo control motion actuator is the simplest
         way: set the target speed along the ray axis to 0
         and the servo control will automatically compensate
         the gravity.
       - This actuator changes the orientation of the object
         and will conflict with Drot motion unless it is
         placed BEFORE the Drot motion actuator (the order of
         actuator is important)
       - All parameters are accessible through Python.

Orientation constraint
======================
A new variant of the constraint actuator allows to align an
object axis along a global direction.
Damp : Time constant (in nb of frames) of orientation control.
X,Y,Z: Global coordinates of reference direction.
time : Maximum activation time of actuator.
       0 : unlimited.
       >0: number of frames before automatic deactivation.

Notes: - (X,Y,Z) = (0,0,0) is not a valid direction
       - This actuator changes the orientation of the object
         and will conflict with Drot motion unless it is placed
         BEFORE the Drot motion actuator (the order of
         actuator is important).
       - This actuator doesn't change the location and speed.
         It is compatible with gravity.
       - All parameters are accessible through Python.

Actuator sensor
===============
This sensor detects the activation and deactivation of actuators
of the same object. The sensor generates a positive pulse when
the corresponding sensor is activated and a negative pulse when
it is deactivated (the contrary if the Inv option is selected).
This is mostly useful to chain actions and to detect the loss of
contact of the distance motion actuator.

Notes: - Actuators are disabled at the start of the game; if you
         want to detect the On-Off transition of an actuator
         after it has been activated at least once, unselect the
         Lvl and Inv options and use a NAND controller.
       - Some actuators deactivates themselves immediately after
         being activated. The sensor detects this situation as
         an On-Off transition.
       - The actuator name can be set through Python.

11 years agosmall changes to py funcs that can run 100s of times a second, so python wont generat...
Campbell Barton [Fri, 4 Jul 2008 00:30:44 +0000 (00:30 +0000)]
small changes to py funcs that can run 100s of times a second, so python wont generate empty args tuple when they are not needed.

11 years agonon user visible changes and small optimizations to the game engine pyapi as well...
Campbell Barton [Fri, 4 Jul 2008 00:05:50 +0000 (00:05 +0000)]
non user visible changes and small optimizations to the game engine pyapi as well as fixing some bugs.
* 2 returning errors without exception set another return None instead of NULL.
* a missing check for parent relation
* BPY matrix length was incorrect in matrix.c, this change could break some scripts, however when a script expects a list of lists for a matrix, the len() function is incorrect and will give an error. This was the only thing stopping apricot game logic running in trunk.

Also added a function for GameObjects  -  getAxisVect(vec), multiplies the vector be the objects worldspace rotation matrix. Very useful if you want to know what the forward direction is for an object and dont want to use Blender.Mathutils which is tedious and not available in BlenderPlayer yet.

11 years agoWindow Installer:
Simon Clitherow [Thu, 3 Jul 2008 19:10:54 +0000 (19:10 +0000)]
Window Installer:
A couple of fixes:
 - uninstaller now deletes itself (oops! :)
 - uninstaller now correctly locates \.blender for removal.

11 years agoSun,Sky and atmosphere for lamps(sun type), PATCH#8063 http://projects.blender.org...
Hamed Zaghaghi [Thu, 3 Jul 2008 10:38:35 +0000 (10:38 +0000)]
Sun,Sky and atmosphere for lamps(sun type), PATCH#8063 projects.blender.org/tracker/?func=detail&atid=127&aid=8063&group_id=9

11 years agoAdding GameObject setLinearVelocity(), without this interacting with objects requires...
Campbell Barton [Thu, 3 Jul 2008 01:34:50 +0000 (01:34 +0000)]
Adding GameObject setLinearVelocity(), without this interacting with objects requires them to have logic bricks to apply force which doesn't work well when the character is in a seperate blend file to the levels. (its also messy to have a script & multiple motion actuators on each object you can pickup and throw).

This is also needed for removing any force that existed before suspending dynamics - In the case of franky hanging, resuming dynamics when he fell would apply the velocity he had when grabbing making dropping to the ground work unpredictably.

Also note in pydocs that enable/disable rigidbody physics doesn't work with bullet yet.

11 years ago== Python, GE & Threads ==
Willian Padovani Germano [Wed, 2 Jul 2008 21:01:59 +0000 (21:01 +0000)]
== Python, GE & Threads ==

Martin Sell (thanks!) reported that threading via scripts was not working in the game engine with Blender 2.46 and later. My fault, to make pynodes work properly with threads > 1 I disabled Python's "check interval", preventing threads created via scripts from receiving time to run.

Now only during rendering check interval is disabled (set to max int). Still experimental, I added the calls in BPY_do_all_scripts, since it's called in BIF_do_render, but will probably move the code to its own function after more testing & feedback.

11 years agoCloth collisions: Reorganized collision system to be more flexible for other parts...
Daniel Genrich [Wed, 2 Jul 2008 20:28:49 +0000 (20:28 +0000)]
Cloth collisions: Reorganized collision system to be more flexible for other parts of blender, so it can be more easily reused. Also slowed down friction impulse.

11 years agoChecked all cases where PyArg_ParseTuple is used in blenders game engine and made...
Campbell Barton [Tue, 1 Jul 2008 16:43:46 +0000 (16:43 +0000)]
Checked all cases where PyArg_ParseTuple is used in blenders game engine and made sure all will raise errors when called with invalid args.

11 years agobugfix, ActionActuator was missing many checks for PyArg_ParseTuple failing.
Campbell Barton [Tue, 1 Jul 2008 13:21:37 +0000 (13:21 +0000)]
bugfix, ActionActuator was missing many checks for PyArg_ParseTuple failing.
This meant an error in a script could be reported in a different line or script file which makes it quite hard to trace the problem. There were also places where invalid pointers could be used because of this.
The whole game engine pyapi probably needs to have these checks added.

11 years agolet the logic buttons operate on objects in different scenes. They would already...
Campbell Barton [Tue, 1 Jul 2008 06:44:34 +0000 (06:44 +0000)]
let the logic buttons operate on objects in different scenes. They would already display but pressing the buttons did nothing.
This is useful when using 1 scene for a character and another for a test level, so the character logic can be edited without switching scenes.

11 years agotrack to would crash (with a C++ assert) if the source and target are in the same...
Campbell Barton [Tue, 1 Jul 2008 05:16:08 +0000 (05:16 +0000)]
track to would crash (with a C++ assert) if the source and target are in the same location, which I have had happen a few times while testing.

11 years agoFix for python APi error - (Campbell: please check :) ) -- using myLamp.setType(Area...
Daniel Genrich [Mon, 30 Jun 2008 15:02:22 +0000 (15:02 +0000)]
Fix for python APi error - (Campbell: please check :) ) -- using myLamp.setType(Area) resulted in 'TypeError: expected int argument in [0,5]' (reported in IRC by Djoef)

11 years agoFix crash in python API (Campbell: please check :) ) -- using myLamp.setType(number...
Daniel Genrich [Mon, 30 Jun 2008 14:44:12 +0000 (14:44 +0000)]
Fix crash in python API (Campbell: please check :) ) -- using myLamp.setType(number) crashed blender (reported in IRC by Djoef)

11 years agoBGE python api addition, GameObject get/setState and Controller.getState()
Campbell Barton [Sun, 29 Jun 2008 21:52:23 +0000 (21:52 +0000)]
BGE python api addition, GameObject get/setState and Controller.getState()
Also added a note in the tooltip for action priority when using more then 1 action at a time.

11 years agoFix for bug #7753: after game engine drawing with vertex arrays,
Brecht Van Lommel [Sun, 29 Jun 2008 21:51:27 +0000 (21:51 +0000)]
Fix for bug #7753: after game engine drawing with vertex arrays,
nurbs/curves/text dissappears.

This also removes the "vertex arrays" option and enables it always
for OpenGL version >= 1.1 - there's no need to have an option to
make things render faster disabled by default, also it should work
stable now.

11 years agoFix for bug #13757: camera lens minimum value for ipo's was
Brecht Van Lommel [Sun, 29 Jun 2008 21:06:18 +0000 (21:06 +0000)]
Fix for bug #13757: camera lens minimum value for ipo's was
different than the button.

11 years agoFix for bug #8680: GameLogic.getRandomFloat() returns very small
Brecht Van Lommel [Sun, 29 Jun 2008 20:53:17 +0000 (20:53 +0000)]
Fix for bug #8680: GameLogic.getRandomFloat() returns very small
values on 64 bit, instead of range 0..1. Also a warning fix.

11 years ago== FFMPEG / ImBuf ==
Peter Schlaile [Sun, 29 Jun 2008 15:11:35 +0000 (15:11 +0000)]
== FFMPEG / ImBuf ==

Fixed deinterlacing (inplace deinterlacing didn't work out properly...).

[#14672] Sequencer: deinterlace filter artifacts

11 years agoNDOF bugfixes 14402 & 14403 by ettore Pasquini
Jean-Luc Peurière [Sun, 29 Jun 2008 12:53:42 +0000 (12:53 +0000)]
NDOF bugfixes 14402 & 14403 by ettore Pasquini

11 years agoadding explicit cast to get things compiling
Jean-Luc Peurière [Sun, 29 Jun 2008 12:25:15 +0000 (12:25 +0000)]
adding explicit cast to get things compiling

11 years agoAction Editor - Group drawing tweaks:
Joshua Leung [Sun, 29 Jun 2008 05:52:11 +0000 (05:52 +0000)]
Action Editor - Group drawing tweaks:

* When all the action-channels for a group are hidden (i.e. their related bones are not visible), the group in question is also not drawn. This helps reduce clutter. (slikdigit funboard request)

* When a group has no channels belonging to it, the expand icon/button isn't drawn for that group.

11 years agoAdded autokey call for Flip Quats tool (Alt-F in PoseMode)
Joshua Leung [Sun, 29 Jun 2008 03:58:46 +0000 (03:58 +0000)]
Added autokey call for Flip Quats tool (Alt-F in PoseMode)

11 years agoBGE , fix an compile error
Hamed Zaghaghi [Sat, 28 Jun 2008 14:19:25 +0000 (14:19 +0000)]
BGE , fix an compile error

11 years agoBGE 2d-filter, custom shaders now can have depth texture and luminance texture
Hamed Zaghaghi [Sat, 28 Jun 2008 03:18:11 +0000 (03:18 +0000)]
BGE 2d-filter, custom shaders now can have depth texture and luminance texture

11 years agobugfix, txt_to_buf would crash on an empty text file.
Campbell Barton [Fri, 27 Jun 2008 23:01:33 +0000 (23:01 +0000)]
bugfix, txt_to_buf would crash on an empty text file.
Also checked all other uses of text->lines.first to make sure the assumption isn't made elsewhere.
Added 2 more checks for text->lines.first when converting text buffer to objects.

11 years agopatch [#15865] BGE API call to delete objects
Campbell Barton [Fri, 27 Jun 2008 11:35:55 +0000 (11:35 +0000)]
patch [#15865] BGE API call to delete objects
from Dalai Felinto (dfelinto)
renamed deleteObject to endObject() to match the user interface.

11 years agoFix for bug [#13651] Convertor->Math->Divide broken
Juho Vepsalainen [Thu, 26 Jun 2008 17:08:07 +0000 (17:08 +0000)]
Fix for bug [#13651] Convertor->Math->Divide broken
Changed the if statement to catch zero case properly.

11 years agoMake it so it accepts blah.tiff as a filename not just blah.tif
Kent Mein [Thu, 26 Jun 2008 16:42:20 +0000 (16:42 +0000)]
Make it so it accepts blah.tiff as a filename not just blah.tif

This is for bug [#15132] When saving a render .tif is appended to the saved
file even if the name contains .tiff

Kent

11 years agoPython API/Game engine fixes, dosn't affect 2.47
Campbell Barton [Thu, 26 Jun 2008 12:39:06 +0000 (12:39 +0000)]
Python API/Game engine fixes, dosn't affect 2.47
* Action FrameProp was checking if the string was true, not that it contained any text.
* Added GameObject.getVisible() since there is already a getVisible
* Added GameObject.getPropertyNames() Needed in apricot so Franky can collect and throw items in the level without having the names defined elsewhere or modifying his game logic which is stored in a separate blend file.

11 years agoint toggle button function was being used on a short, remove warnings in buttons_logi...
Campbell Barton [Wed, 25 Jun 2008 16:15:57 +0000 (16:15 +0000)]
int toggle button function was being used on a short, remove warnings in buttons_logic.c too

11 years agoCommented out face transp changing when switching images, this is more annoying then...
Campbell Barton [Wed, 25 Jun 2008 16:09:29 +0000 (16:09 +0000)]
Commented out face transp changing when switching images, this is more annoying then helpful.
Edited Game engine docs to note that the matrix will need to be transposed if used with Mathutils.Matrix()
Edited "Collision" button since ray-sensor also uses collision.

11 years agoBGE patch 15044 approved: Edit Object Dynamics Actuator.
Benoit Bolsee [Wed, 25 Jun 2008 14:09:15 +0000 (14:09 +0000)]
BGE patch 15044 approved: Edit Object Dynamics Actuator.

Add enable/disable dynamics actuator under the "Edit Object" category.
The Enable/disable rigid body option is also availale but not implemented.

11 years agoadded r/w access to nurb curves orderU for migius
Campbell Barton [Wed, 25 Jun 2008 13:21:38 +0000 (13:21 +0000)]
added r/w access to nurb curves orderU for migius

11 years agoBGE patch: Add automatic support for armature driven shape keys.
Benoit Bolsee [Tue, 24 Jun 2008 22:19:00 +0000 (22:19 +0000)]
BGE patch: Add automatic support for armature driven shape keys.

To take advantage of this feature, you must have a mesh with
relative shape keys and shape Ipo curves with drivers referring
to bones of the mesh's parent armature.
The BGE will automatically detect the dependency between the
shape keys and the armature and execute the Ipo drivers during
the rendering of the armature actions.
This technique is used to make the armature action more natural:
the shape keys compensate in places where the armature deformation
is uggly and the drivers make sure that the shape correction
is synchronized with the bone position.

Note: This is not compatible with shape actions; BLender does
not allow to have Shape Ipo Curves and Shape actions at the same
time.

11 years agoBGE patch: remove Shape key driver code from previous commit
Benoit Bolsee [Tue, 24 Jun 2008 21:39:45 +0000 (21:39 +0000)]
BGE patch: remove Shape key driver code from previous commit

11 years agoBGE patch: Add damping and clamping option to motion actuator.
Benoit Bolsee [Tue, 24 Jun 2008 19:37:43 +0000 (19:37 +0000)]
BGE patch: Add damping and clamping option to motion actuator.

This patch introduces two options for the motion actuator:

damping: number of frames to reach the target velocity. It takes
into account the startup velocityin the target velocity direction
and add 1/damping fraction of target velocity until the full
velocity is reached. Works only with linear and angular velocity.
It will be extended to delta and force motion method in a future
release.

clamping: apply the force and torque as long as the target velocity
is not reached. If this option is set, the velocity specified
in linV or angV are not applied to the object but used as target
velocity. You should also specify a force in force or torque field:
the force will be applied as long as the velocity along the axis of
the vector set in linV or angV is not reached. Works best in low
friction environment.

11 years agoArtists complaining about these popups
Campbell Barton [Tue, 24 Jun 2008 09:49:29 +0000 (09:49 +0000)]
Artists complaining about these popups
* Nothing indicated - is not helpful, and very annoying with occluded geometry with high poly meshes, sometimes the selection doesn't work 100% of the time and the menu pops up over what you want to select.
* No (correct) camera error doesn't seem to be needed, has been there since rev 2.

11 years agoBGE patch: Add NAND, NOR, XOR, XNOR controllers.
Benoit Bolsee [Mon, 23 Jun 2008 20:41:18 +0000 (20:41 +0000)]
BGE patch: Add NAND, NOR, XOR, XNOR controllers.

NAND controller is an inverted AND controller: the output is
     1 if any of the input is 0.
NOR  controller is an inverted OR controller: the output is 0
     if any of the input is 1.
XOR  controller is an exclusive OR: the output is 1 if and only
     if one input is 1 and all the other inputs are 0.
XNOR controller is an inverted XOR: the output is 0 if and only
     if one input is 0 and all the other inputs are 0.
The NAND, NORT and XNOR controllers are very usefull to create
complementary outputs to start and stop actuators synchronously.
MSCV project files updated.

11 years agoBGE bug fix: action constraints were not correctly copied from Blender to BGE local...
Benoit Bolsee [Mon, 23 Jun 2008 20:29:32 +0000 (20:29 +0000)]
BGE bug fix: action constraints were not correctly copied from Blender to BGE local copy, only the first one was copied

11 years agoBGE patch: Add level option on sensor and fix sensor reset.
Benoit Bolsee [Mon, 23 Jun 2008 20:26:48 +0000 (20:26 +0000)]
BGE patch: Add level option on sensor and fix sensor reset.

Level option is now available on all sensors but is only implemented on
mouse and keyboard sensors. The purpose of that option is to make
the sensor react on level rather than edge by default. It's only
applicable to state engine system when there is a state transition:
the sensor will generate a pulse if the condition is met from the
start of the state. Normally, the keyboard sensor generate a pulse
only when the key is pressed and not when the key is already pressed.
This patch allows to select this behavior.
The second part of the patch corrects the reset method for sensors
with inverted output.

11 years agobugfix [#14796] -t <threads> command line switch doesn't work unless FIXED_THREADS...
Campbell Barton [Mon, 23 Jun 2008 16:47:15 +0000 (16:47 +0000)]
bugfix [#14796] -t <threads> command line switch doesn't work unless FIXED_THREADS has previously been turned on
Command line threads now override blendfile setting in background mode.
Command line Threads greater then 8 are now clamped.

11 years agoBGE patch #14386: Action Actuator Current Frame Prop. This patch is very usefull...
Benoit Bolsee [Mon, 23 Jun 2008 15:32:44 +0000 (15:32 +0000)]
BGE patch #14386: Action Actuator Current Frame Prop.  This patch is very usefull for action feedback logic: a sensor on the property can be used to detect a certain moment in the action and trigger more stuff. The property must be on float type for best results

11 years agoAn initializer line was missing from the beginning of a loop, causing crashes.
Joseph Eagar [Mon, 23 Jun 2008 07:59:26 +0000 (07:59 +0000)]
An initializer line was missing from the beginning of a loop, causing crashes.

11 years ago[#13635] DirectX8Exporter with vertex colors
Campbell Barton [Mon, 23 Jun 2008 00:21:49 +0000 (00:21 +0000)]
[#13635] DirectX8Exporter with vertex colors
patch from Masaru Nemoto (mnemoto)

Made some modifications to the patch, use reduce() to get total face verts and some speedup for face vcol looping, also don't write vcol alpha since its used by brushes internally and has no useful meaning.

11 years agoTransform Snapping
Martin Poirier [Sun, 22 Jun 2008 23:21:29 +0000 (23:21 +0000)]
Transform Snapping

Snap to edges and vertice without have to go through faces.

This means you can import floor plans and use the edges as snapping guides and other sort of fun things.

The bounding box test still needs padding though.

11 years agoMoving Line to Line intersection into arithb
Martin Poirier [Sun, 22 Jun 2008 23:07:42 +0000 (23:07 +0000)]
Moving Line to Line intersection into arithb

11 years ago[#14405] New python Script - Bake Constraints
Campbell Barton [Sun, 22 Jun 2008 22:46:02 +0000 (22:46 +0000)]
[#14405] New python Script - Bake Constraints
AGAIN PLEAST USE TABS, lost quite some time with mixed tab/space adjustments alone.
Other then that, patch is very useful ;)

---Text from patch submission ---
Using a slightly revised BPy_Armature, this script takes any non-armature object type and creates an Action that keys
the object location (by default, for every frame). If it is an Armature, it goes into each bone and keys the locrot
of the bone. You can now edit the armature, but the motions still rotate the bones. This enables the next step, re-targeting,
which changes bone lengths to fit a mesh. High-level, we are working toward:

1. import mocap (bvh or c3d)
2. bake to make an action library (using this script)
3. re-target and use the actions to drive/deform any character mesh (theeth)

11 years ago[#14392] C3D Import
Campbell Barton [Sun, 22 Jun 2008 21:48:02 +0000 (21:48 +0000)]
[#14392] C3D Import
c3d importer for motion capture data
This could do with some improvements but for now its acceptable.
- Note, could people please not mix tabs and spaces.

-Text copied from the patch submission-
The c3d_import with 2.46 was able to import a mocap cloud for some c3d files. I have improved it:
Version History:
 0.4: PERIN Released under Blender Artistic Licence
 0.5: WICKES used marker names, fixed 2.45 depricated call
 0.6: WICKES creates armature for each subject
 0.7: WICKES constrains armature to follow the empties (markers). Verified for shake hands s
 0.8: WICKES resolved DEC support issue

see also http://wiki.blender.org/index.php/Tutorials%5CMoCap-Section_3 for how this program gets the mocap data into
Blender and creates an armature, like the BVH script does.

I'd like someone to test and verify, and if accepted, replace the current c3d_import.py

--- See patch url for example files http://projects.blender.org/tracker/index.php?func=detail&aid=14392&group_id=9&atid=127

11 years ago== Sequencer ==
Peter Schlaile [Sun, 22 Jun 2008 20:59:29 +0000 (20:59 +0000)]
== Sequencer ==

Renamed Filter-Y to De-Interlace and moved F-Key to D-Key.
(Also added file reload on D-Key)

11 years ago[#14398] In Object- and EditMode, global rotate manual input is different than mouse
Martin Poirier [Sun, 22 Jun 2008 20:40:13 +0000 (20:40 +0000)]
[#14398] In Object- and EditMode, global rotate manual input is different than mouse

The sign of the rotation angle was sometimes different between num input and mouse input.

11 years ago== FFMPEG ==
Peter Schlaile [Sun, 22 Jun 2008 20:39:41 +0000 (20:39 +0000)]
== FFMPEG ==

Added serious interlacing to movies opened using ffmpeg.
(Other video decoders to be done)

Rational: deinterlacing, if done seriously _has_ to be done
in YUV-space. Since internal interface first converts data
to RGB we are pretty much lost (and fall back to IMB_filtery
in that case).

11 years agobugfix, Shift+H would hide unselected objects on unseen layers.
Campbell Barton [Sun, 22 Jun 2008 19:34:18 +0000 (19:34 +0000)]
bugfix, Shift+H would hide unselected objects on unseen layers.

11 years ago== Redcode ==
Peter Schlaile [Sun, 22 Jun 2008 15:48:12 +0000 (15:48 +0000)]
== Redcode ==

Doing image comparison revealed, that Kb = Kr = 0.0 for redcode :)

11 years agoBGE patch: add state engine support in the logic bricks.
Benoit Bolsee [Sun, 22 Jun 2008 14:23:57 +0000 (14:23 +0000)]
BGE patch: add state engine support in the logic bricks.

This patch introduces a simple state engine system with the logic bricks. This system features full
backward compatibility, multiple active states, multiple state transitions, automatic disabling of
sensor and actuators, full GUI support and selective display of sensors and actuators.
Note: Python API is available but not documented yet. It will be added asap.

State internals
===============
The state system is object based. The current state mask is stored in the object as a 32 bit value;
each bit set in the mask is an active state. The controllers have a state mask too but only one bit
can be set: a controller belongs to a single state. The game engine will only execute controllers
that belong to active states. Sensors and actuators don't have a state mask but are effectively
attached to states via their links to the controllers. Sensors and actuators can be connected to more
than one state. When a controller becomes inactive because of a state change, its links to sensors
and actuators are temporarily broken (until the state becomes active again). If an actuator gets isolated,
i.e all the links to controllers are broken, it is automatically disabled. If a sensor gets isolated,
the game engine will stop calling it to save CPU. It will also reset the sensor internal state so that
it can react as if the game just started when it gets reconnected to an active controller. For example,
an Always sensor in no pulse mode that is connected to a single state (i.e connected to one or more
controllers of a single state) will generate a pulse each time the state becomes active. This feature is
not available on all sensors, see the notes below.

GUI
===
This system system is fully configurable through the GUI: the object state mask is visible under the
object bar in the controller's colum as an array of buttons just like the 3D view layer mask.
Click on a state bit to only display the controllers of that state. You can select more than one state
with SHIFT-click. The All button sets all the bits so that you can see all the controllers of the object.
The Ini button sets the state mask back to the object default state. You can change the default state
of object by first selecting the desired state mask and storing using the menu under the State button.
If you define a default state mask, it will be loaded into the object state make when you load the blend
file or when you run the game under the blenderplayer. However, when you run the game under Blender,
the current selected state mask will be used as the startup state for the object. This allows you to test
specific state during the game design.

The controller display the state they belong to with a new button in the controller header. When you add
a new controller, it is added by default in the lowest enabled state. You can change the controller state
by clicking on the button and selecting another state. If more than one state is enabled in the object
state mask, controllers are grouped by state for more readibility.

The new Sta button in the sensor and actuator column header allows you to display only the sensors and
actuators that are linked to visible controllers.

A new state actuator is available to modify the state during the game. It defines a bit mask and
the operation to apply on the current object state mask:

Cpy: the bit mask is copied to the object state mask.
Add: the bits that set in the bit mask will be turned on in the object state mask.
Sub: the bits that set in the bit mask will be turned off in the object state mask.
Inv: the bits that set in the bit mask will be inverted in the objecyy state mask.

Notes
=====
- Although states have no name, a simply convention consists in using the name of the first controller
  of the state as the state name. The GUI will support that convention by displaying as a hint the name
  of the first controller of the state when you move the mouse over a state bit of the object state mask
  or of the state actuator bit mask.
- Each object has a state mask and each object can have a state engine but if several objects are
  part of a logical group, it is recommended to put the state engine only in the main object and to
  link the controllers of that object to the sensors and actuators of the different objects.
- When loading an old blend file, the state mask of all objects and controllers are initialized to 1
  so that all the controllers belong to this single state. This ensures backward compatibility with
  existing game.
- When the state actuator is activated at the same time as other actuators, these actuators are
  guaranteed to execute before being eventually disabled due to the state change. This is useful for
  example to send a message or update a property at the time of changing the state.
- Sensors that depend on underlying resource won't reset fully when they are isolated. By the time they
  are acticated again, they will behave as follow:
  * keyboard sensor: keys already pressed won't be detected. The keyboard sensor is only sensitive
    to new key press.
  * collision sensor: objects already colliding won't be detected. Only new collisions are
    detected.
  * near and radar sensor: same as collision sensor.

11 years agoCompiler warning fixes (part 1 or 2)
Joshua Leung [Sun, 22 Jun 2008 01:56:11 +0000 (01:56 +0000)]
Compiler warning fixes (part 1 or 2)

11 years agoBugfix:
Joshua Leung [Sun, 22 Jun 2008 01:31:29 +0000 (01:31 +0000)]
Bugfix:

Update-automatically option in IPO-Editor now updates objects using the active IPO-block as their ObAction when transforming keyframes.

11 years ago* Documented that get/setOrientation use an inverted rotation matrix
Campbell Barton [Fri, 20 Jun 2008 20:54:29 +0000 (20:54 +0000)]
* Documented that get/setOrientation use an inverted rotation matrix
* OB prefix is needed when specifying the object for the Message Actuator, this is very bad since other object fields in the BGE dont need this prefix - a real fix would need do_versions to keep old files running.
* RotationMatrix was all nans if the rotation vector axis was 0,0,0, Changed so in this case just return a matrix that doesn't rotate anything,

spent some angry hours to find these issues, maybe this will save others the hassle ;)

11 years agoBGE bug fix for new shape action: mesh with multiple materials did not deform properly
Benoit Bolsee [Thu, 19 Jun 2008 14:40:46 +0000 (14:40 +0000)]
BGE bug fix for new shape action: mesh with multiple materials did not deform properly

11 years agoJust make gcc compiler happy (stupid harmless warning)
Daniel Genrich [Thu, 19 Jun 2008 13:41:06 +0000 (13:41 +0000)]
Just make gcc compiler happy (stupid harmless warning)

11 years agoBGE patch #13625: getLinearVelocity() rewrite to use only vector and matrix operations
Benoit Bolsee [Wed, 18 Jun 2008 21:22:17 +0000 (21:22 +0000)]
BGE patch #13625: getLinearVelocity() rewrite to use only vector and matrix operations

11 years ago== VRML97 exporter ==
Chris Want [Wed, 18 Jun 2008 21:16:29 +0000 (21:16 +0000)]
== VRML97 exporter ==

Faulty indentation of a line sometimes caused a bunch of empty lines to
be printed into the TextureCoordinate and texCoodIndex fields
(benign error, just ugly).

11 years ago== VRML97 export ==
Chris Want [Wed, 18 Jun 2008 19:58:05 +0000 (19:58 +0000)]
== VRML97 export ==

Don't export vertex colors if a mesh doesn't have any (even if a
texface has 'shared cols' set).

11 years ago== VRML97 export ==
Chris Want [Wed, 18 Jun 2008 17:13:33 +0000 (17:13 +0000)]
== VRML97 export ==

Patch #10569 from Michalis Kamburelis (sorry for the delay).

This patch adds a popup menu that lets the user choose whether
they want to export selected, whether thay wanted to export
compressed, and whether they want to export the file from
blender's "Z up" coordinates to VRML's "Y up".

I'm not too crazy about the caching to disk of these options
via GetRegistry/SetRegistry, but since this seems to occur
in many of the other export scripts I'll leave it as is.

11 years agoPatch #8882 - Falloff in the wave modifier
Ben Batt [Wed, 18 Jun 2008 15:22:42 +0000 (15:22 +0000)]
Patch #8882 - Falloff in the wave modifier
This patch adds the ability to specify a falloff radius in the Wave modifier.
Currently only linear falloff is supported.

Thanks to Michael Fox for the patch!

11 years ago* Fix for a crash in game engine vertex array drawing with texfaces.
Brecht Van Lommel [Wed, 18 Jun 2008 10:30:14 +0000 (10:30 +0000)]
* Fix for a crash in game engine vertex array drawing with texfaces.
* For 2D filters, don't require opengl 2.0 but just the extensions,
  so it works on computers without full 2.0 support too.
* In debug mode, don't print memory statistics for preview render.

11 years agoSmall fix to be able to compile Blender.
Jiri Hnidek [Wed, 18 Jun 2008 09:52:31 +0000 (09:52 +0000)]
Small fix to be able to compile Blender.

11 years agobugfix, BGE, use vec.safe_normalized() rather then vec.normalized() because in some...
Campbell Barton [Wed, 18 Jun 2008 09:06:51 +0000 (09:06 +0000)]
bugfix, BGE, use vec.safe_normalized() rather then vec.normalized() because in some cases the ray_cast sensor could crash blender.

11 years agoForgot to set Id property on new shape action files
Benoit Bolsee [Wed, 18 Jun 2008 07:03:47 +0000 (07:03 +0000)]
Forgot to set Id property on new shape action files

11 years agoBGE Patch: Add Shape Action support and update MSCV_7 project file for glew.
Benoit Bolsee [Wed, 18 Jun 2008 06:46:49 +0000 (06:46 +0000)]
BGE Patch: Add Shape Action support and update MSCV_7 project file for glew.

Shape Action are now supported in the BGE. A new type of actuator "Shape Action" is available on mesh objects. It can be combined with Action actuator on parent armature. Only relative keys are supported. All the usual action options are available: type, blending, priority, Python API. Only actions with shape channels should be specified of course, otherwise the actuator has no effect. Shape action will still work after a mesh replacement provided that the new mesh has compatible shape keys.

11 years ago[#14400] Crash on grab/move on axis when nothing selected (patch included)
Martin Poirier [Tue, 17 Jun 2008 21:17:11 +0000 (21:17 +0000)]
[#14400] Crash on grab/move on axis when nothing selected (patch included)

I used a different fix than the included patch, but that was a pretty nasty crasher (only crash on menu/toolbox, not hotkeys).

11 years agoMerge of apricot branch game engine changes into trunk, excluding GLSL.
Brecht Van Lommel [Tue, 17 Jun 2008 10:27:34 +0000 (10:27 +0000)]
Merge ... apricot branch game engine changes into trunk, excluding GLSL.

GLEW
====

Added the GLEW opengl extension library into extern/, always compiled
into Blender now. This is much nicer than doing this kind of extension
management manually, and will be used in the game engine, for GLSL, and
other opengl extensions.

* According to the GLEW website it works on Windows, Linux, Mac OS X,
  FreeBSD, Irix, and Solaris. There might still be platform specific
  issues due to this commit, so let me know and I'll look into it.
* This means also that all extensions will now always be compiled in,
  regardless of the glext.h on the platform where compilation happens.

Game Engine
===========

Refactoring of the use of opengl extensions and other drawing code
in the game engine, and cleaning up some hacks related to GLSL
integration. These changes will be merged into trunk too after this.

The game engine graphics demos & apricot level survived my tests,
but this could use some good testing of course.

For users: please test with the options "Generate Display Lists" and
"Vertex Arrays" enabled, these should be the fastest and are supposed
to be "unreliable", but if that's the case that's probably due to bugs
that can be fixed.

* The game engine now also uses GLEW for extensions, replacing the
  custom opengl extensions code that was there. Removes a lot of
  #ifdef's, but the runtime checks stay of course.
* Removed the WITHOUT_GLEXT environment variable. This was added to
  work around a specific bug and only disabled multitexturing anyway.
  It might also have caused a slowdown since it was retrieving the
  environment variable for every vertex in immediate mode (bug #13680).

* Refactored the code to allow drawing skinned meshes with vertex
  arrays too, removing some specific immediate mode drawing functions
  for this that only did extra normal calculation. Now it always splits
  vertices of flat faces instead.
* Refactored normal recalculation with some minor optimizations,
  required for the above change.
* Removed some outdated code behind the __NLA_OLDDEFORM #ifdef.
* Fixed various bugs in setting of multitexture coordinates and vertex
  attributes for vertex arrays. These were not being enabled/disabled
  correct according to the opengl spec, leading to crashes. Also tangent
  attributes used an immediate mode call for vertex arrays, which can't
  work.
* Fixed use of uninitialized variable in RAS_TexVert.
* Exporting skinned meshes was doing O(n^2) lookups for vertices and
  deform weights, now uses same trick as regular meshes.

11 years agoUse the scenes framerate for ipo and action framerate in the game engine, was hard...
Campbell Barton [Tue, 17 Jun 2008 10:06:38 +0000 (10:06 +0000)]
Use the scenes framerate for ipo and action framerate in the game engine, was hard coded to 25.

11 years ago* Simple addition to math node (comp and shading): Greater Than and Less Than modes.
Matt Ebb [Tue, 17 Jun 2008 04:18:34 +0000 (04:18 +0000)]
* Simple addition to math node (comp and shading): Greater Than and Less Than modes.

11 years ago[#11456] New datablock type(s) added to Oops Schematic
Campbell Barton [Mon, 16 Jun 2008 19:54:43 +0000 (19:54 +0000)]
[#11456] New datablock type(s) added to Oops Schematic
patch from Shawn Zilbert (enigmatic)

This patch adds the camera data block type to the oops schematic view of the outliner. It also includes a little bit of code cleanup in the oops files.

11 years agoSnapping
Martin Poirier [Mon, 16 Jun 2008 16:48:09 +0000 (16:48 +0000)]
Snapping

Snap to cage only in edit mode (respect the edit cage flag of modifiers).

Especially important for subsurf, otherwise, Andy's automerge + snap video doesn't work in current SVN.

11 years agobugfix from Markus Ilmola (glome)
Campbell Barton [Mon, 16 Jun 2008 14:08:24 +0000 (14:08 +0000)]
bugfix from Markus Ilmola (glome)
patch was in [#8540] Import scripts for MilkShape3D file formats

Some animations were incorrectly imported and this adds support for weights.

11 years agoMaterial color was always overriding OBCOL for blender text.
Campbell Barton [Mon, 16 Jun 2008 09:16:04 +0000 (09:16 +0000)]
Material color was always overriding OBCOL for blender text.

11 years agoPatch [#13777]
Diego Borghetti [Mon, 16 Jun 2008 07:15:09 +0000 (07:15 +0000)]
Patch [#13777]

This commit fix the following problem in the DPX code:

1) The code always assume a depth of 10 bits
2) The code don't check the file type (Log or Linear)

11 years ago[#13691] apricot Snap didn’t work correct in svn
Martin Poirier [Sun, 15 Jun 2008 17:54:42 +0000 (17:54 +0000)]
[#13691] apricot Snap didn’t work correct in svn

1. Updated selected restriction to not be so stingy. Snapping on edges and vertices work if they are part of a partially moving face

2. Change depth ordering (which didn't work all the time). Hits are sorted according to 2D distance and then depth, so for overlapping hits, it picks the one in front.

11 years agoPatch [#13668] Tool tip correction
Martin Poirier [Sun, 15 Jun 2008 14:22:12 +0000 (14:22 +0000)]
Patch [#13668] Tool tip correction

By Olivier Saraja

11 years agoWhitespace commit in armature.c
Joshua Leung [Sun, 15 Jun 2008 10:19:38 +0000 (10:19 +0000)]
Whitespace commit in armature.c

11 years agobugfix, clip alpha wasn't working in the GE, not happy with these functions, they...
Campbell Barton [Sun, 15 Jun 2008 09:43:24 +0000 (09:43 +0000)]
bugfix, clip alpha wasn't working in the GE, not happy with these functions, they probably need bigger changes not to assume all alpha requires face sorting with a disabled depth buffer,

11 years agobugfix, simple crash in drawaction
Campbell Barton [Sun, 15 Jun 2008 08:56:11 +0000 (08:56 +0000)]
bugfix, simple crash in drawaction

11 years agoBGE patch: support Set Scene in BGE. Linked Set Scene should have no name conflict...
Benoit Bolsee [Sat, 14 Jun 2008 20:42:15 +0000 (20:42 +0000)]
BGE patch: support Set Scene in BGE. Linked Set Scene should have no name conflict in Object, Object data and Action of the main scene to avoid confusion in Python scripting. Nested Set Scene are supported. You will need Python scripting to create cross references between objects in the main scene and the Set (e.g TrackTo actuator)

11 years agofix for ndof inconsistencies, bug #13954
Jean-Luc Peurière [Sat, 14 Jun 2008 18:57:42 +0000 (18:57 +0000)]
fix for ndof inconsistencies, bug #13954

patch provided by Ettore Pasquini

11 years agoAdded access for adjusting timeOffset value at runtime, used for apricot (Franky...
Campbell Barton [Sat, 14 Jun 2008 17:12:49 +0000 (17:12 +0000)]
Added access for adjusting timeOffset value at runtime, used for apricot (Franky climbing walls)

11 years agobugfix for memory corruption caused by BLI_cleanup_file on paths that went too far...
Campbell Barton [Sat, 14 Jun 2008 16:54:46 +0000 (16:54 +0000)]
bugfix for memory corruption caused by BLI_cleanup_file on paths that went too far back.
/a/b/../../../ - problematic
/a/b/c/../../../ - ok
Also got rid of warnings in shadbuf.c with GET_INT_FROM_POINTER

11 years agoBugfix:
Joshua Leung [Sat, 14 Jun 2008 03:00:38 +0000 (03:00 +0000)]
Bugfix:

Campbell's recent commit to fix game-engine pose/ipo corruption was causing segfaults with duplicating armatures.

11 years agoSome pose action ipo corruptions when using BGE, added some debug printf's when copyi...
Campbell Barton [Fri, 13 Jun 2008 02:20:09 +0000 (02:20 +0000)]
Some pose action ipo corruptions when using BGE, added some debug printf's when copying to/from the same pose since it should never happen.

11 years agoUpdate MSVC project files
Benoit Bolsee [Thu, 12 Jun 2008 21:17:02 +0000 (21:17 +0000)]
Update MSVC project files

11 years agoWhen your home directory is full, saving defaults would fail without raising an error.
Campbell Barton [Thu, 12 Jun 2008 16:29:00 +0000 (16:29 +0000)]
When your home directory is full, saving defaults would fail without raising an error.
checked all others instances of BLO_write_file give errors too.
When autosave fails it reports an error in the console so its not too annoying.

11 years agoPatch #8613 - Vertex groups in the mirror modifier.
Ben Batt [Thu, 12 Jun 2008 15:43:55 +0000 (15:43 +0000)]
Patch #8613 - Vertex groups in the mirror modifier.
This patch re-assigns the mirrored data to use vertex groups with "mirrored"
names (e.g. L_arm -> R_arm, Leg.R -> Leg.L etc.). Vertex groups with the
"mirrored" names must already exist in the base mesh.

This means that it is no longer necessary to apply the mirror modifier in order
to rig the mirrored data independently.

Thanks to Michael Fox for the patch!

11 years agodidnt name the smooth curve menu item.
Campbell Barton [Thu, 12 Jun 2008 15:00:07 +0000 (15:00 +0000)]
didnt name the smooth curve menu item.

11 years agoCurve Smoorth for venomgfx adjusting animation paths over terrain.
Campbell Barton [Thu, 12 Jun 2008 14:46:32 +0000 (14:46 +0000)]
Curve Smoorth for venomgfx adjusting animation paths over terrain.

11 years agoFix for commit revision 15197, missing braces caused some shortcut
Brecht Van Lommel [Wed, 11 Jun 2008 20:15:47 +0000 (20:15 +0000)]
Fix for commit revision 15197, missing braces caused some shortcut
keys not to work anymore.