11 years agosoc-2008-mxcurioni: made considerable changes to support cross-language polymorphism...
Maxime Curioni [Fri, 1 Aug 2008 21:55:58 +0000 (21:55 +0000)]
soc-2008-mxcurioni: made considerable changes to support cross-language polymorphism for UnaryFunction0D, Interface0D, Interface1D. Add to change UnaryFunction1D<void> to static UnaryFunction1D_void. Resolved namespace collision on the Image class (changed to FrsImage). There is greater support for style modules but somehow, some do not show anything yet (japanese_bigbrush being an example).

11 years agosoc-2008-mxcurioni: clean-up #2
Maxime Curioni [Fri, 1 Aug 2008 02:25:21 +0000 (02:25 +0000)]
soc-2008-mxcurioni: clean-up #2

11 years agosoc-2008-mxcurioni: clean-up #1
Maxime Curioni [Fri, 1 Aug 2008 02:16:36 +0000 (02:16 +0000)]
soc-2008-mxcurioni: clean-up #1

11 years agosoc-2008-mxcurioni: moved Curve to FrsCurve, fixed bugs with some style modules havin...
Maxime Curioni [Fri, 1 Aug 2008 02:15:25 +0000 (02:15 +0000)]
soc-2008-mxcurioni: moved Curve to FrsCurve, fixed bugs with some style modules having with strokes without a representation and iterators not being correctly routed. For example, the cartoon style module should work now.

11 years agosoc-2008-mxcurioni: moved namespace collision resolution to the
Maxime Curioni [Thu, 31 Jul 2008 11:59:06 +0000 (11:59 +0000)]
soc-2008-mxcurioni: moved namespace collision resolution to the (for Curve, Material and Noise)

11 years agosoc-2008-mxcurioni: added a Freestyle panel to select a style at run-time, by specify...
Maxime Curioni [Thu, 31 Jul 2008 11:20:30 +0000 (11:20 +0000)]
soc-2008-mxcurioni: added a Freestyle panel to select a style at run-time, by specifying its pathname. By default, it is loaded with the path.

11 years agosoc-2008-mxcurioni: the native Python system now supports cross-language polymorphism...
Maxime Curioni [Thu, 31 Jul 2008 08:50:12 +0000 (08:50 +0000)]
soc-2008-mxcurioni: the native Python system now supports cross-language polymorphism for the following classes: BinaryPredicate0D (__call__), BinaryPredicate1D (__call__), UnaryPredicate0D (__call__), UnaryPredicate1D (__call__), StrokeShader (shade), ChainingIterator (init, traverse).

Other methods could easily be supported in the future. The method now works as planned for the contour style. For style modules with Python shaders, there still is a problem that I will fix right away.

11 years agosoc-2008-mxcurioni: Tested SWIG-less environment more and understood why the former...
Maxime Curioni [Wed, 30 Jul 2008 01:51:40 +0000 (01:51 +0000)]
soc-2008-mxcurioni: Tested SWIG-less environment more and understood why the former predicate methods were not working. As St├ęphane had mentioned a few months ago, Freestyle uses SWIG directors to provide cross-language polymorphism. The API and the system I had provided did not support that feature and only implementations in C++ were supported. To correct the problem, after researching how directors are implemented in SWIG, I provided the same functionality. So far, I only provided the code for the UnaryPredicate1D class and it works. The implementation is in intern/python/Director.cpp and Operators.cpp. I will port the remaining directors tonight and continue to test it.

To prevent strokes from piling up after each render,  I clear the canvas at each render now (as it should have been all along)

11 years agosoc-2008-mxcurioni: corrected problems in API with UnaryFunction1DVoid subclasses...
Maxime Curioni [Tue, 29 Jul 2008 11:19:30 +0000 (11:19 +0000)]
soc-2008-mxcurioni: corrected problems in API with UnaryFunction1DVoid subclasses and Curvature2DAngleF1D. Understood that Curve and Noise classes cannot be defined in Freestyle's API because they are already given by Blender's API. Will rename to FrsCurve and FrsNoise and change the corresponding style modules.

11 years agosoc-2008-mxcurioni: SWIG replacement is effective and the native Freestyle API render...
Maxime Curioni [Tue, 29 Jul 2008 10:45:06 +0000 (10:45 +0000)]
soc-2008-mxcurioni: SWIG replacement is effective and the native Freestyle API renders a correct result for the test style module ''. More testing needs to be done to make sure my work was correct.

To make it work, I had to:
- update Operators to include all of its methods in the Python API
- redefine the Freestyle modules as local classes, allowing predicates to support the __call__ method (I found out that Python does not allow modules to be callable). The API is defined in the new  file.
- remove all references to former Python Freestyle API (located in source/blender/freestyle/python/, under the file) and replace it with the new API file.
- normalize all constants related to the Nature class
- redefine the file so that AndUP1D, OrUP1D and NotUP1D would be subclasses of a UnaryPredicate1D subclass having a operator() implementation. Using UnaryPredicate1D as a superclass would somehow prevent calls to the operator(). For the time being, I chose ContourUP1D (even though it does not really matter which subclass it is, since the __call__ method is redefined in all of these classes). I will implement this classes in C++ to get rid of the problem altogether.
- turn off a few classes that somehow are not well recognized (Noise, Curve...). I will reenable them later once I understand what's going on.

11 years agosoc-2008-mxcurioni: SWIG replacement is effective and the native Freestyle API render...
Maxime Curioni [Tue, 29 Jul 2008 10:42:10 +0000 (10:42 +0000)]
soc-2008-mxcurioni: SWIG replacement is effective and the native Freestyle API renders a correct result for the test style module ''. More testing needs to be done to make sure my work was correct.

To make it work, I had to:
- update Operators to include all of its methods in the Python API
- redefine the Freestyle modules as local classes, allowing predicates to support the __call__ method (I found out that Python does not allow modules to be callable). The API is defined in the new  file.
- remove all references to former Python Freestyle API (located in source/blender/freestyle/python/, under the file) and replace it with the new API file.
- normalize all constants related to the Nature class
- redefine the file so that AndUP1D, OrUP1D and NotUP1D would be subclasses of a UnaryPredicate1D subclass having a operator() implementation. Using UnaryPredicate1D as a superclass would somehow prevent calls to the operator(). For the time being, I chose ContourUP1D (even though it does not really matter which subclass it is, since the __call__ method is redefined in all of these classes). I will implement this classes in C++ to get rid of the problem altogether.
- turn off a few classes that somehow are not well recognized (Noise, Curve...). I will reenable them later once I understand what's going on.

11 years agosoc-2008-mxcurioni: finished porting the Freestyle API. All of the original classes...
Maxime Curioni [Tue, 29 Jul 2008 05:45:16 +0000 (05:45 +0000)]
soc-2008-mxcurioni: finished porting the Freestyle API. All of the original classes, except EdgeModifier and TimestampModifier (which aren't even ported via SWIG), are available under the Blender.Freestyle module. Testing of the porting will now begin to make sure the SWIG-less system works as the original.

Quite a few modifications were made to finish the API:
- Freestyle's SConscript was modified to catch all files within the intern/python directory, allowing integration of future shaders implemented in C++.
- the Operators class was ported, with a special care of making its methods static (using the METH_STATIC flag in the tp_methods method definitions)
- all of the type-checking functions [ BPy_[class name]_Check(obj) ] were changed to allow subclasses to be seen as that type too: instead on looking at the ob_type value, the PyObject_IsInstance function is used.
- all of the iterators can now retrieve the object pointed to by the operator, using the getObject() method. A directedViewEdge pair is returned as a list of the two elements in the pair.
- all of the style modules were copied to a style_modules_blender/ folder and were modified to use Freestyle as a Blender's submodule. IntegrationType and MediumType was also integrated (for example, changing MEAN to IntegrationType.MEAN).

Testing now begins. If everything works correctly, I'll move on to lib3ds removal right away.

11 years ago soc-2008-mxcurioni: add all predicate subclasses( BinaryPredicate1D, UnaryPredicate...
Maxime Curioni [Mon, 28 Jul 2008 22:53:42 +0000 (22:53 +0000)]
 soc-2008-mxcurioni: add all predicate subclasses( BinaryPredicate1D, UnaryPredicate{0D,1D} ).

There is just one more class remaining to port (and probably the most important): Operators. After that, I'll be able to test whether Freestyle functions well without SWIG.

11 years agosoc-2008-mxcurioni: implemented and integrated all 21 original stroke shaders.
Maxime Curioni [Sun, 27 Jul 2008 13:40:33 +0000 (13:40 +0000)]
soc-2008-mxcurioni: implemented and integrated all 21 original stroke shaders.

11 years agosoc-2008-mxcurioni: ported ALL 1D unary functions, representing 32 new classes.
Maxime Curioni [Sun, 27 Jul 2008 11:27:59 +0000 (11:27 +0000)]
soc-2008-mxcurioni: ported ALL 1D unary functions, representing 32 new classes.

11 years agosoc-2008-mxcurioni: ported ALL 0D unary functions, representing 34 new classes. I...
Maxime Curioni [Sun, 27 Jul 2008 06:57:46 +0000 (06:57 +0000)]
soc-2008-mxcurioni: ported ALL 0D unary functions, representing 34 new classes. I will do the same for the 1D unary functions.

11 years agosoc-2008-mxcurioni: implemented and tested unary predicates. The good news is that...
Maxime Curioni [Sun, 27 Jul 2008 03:40:37 +0000 (03:40 +0000)]
soc-2008-mxcurioni: implemented and tested unary predicates. The good news is that My approach seems to works (even though it is not fully testable as it needs Freestyle to be running). I will now port the 80 predicate subclasses left.

In this commit, UnaryPredicate0DDouble and its subclasses DensityF0D and LocalAverageDepthF0D are implemented and integrated in the API.

11 years agosoc-2008-mxcurioni: added (but did not test) ViewMap and Noise classes. Updated ViewS...
Maxime Curioni [Sat, 26 Jul 2008 21:47:39 +0000 (21:47 +0000)]
soc-2008-mxcurioni: added (but did not test) ViewMap and Noise classes. Updated ViewShape class accordingly

11 years agosoc-2008-mxcurioni: implemented (but did not test) ChainPredicateIterator and ChainSi...
Maxime Curioni [Sat, 26 Jul 2008 20:05:55 +0000 (20:05 +0000)]
soc-2008-mxcurioni: implemented (but did not test) ChainPredicateIterator and ChainSilhouetteIterator

11 years agosoc-2008-mxcurioni: completed implementing ViewEdgeIterator and ChainingIterator...
Maxime Curioni [Sat, 26 Jul 2008 19:32:47 +0000 (19:32 +0000)]
soc-2008-mxcurioni: completed implementing ViewEdgeIterator and ChainingIterator. Updated UnaryPredicate{0D,1D}

11 years agosoc-2008-mxcurioni: implemented (but did not test) the following classes: Material...
Maxime Curioni [Sat, 26 Jul 2008 02:33:21 +0000 (02:33 +0000)]
soc-2008-mxcurioni: implemented (but did not test) the following classes: Material, Chain, FEdgeSharp, FEdgeSmooth. All Interface1D classes have now been fully implemented.

11 years agosoc-2008-mxcurioni: added (but did not test) NonTVertex and TVertex classes. All...
Maxime Curioni [Fri, 25 Jul 2008 21:56:06 +0000 (21:56 +0000)]
soc-2008-mxcurioni: added (but did not test) NonTVertex and TVertex classes. All Interface0D structures have been implemented

11 years agosoc-2008-mxcurioni: fully implemented (but did not test) Curve class.
Maxime Curioni [Fri, 25 Jul 2008 02:18:02 +0000 (02:18 +0000)]
soc-2008-mxcurioni: fully implemented (but did not test) Curve class.

11 years agosoc-2008-mxcurioni: fully implemented (but did not test) ViewEdge class. Modified...
Maxime Curioni [Fri, 25 Jul 2008 01:38:19 +0000 (01:38 +0000)]
soc-2008-mxcurioni: fully implemented (but did not test) ViewEdge class. Modified functions accross API taking input boolean values.

11 years agosoc-2008-mxcurioni: Added iterator capability to FEdge and Stroke. Recoded parts...
Maxime Curioni [Fri, 25 Jul 2008 00:18:10 +0000 (00:18 +0000)]
soc-2008-mxcurioni: Added iterator capability to FEdge and Stroke. Recoded parts of ViewVertex, SVertex and Convert to support these changes.

11 years agosoc-2008-mxcurioni: found and fixed all potential issues iterating over internal...
Maxime Curioni [Thu, 24 Jul 2008 21:32:50 +0000 (21:32 +0000)]
soc-2008-mxcurioni: found and fixed all potential issues iterating over internal view-map data. The internal namespaces (ViewEdgeInternal, ViewVertexInternal, CurveInternal, StrokeInternal...) should NOT be included to prevent redefintion errors.

11 years agosoc-2008-mxcurioni: cleaned up the Convert header file to prevent cyclic or header...
Maxime Curioni [Thu, 24 Jul 2008 20:39:13 +0000 (20:39 +0000)]
soc-2008-mxcurioni: cleaned up the Convert header file to prevent cyclic or header positioning problems and adapted classes accordingly

11 years agosoc-2008-mxcurioni: added (without testing) the following classes: BBox, SShape,...
Maxime Curioni [Thu, 24 Jul 2008 08:29:48 +0000 (08:29 +0000)]
soc-2008-mxcurioni: added (without testing) the following classes: BBox, SShape, ViewShape. Also corrected a few typos (Get#->get#).

11 years agosoc-2008-mxcurioni: Added first batch of Iterators: AdjacencyIterator, Interface0DIt...
Maxime Curioni [Thu, 24 Jul 2008 04:48:34 +0000 (04:48 +0000)]
soc-2008-mxcurioni: Added first batch of Iterators: AdjacencyIterator,  Interface0DIterator, CurvePointIterator, StrokeVertexIterator,  SVertexIterator, orientedViewEdgeIterator.

11 years agosoc-2008-mxcurioni: added Iterator class, base class for all iterators in Freestyle...
Maxime Curioni [Wed, 23 Jul 2008 10:19:08 +0000 (10:19 +0000)]
soc-2008-mxcurioni: added Iterator class, base class for all iterators in Freestyle (on the C++ side). Created the equivalent in Python BPy_Iterator with the simple interface:
- getExactTypeName()
- increment()
- decrement()
- isBegin()
- isEnd()

Contrary to previously stated, I am reverting back to implementing iterators in the (Python) API, for different reasons:
- it will make testing quicker to achieve, as I won't have to recode a big chunk of the original Python files
- it will be a base for API refactoring
- it won't prevent the use a list-based approach later (it is simple to get it from the Iterator)

11 years agosoc-2008-mxcurioni: renamed all Freestyle API related files with 'BPy_' prefix to...
Maxime Curioni [Wed, 23 Jul 2008 07:56:08 +0000 (07:56 +0000)]
soc-2008-mxcurioni: renamed all Freestyle API related files with 'BPy_' prefix to avoid library name collision.

Included MediumType's initialization at proper time to avoid Blender's crash.

11 years agosoc-2008-mxcurioni: merged changes to revision 15705
Maxime Curioni [Wed, 23 Jul 2008 06:02:18 +0000 (06:02 +0000)]
soc-2008-mxcurioni: merged changes to revision 15705

11 years agosoc-2008-mxcurioni: implemented (without testing) StrokeShader, Stroke and MediumType...
Maxime Curioni [Wed, 23 Jul 2008 05:54:34 +0000 (05:54 +0000)]
soc-2008-mxcurioni: implemented (without testing) StrokeShader, Stroke and MediumType (used by Stroke to define medium types) classes. The Stroke class is missing the InsertVertex method.

Before porting other classes, I'll resolve the List (Python) <=> Iterator (C++) correspondence problem by implementing a general class appropriately suited for the task.

11 years agosoc-2008-mxcurioni: filled and tested StrokeVertex class
Maxime Curioni [Tue, 22 Jul 2008 08:15:21 +0000 (08:15 +0000)]
soc-2008-mxcurioni: filled and tested StrokeVertex class

11 years agosoc-2008-mxcurioni: corrected StrokeAttribute, verified with test case.
Maxime Curioni [Tue, 22 Jul 2008 00:27:40 +0000 (00:27 +0000)]
soc-2008-mxcurioni: corrected StrokeAttribute, verified with test case.

I realized today that it will not be possible to implement getter/setter functionality easily for our Freestyle API. The reason is that Python does not support function overloading as-is. It is possible to 'fake' overloading by taking a general argument object and count the number of arguments in the object (rgbTuple_setCol in Blender's API is a good example of how to go about it).

For the time being, we'll get around that problem. The tangible effect of that constraint is that all API setter functions return a 'None' PyObject, instead of returning an integer status code. It is important to note that this problem is due to Freestyle's API being C++ in nature. Fortunately, this shouldn't really impact the usage of the API.

If the Blender Python group wants me to correct that, I'll be able to do it. It is just going to take me quite some time correcting it, writing support functions for methods having different types of arguments.

11 years agoAdded StrokeAttribute class. Beginning of StrokeVertex.
Maxime Curioni [Mon, 21 Jul 2008 21:24:37 +0000 (21:24 +0000)]
Added StrokeAttribute class. Beginning of StrokeVertex.

IMPORTANT: The setters functions' names were normalized due to constant confusion regarding capitalization. All the function names start with set... instead of Set.... This convention was changed all throughout Freestyle. To use Freestyle as an external renderer, the SWIG library MUST be regenerated.

11 years agosoc-2008-mxcurioni: updated support for Nature class.
Maxime Curioni [Sun, 20 Jul 2008 05:01:29 +0000 (05:01 +0000)]
soc-2008-mxcurioni: updated support for Nature class.

11 years agosoc-2008-mxcurioni: Added IntegrationType and Nature classes, used to store constants...
Maxime Curioni [Fri, 18 Jul 2008 20:31:40 +0000 (20:31 +0000)]
soc-2008-mxcurioni: Added IntegrationType and Nature classes, used to store constants used throughout Freestyle

11 years agosoc-2008-mxcurioni: canvas for UnaryFunction0D, UnaryFunction1D, UnaryPredicate0D...
Maxime Curioni [Fri, 18 Jul 2008 04:59:07 +0000 (04:59 +0000)]
soc-2008-mxcurioni: canvas for  UnaryFunction0D, UnaryFunction1D, UnaryPredicate0D, UnaryPredicate1D.

UnaryFunction0D and UnaryFunction1D implementations are going to be really challenging due to the changes in the infrastructure: UnaryFunction0D<T> and UnaryFunction0D<T> are templates and must be determined for compile-time. The easiest solution is to support each type individually; unfortunately, it removes the benefit of using an interface. To find a middle ground, a general unary function Python object type was created for 0D and 1D. In both cases, the types have a void* pointer keeping the address of the current unary function type. I am not sure yet if it will work.

Interface0DIterator being removed by a list type, the t() and u() coordinate functions will to be transferred somehow, probably directly at the Interface0D level.

11 years agosoc-2008-mxcurioni: FEdge class added. Modifed converting functions to passing-by...
Maxime Curioni [Fri, 18 Jul 2008 02:55:23 +0000 (02:55 +0000)]
soc-2008-mxcurioni: FEdge class added. Modifed converting functions to passing-by-reference format. Improved the type checking for FEdge and CurvePoint. Modified FEdge C++ class to test for null vertices. Updated previous classes to support FEdge.

So far, whenever a Python object is created from its corresponding C++ object, the input object reference is copied into a new object. Due to Freestyle's functions (especially regarding the way it is iterated), it is currently impossible to deal with a pointer-based Python object. It is not a real drawback, just an aspect to keep in mind.

11 years agosoc-2008-mxcurioni: SWIG removal - completed SVertex and CurvePoint classes migration...
Maxime Curioni [Thu, 17 Jul 2008 06:35:30 +0000 (06:35 +0000)]
soc-2008-mxcurioni: SWIG removal - completed SVertex and CurvePoint classes migration. Stabilized a lot of the code for C++ -> Python conversion. Added the correct rich comparison operator and tested it. Corrected 'dupplicate' typo and changde to __copy__ for Python API.

From now on, when a set should be output (PySet_Type), it is given as a list (PyList_Type). The reason is that it doesn't really matter what we bring back to the Python interpreter. The set is guaranteed in memory on the C++ side.

For the CurvePoint class, the userdata variable is not yet ported (and will probably available as a list or a dictionary). The CurvePoint implementation works except for the initialization from other CurvePoints: somehow, the inner variables don't seem to be correctly handled. I do not know if it is a bug in Freestyle or if the CurvePoint object's state is correct for my test case. CurvePoint needs more testing.

11 years agosoc-2008-mxcurioni: reimplemented the initialization/allocation for base classes...
Maxime Curioni [Tue, 15 Jul 2008 05:33:12 +0000 (05:33 +0000)]
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.

To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.

Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:


import Blender
from Blender import Freestyle
from Blender.Freestyle import *

print Interface0D()
print CurvePoint()


The __repr__ method is only implemented in Interface0D:

PyObject * Interface0D___repr__(BPy_Interface0D* self)
   return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}

and the result is of the form:

type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0

As you can see, the correct getExactTypeName of the class is called.

11 years agosoc-2008-mxcurioni: Reimplemented the Freestyle Python API's files to be correctly...
Maxime Curioni [Tue, 15 Jul 2008 01:07:19 +0000 (01:07 +0000)]
soc-2008-mxcurioni: Reimplemented the Freestyle Python API's files to be correctly used as classes and not submodules. Added and integrated object lifecycle functions (__new__, __alloc__, __repr__) for the previous classes: BinaryPredicate0D, BinaryPredicate1D, Id, Interface0D, Interface1D. All of these classes were tested within Blender's Python interpreter with simple test cases and their getter/setters were corrected.

Interface0DIterator was modified to allow BPy_Interface1D to be instantiated: verticesBegin(), verticesEnd(), pointsBegin(float) and pointsEnd(float) are not pure virtual functions anymore. If they are called directly from  BPy_Interface1D (instead of its subclasses), an error message is displayed.

11 years agosoc-2008-mxcurioni: merge with trunk - rev 15540
Maxime Curioni [Sat, 12 Jul 2008 05:02:47 +0000 (05:02 +0000)]
soc-2008-mxcurioni: merge with trunk - rev 15540

11 years agosoc-2008-mxcurioni: first part of the Freestyle Python implementation. A new Freestyl...
Maxime Curioni [Sat, 12 Jul 2008 04:02:08 +0000 (04:02 +0000)]
soc-2008-mxcurioni: first part of the Freestyle Python implementation. A new Freestyle module is added. The following modules are implemented: BinaryPredicate0D, BinaryPredicate1D, Id, Interface0D, Interface1D. I added a Convert module to help in the creation of Python objects for Freestyle's data structures. I also added a missing file for guarded_alloc needed for compilation on Windows.

11 years agoFix for bug [#13479] Particle system "corrupts" when changing material colour and...
Janne Karhu [Fri, 11 Jul 2008 23:47:44 +0000 (23:47 +0000)]
Fix for bug [#13479] Particle system "corrupts" when changing material colour and used in conjunction with softbodies
- changing particlesystem settings for hair particles cleared & recalculated everything even when hair softbody was baked

11 years agoMemory leak fix (found with Valgrind)
Daniel Genrich [Fri, 11 Jul 2008 17:08:45 +0000 (17:08 +0000)]
Memory leak fix (found with Valgrind)

11 years agoMemory leak fix: br_find_exe() uses strdup() which uses malloc and therefore the...
Daniel Genrich [Fri, 11 Jul 2008 14:11:55 +0000 (14:11 +0000)]
Memory leak fix: br_find_exe() uses strdup() which uses malloc and therefore the returned string needs free'ing (Found with valgrind).

11 years agoBugfix #17306: Missing refresh call for button in UserPrefs
Joshua Leung [Fri, 11 Jul 2008 00:36:38 +0000 (00:36 +0000)]
Bugfix #17306: Missing refresh call for button in UserPrefs

Autokey settings were missing redraw for Info-window

11 years agoFix for bug #14411: missing preview render redraw for a few lamp buttons.
Brecht Van Lommel [Thu, 10 Jul 2008 18:11:36 +0000 (18:11 +0000)]
Fix for bug #14411: missing preview render redraw for a few lamp buttons.

11 years agoFix for bug #14665: stars not working in 3D view.
Brecht Van Lommel [Thu, 10 Jul 2008 16:29:42 +0000 (16:29 +0000)]
Fix for bug #14665: stars not working in 3D view.

11 years agoFix for bug #17292: vertex paint blur darkens the colors as you
Brecht Van Lommel [Thu, 10 Jul 2008 15:30:35 +0000 (15:30 +0000)]
Fix for bug #17292: vertex paint blur darkens the colors as you
paint, due to old optimization to use >>8, but this is equivalent
to /256, and it should be /255.

11 years agoAdding an option for action actuator - "Continue" this means animations always play...
Campbell Barton [Thu, 10 Jul 2008 14:23:19 +0000 (14:23 +0000)]
Adding an option for action actuator - "Continue" this means animations always play from where they left off. Continue was the 2.46 operation too, so new functionality is the option to disable.

When using states, an action like kick or throw can often switch out before finishing playing the action, and there was no way to play from the start frame the second time round. (even setting the actions current frame through python doesn't work work)

11 years agoSync with Apricot Game Engine
Brecht Van Lommel [Thu, 10 Jul 2008 12:47:20 +0000 (12:47 +0000)]
Sync with Apricot Game Engine

* Clean up and optimizations in skinned/deformed mesh code.
* Compatibility fixes and clean up in the rasterizer.
* Changes related to GLSL shadow buffers which should have no
  effect, to keep the code in sync with apricot.

11 years agoAutoMerge Keyframes option for Action/NLA editors will now also delete duplicate...
Joshua Leung [Thu, 10 Jul 2008 01:47:51 +0000 (01:47 +0000)]
AutoMerge Keyframes option for Action/NLA editors will now also delete duplicate keyframes if a Duplicate (SHIFT-DKEY) operation is cancelled.

11 years ago-> Support for Custom Data in bevel modifier
Geoffrey Bantle [Thu, 10 Jul 2008 00:46:19 +0000 (00:46 +0000)]
-> Support for Custom Data in bevel modifier

Added Customdata to Bmesh <-> derivedmesh functions

11 years agoApricot Request:
Joshua Leung [Thu, 10 Jul 2008 00:15:57 +0000 (00:15 +0000)]
Apricot Request:

When changing the active action in the NLA editor with NLA-override off, armatures now have their restpose applied before the new action is evaluated.

I've commented the code here to make it clearer what is going on.

11 years ago[#17298] surface normal direction compensation for objects with negative scale in...
Campbell Barton [Wed, 9 Jul 2008 19:15:26 +0000 (19:15 +0000)]
[#17298] surface normal direction compensation for objects with negative scale in rendering with radiosity
from Roelf De Kock (kiemdoder)

Fixes bug [#7969] Mirroring Object Breaks Radiosity Calculations

- copied from the tracker.
The code in this patch detects whether an object has negative scale (test the OB_NEG_SCALE bit in Object.transflag)
and then compensate for the negative scale when the surface normals are calculated for a radiosity render.

11 years agoFixed bug #14510 - wave modifier crash
Ben Batt [Wed, 9 Jul 2008 15:54:53 +0000 (15:54 +0000)]
Fixed bug #14510 - wave modifier crash

CDDM_apply_vert_coords needs a CDDerivedMesh, but it was getting a
CCGDerivedMesh from the preceding Subsurf modifier. This fix just makes
a CDDerivedMesh copy of the supplied DerivedMesh rather than using it directly.

11 years agobugfix, vector was not checked for zero length before normalizing, closing blender...
Campbell Barton [Wed, 9 Jul 2008 15:30:15 +0000 (15:30 +0000)]
bugfix, vector was not checked for zero length before normalizing, closing blender instantly with an assert.

11 years agoBuhh... and now I left in testing print in exr code.
Ton Roosendaal [Wed, 9 Jul 2008 15:25:34 +0000 (15:25 +0000)]
Buhh... and now I left in testing print in exr code.

11 years agoReplaced strcasecmp with BLI_strcasecmp, to make msvc happy!
Ton Roosendaal [Wed, 9 Jul 2008 13:12:58 +0000 (13:12 +0000)]
Replaced strcasecmp with BLI_strcasecmp, to make msvc happy!

11 years agoFix for reported openexr file reading failures.
Ton Roosendaal [Wed, 9 Jul 2008 10:51:03 +0000 (10:51 +0000)]
Fix for reported openexr file reading failures.

For simple RGB(A) files, the channel names in openexr were supposed
to be simply "R" "G" "B" and "A" too.
Other programs like other names... like lower case, or like "ambient.r"

Tested with file from renderman.

11 years agoFix for bugfix #12075: gamma node check for nan was always
Brecht Van Lommel [Wed, 9 Jul 2008 10:13:09 +0000 (10:13 +0000)]
Fix for bugfix #12075: gamma node check for nan was always
checking red channel.

11 years agoadded a factor argument for aligning to vector, this isn't correct since it does...
Campbell Barton [Wed, 9 Jul 2008 09:21:52 +0000 (09:21 +0000)]
added a factor argument for aligning to vector, this isn't correct since it does linear interpolation of the vector and renormalizes.
(can be improved to rotate correctly but for our  use ist ok for now, would also be useful to have an argument to clamp the maximum rotation angle to get a constant rotation speed),

This will used to make franky upright when falling from an angle, to track to a surface when hanging onto a ledge and setting the glide pitch.
Without this rotation is instant and jerky.

currently this is done with Mathutils which isnt available in Blender Player.

def do_rotate_up(own):
own.alignAxisToVect([0,0,1], 2, 0.1)


def do_rotate_up(own):
up_nor = Vector(0,0,1)
own_mat = Matrix(*own.getOrientation()).transpose()
own_up = up_nor * own_mat
ang = AngleBetweenVecs(own_up, up_nor)
if ang > 0.005:
# Set orientation
cross = CrossVecs(own_up, up_nor)
new_mat = own_mat * RotationMatrix(ang*0.1, 3, 'r', cross)

M    source/gameengine/Ketsji/KX_GameObject.cpp
M    source/gameengine/Ketsji/KX_GameObject.h

11 years agosoc-mx-2008: SWIG dependency - wrapper functions extracted from ModuleWrapper.cpp
Maxime Curioni [Wed, 9 Jul 2008 08:24:13 +0000 (08:24 +0000)]
soc-mx-2008: SWIG dependency - wrapper functions extracted from ModuleWrapper.cpp

11 years agoexiting wasnt working (was raising errors), also use dict.keys() rather then appendin...
Campbell Barton [Wed, 9 Jul 2008 00:58:57 +0000 (00:58 +0000)]
exiting wasnt working (was raising errors), also use dict.keys() rather then appending from iteritems,

11 years agosoc-2008-mxcurioni: first (blank) file upload for SWIG removal, in source/blender...
Maxime Curioni [Tue, 8 Jul 2008 22:55:00 +0000 (22:55 +0000)]
soc-2008-mxcurioni: first (blank) file upload for SWIG removal, in source/blender/freestyle/intern/python. The migration will be based on source/blender/freestyle/intern/swig/ModuleWrapper.{cpp,h}

11 years agofix for crasher with touch sensor, ben you may want to look at this, should be ok...
Campbell Barton [Tue, 8 Jul 2008 22:43:44 +0000 (22:43 +0000)]
fix for crasher with touch sensor, ben you may want to look at this, should be ok since the ray sensor does NULL checks in for getNewClientInfo in a similar area.

11 years agobugfix - GameEngine PyObject methods did not all return when using dir(), because...
Campbell Barton [Tue, 8 Jul 2008 17:57:31 +0000 (17:57 +0000)]
bugfix - GameEngine PyObject methods did not all return when using dir(), because inherited methods were ignored, This made it incredibly annoying, not only having to search a C++ file to see what functions were available. but looking up methods inherited from other C++ classes.
There is still no __members__ attribute so dir() wont work at all for attributes.

11 years agoFix for crash in freeing group nodes, node trees have to be freed
Brecht Van Lommel [Tue, 8 Jul 2008 17:04:58 +0000 (17:04 +0000)]
Fix for crash in freeing group nodes, node trees have to be freed
before materials.

11 years agoBGE logic patch: new "Add" mode for Ipo actuator, several corrections in state system.
Benoit Bolsee [Tue, 8 Jul 2008 12:18:43 +0000 (12:18 +0000)]
BGE logic patch: new "Add" mode for Ipo actuator, several corrections in state system.

New Add mode for Ipo actuator
A new Add button, mutually exclusive with Force button, is available in
the Ipo actuator. When selected, it activates the Add mode that consists
in adding the Ipo curve to the current object situation in world
coordinates, or parent coordinates if the object has a parent. Scale Ipo
curves are multiplied instead of added to the object current scale.
If the local flag is selected, the Ipo curve is added (multiplied) in
the object's local coordinates.
Delta Ipo curves are handled identically to normal Ipo curve and there
is no need to work with Delta Ipo curves provided that you make sure
that the Ipo curve starts from origin. Origin means location 0 for
Location Ipo curve, rotation 0 for Rotation Ipo curve and scale 1 for
Scale Ipo curve.

The "current object situation" means the object's location, rotation
and scale at the start of the Ipo curve. For Loop Stop and Loop End Ipo
actuators, this means at the start of each loop. This initial state is
used as a base during the execution of the Ipo Curve but when the Ipo
curve is restarted (later or immediately in case of Loop mode), the
object current situation at that time is used as the new base.

For reference, here is the exact operation of the Add mode for each
type of Ipo curve (oLoc, oRot, oScale, oMat: object's loc/rot/scale
and orientation matrix at the start of the curve; iLoc, iRot, iScale,
iMat: Ipo curve loc/rot/scale and orientation matrix resulting from
the rotation).

  Local=false: newLoc = oLoc+iLoc
  Local=true : newLoc = oLoc+oScale*(oMat*iLoc)
  Local=false: newMat = iMat*oMat
  Local=true : newMat = oMat*iMat
  Local=false: newScale = oScale*iScale
  Local=true : newScale = oScale*iScale

Add+Local mode is very useful to have dynamic object executing complex
movement relative to their current location/orientation. Of cource,
dynamics should be disabled during the execution of the curve.

Several corrections in state system
- Object initial state is taken into account when adding object
- Fix bug with link count when adding object dynamically
- Fix false on-off detection for Actuator sensor when actuator is
  trigged on negative event.
- Fix Parent actuator false activation on negative event
- Loop Ipo curve not restarting at correct frame when start frame is
  different from one.

11 years agoBugfix #16535
Ton Roosendaal [Tue, 8 Jul 2008 11:47:22 +0000 (11:47 +0000)]
Bugfix #16535

The infamous Fkey 'make face' in editmode still failed in cases, giving
an annoying convex error popup.
Found two errors in this code:

- not all cases were evaluated to make a face of 4 vertices (6 cases)
- the function that makes always a face when the 4 edges already exist
  failed when not in vertex-select mode.

I also removed the popup, but added a print... its still not perfect.

11 years agoscenes set pose objects would draw in posemode while weight painting if they were...
Campbell Barton [Tue, 8 Jul 2008 10:18:34 +0000 (10:18 +0000)]
scenes set pose objects would draw in posemode while weight painting if they were set to posemode in their scene.

11 years agoCompiler warning fixes (how some of this stuff compiled without stopping compiling...
Joshua Leung [Tue, 8 Jul 2008 07:30:38 +0000 (07:30 +0000)]
Compiler warning fixes (how some of this stuff compiled without stopping compiling I don't know) ;)

11 years ago== Select Swap for Armatures (Ctrl I) ==
Joshua Leung [Tue, 8 Jul 2008 07:06:42 +0000 (07:06 +0000)]
== Select Swap for Armatures (Ctrl I) ==

It is now possible to swap the selection of bones in EditMode and PoseMode using the CTRL IKEY hotkey.

As a result, the hotkey for adding IK Constraints has now changed to SHIFT IKEY (so that select swap can have a consistent hotkey)

11 years ago-> UV and VCOL support for bevel (editmode)
Geoffrey Bantle [Tue, 8 Jul 2008 02:22:37 +0000 (02:22 +0000)]
-> UV and VCOL support for bevel (editmode)

BMesh and the bevel code now support UVs/VCOLS.
The offset is fixed at this time, but will be
made dynamic later.

11 years agopatch from res2k to stop the blender window being upscaled on vista.
Campbell Barton [Mon, 7 Jul 2008 22:11:11 +0000 (22:11 +0000)]
patch from res2k to stop the blender window being upscaled on vista.

11 years agoown mistake with drawing used state bits.
Campbell Barton [Mon, 7 Jul 2008 21:04:30 +0000 (21:04 +0000)]
own mistake with drawing used state bits.
Other minor changes and removed some warnings.

11 years ago[#17288] Sequencer API: added a method, a geter/setter, the blend modes dict and...
Campbell Barton [Mon, 7 Jul 2008 04:17:03 +0000 (04:17 +0000)]
[#17288] Sequencer API: added a method, a geter/setter, the blend modes dict and corrected a malfunction on audio strips blend mode
from Luca Bonavita (mindrones)

- adds the method "rebuildProxy()" useful to rebuild all the strips at once:   the user can do

- adds a BlendModes dictionary under the Blender.Scene.Sequence module: the  user can see the blending option with

- adds the getter/setter "blendMode"

- adds a function seq_can_blend in sequence.c as requested by Peter, useful for these purposes but also to solve a bug

- the bug is you can apply blend modes to an audio strip that doesn't make sense: changed the test and now you cannot
assign blend mode other than Replace to audio strips

Omitted DNA cleanup part since its only whitespace and Id prefer to have a useful "svn blame" output.

11 years ago* New UV editor selection mode: Island
Matt Ebb [Mon, 7 Jul 2008 02:02:10 +0000 (02:02 +0000)]
* New UV editor selection mode: Island

This goes alongside vertex and face selection and selects an entire UV island with a single click. It's a lot less painful to use when rearranging UV layouts, especially with Drag Immediately on - see:

11 years agoDerived Mesh Bugfix
Martin Poirier [Mon, 7 Jul 2008 01:56:47 +0000 (01:56 +0000)]
Derived Mesh Bugfix

EditMesh MEdge vertex index were doubled incremented, so more or less always wrong (even worse, could read outside of array).

11 years agoLittle tweak to timeline_force_draw, so that button windows are updated properly
Joshua Leung [Mon, 7 Jul 2008 00:54:32 +0000 (00:54 +0000)]
Little tweak to timeline_force_draw, so that button windows are updated properly

11 years agoFix for bug: [#14570] particle system: grid distribution + vertex emitting bug
Janne Karhu [Sun, 6 Jul 2008 22:52:55 +0000 (22:52 +0000)]
Fix for bug: [#14570] particle system: grid distribution + vertex emitting bug
- grid distribution didn't check for emission from vertices

11 years agosoc-2008-mxcurioni: merge-repair with trunk rev 15456
Maxime Curioni [Sun, 6 Jul 2008 19:53:32 +0000 (19:53 +0000)]
soc-2008-mxcurioni: merge-repair with trunk rev 15456

11 years ago=== Transform Snap ===
Martin Poirier [Sun, 6 Jul 2008 15:38:51 +0000 (15:38 +0000)]
=== Transform Snap ===

Bugfix face snapping in edit mesh didn't test for selection properly

11 years agoGameObject rayCast and rayCastTo were not setting exception strings (causes return...
Campbell Barton [Sun, 6 Jul 2008 14:11:30 +0000 (14:11 +0000)]
GameObject rayCast and rayCastTo were not setting exception strings (causes return without exception set error)
Also made game state buttons only have a dot in states that have controllers in them.

11 years agoBugfix #16669
Ton Roosendaal [Sun, 6 Jul 2008 13:52:17 +0000 (13:52 +0000)]
Bugfix #16669

The Image "do premul" option didn't work when Image was of type Sequence.
(Note: this option converts key-alpha images to premul, as is standard
in Blender rendering)

11 years ago#16675: Object name doesn't get updated in 3D viewports if it is changed via Buttons...
Joshua Leung [Sun, 6 Jul 2008 11:25:58 +0000 (11:25 +0000)]
#16675: Object name doesn't get updated in 3D viewports if it is changed via Buttons Window

11 years agoBugfix #17139
Ton Roosendaal [Sun, 6 Jul 2008 09:21:39 +0000 (09:21 +0000)]
Bugfix #17139

When "image type" is a movie, image file saving falls back to jpg as a
default. The code checking extensions didn't correctly include quicktime.

12 years agosoc-2008-mxcurioni: merged changes to revision 15441
Maxime Curioni [Sat, 5 Jul 2008 13:30:48 +0000 (13:30 +0000)]
soc-2008-mxcurioni: merged changes to revision 15441

12 years agoUpdates from Roger Wickes
Campbell Barton [Sat, 5 Jul 2008 11:38:16 +0000 (11:38 +0000)]
Updates from Roger Wickes

[#16494] Animation Bake Constraints update
links cloned children to cloned parents, useful for ik target baking. whitespace, capitalization.

[#15032] C3D Import script cleanup/IK
Changed code to put IK constraints on a user-defined layer, separate from Markers. cleaned up module naming convention.
removed questionable sloc. add revision history. forced the TrackTo constraint to use a valid marker, and not make up
one on its own.

12 years agosoc-2008-mxcurioni: render buffer modification
Maxime Curioni [Sat, 5 Jul 2008 11:16:03 +0000 (11:16 +0000)]
soc-2008-mxcurioni: render buffer modification

12 years agosoc-2008-mxcurioni: render buffer format
Maxime Curioni [Sat, 5 Jul 2008 11:13:57 +0000 (11:13 +0000)]
soc-2008-mxcurioni: render buffer format

12 years agopatch [#17275] Fix for: pressing delete on an empty sequencer pops up a confirmation
Campbell Barton [Sat, 5 Jul 2008 11:08:39 +0000 (11:08 +0000)]
patch [#17275] Fix for: pressing delete on an empty sequencer pops up a confirmation
from Roelf De Kock (kiemdoder) to address report #15025

12 years agosoc-2008-mxcurioni: render layer with FBOs -> render buffers, version 2. Still not...
Maxime Curioni [Sat, 5 Jul 2008 08:50:41 +0000 (08:50 +0000)]
soc-2008-mxcurioni: render layer with FBOs -> render buffers, version 2. Still not working.

12 years agosoc-2008-mxcurioni: first render layer implementation with frame buffer objects....
Maxime Curioni [Sat, 5 Jul 2008 06:22:15 +0000 (06:22 +0000)]
soc-2008-mxcurioni: first render layer implementation with frame buffer objects. It does not work yet: I cannot manage to read from the correct buffer yet.

12 years ago->Last Commit broke compilation on GCC
Geoffrey Bantle [Fri, 4 Jul 2008 22:32:06 +0000 (22:32 +0000)]
->Last Commit broke compilation on GCC

CustomData_bmesh_set function header and
prototype didnt match. For some reason this
not only compiledon MSVC but didnt even warn...

12 years ago== BUGFIX ==
Andrea Weikert [Fri, 4 Jul 2008 20:24:15 +0000 (20:24 +0000)]
== BUGFIX ==
- fix crash when exiting game engine (with ESC-key).
- reason for crash: std::vector iterator is invalid after vector::erase

12 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