Commit Graph

47594 Commits

Author SHA1 Message Date
Nicholas Bishop
1df41811ac Code cleanup: replace some common CCG operations with functions.
The new functions are ccg_gridsize, ccg_edgesize, ccg_spacing, and
ccg_edgebase. These target most of the left-shift operations in the
code.
2012-02-23 07:21:33 +00:00
Campbell Barton
0dc50a0e07 bmesh py api, new submodules
* bmesh.types, just allows access to BMVert, BMEdge etc.
* bmesh.utils, so far only added edge_split() function, this module will give access to mesh editing functions.
2012-02-23 05:20:09 +00:00
Campbell Barton
38f546a614 swap arg order for BM_edge_split(), makes sense to have edge as first
arg.
2012-02-23 05:17:07 +00:00
Campbell Barton
d232815481 - swap arg order for BM_face_copy() boolean options.
- use edge example for BM_face_split().
2012-02-23 04:26:24 +00:00
Campbell Barton
ecb6f13618 bmesh py api, more wrapped funcs:
* BMFace.copy(verts=True, faces=Trur)
* BMEdge.other_vert(vert)
2012-02-23 04:19:25 +00:00
Campbell Barton
30c62d9699 bmesh py api: functions for getting the area/angle/center of BMesh elements. 2012-02-23 03:39:39 +00:00
Campbell Barton
190f5d1787 code cleanup: dont set the namespace in STR_String.h - 'using namespace std', since this is included in many places. 2012-02-23 02:36:30 +00:00
Campbell Barton
c8b53d2aaf code style cleanup, no functional changes. 2012-02-23 02:23:42 +00:00
Campbell Barton
53fece44cf style cleanup for blenkernel, no functional changes. 2012-02-23 02:17:50 +00:00
Nicholas Bishop
c428bb4389 Move PBVH bitmap to separate header in blenlib.
The implementation was also changed in a couple ways: use unsigned
integers as its base type rather than unsigned chars, and uses macros
rather than functions. (These could be changed to inline functions.)

Currently it is still only used during PBVH building, but now it's
accessible elsewhere.
2012-02-22 23:57:31 +00:00
Nicholas Bishop
5e12c7feca Code cleanup: de-duplicate code in GPU_build_grid_buffers() with a macro. 2012-02-22 23:30:56 +00:00
Nicholas Bishop
5e29a67839 Code cleanup: split up some long functions in sculpt_undo.c.
Should be no functional changes.
2012-02-22 23:13:05 +00:00
Nicholas Bishop
fd87bf3ef6 Code cleanup: don't use GHash for GPU_build_mesh_buffers().
At the point where GPU_build_mesh_buffers is called, the
face_vert_indices map has already been built; it contains the same
data in an easier-to-access format.
2012-02-22 22:48:34 +00:00
Nicholas Bishop
78e1da961c Code cleanup: remove unused 'skip' field from PBVH iterator. 2012-02-22 22:41:08 +00:00
Nicholas Bishop
444885848d Code cleanup: move the PBVH iterator's initialization into a function.
Should be no functional changes, just shortens the amount of code
living in the macro.
2012-02-22 22:37:01 +00:00
Antony Riakiotakis
de595d995f fix scons compilation, hopefully for all platforms that have a problem. 2012-02-22 20:31:19 +00:00
Bastien Montagne
6c0361dff7 Armature pose evaluation: more factorization of code.
Now constraints' space conversion code also uses generic armature_mat_(pose_to_bone/bone_to_pose). Previous own function (constraint_pchan_diff_mat) was somewhat inconsistent too with Hinge/NoScale/LocalLocation options...
As with previous similar changes, this might break some old rigs, in very specific cases (when constraint-evaluating an hinge/noscale/local_location bone in local space).

In the same part of code, removed unnecessary matrices copying, mult_m4_m4m4 can take the same matrix as input and output, nowadays...

Also found a bug-generator weakness in those armature_mat_ functions (if both input and output mat where the same, result was wrong, now systematically copying input mat, as done in LIB's matrix funcs).

Finally, factorized offset bone matrix generation into its own small function too, as it is used in two different places in armature.c (pchan_to_pose_mat itself, and restpose's where_is_armature_bone).

Note: I think all parts of blender's code related to that topic have now been tackled, but yet have to check BGE, it’s probably using that stuff too, one way or the other...
2012-02-22 20:06:33 +00:00
Antony Riakiotakis
bb5e545bf4 Fix blenderplayer linking with recent additions to bmesh python. We should really start building with player on so that mistakes like this can be detected early. 2012-02-22 18:57:17 +00:00
Campbell Barton
1955407f7e code cleanyp - no functional changes. 2012-02-22 16:52:06 +00:00
Bastien Montagne
34e2fb40c7 More style edits (adding a space between statements and parenthesis, if (foo) blah;), to follow http://wiki.blender.org/index.php/User:Nazg-gul/CodeStyle proposition. 2012-02-22 16:21:17 +00:00
Campbell Barton
92c47145fd bmesh python api change in internal behavior.
* Only have 1 python object per bmesh, vertex, edge, loop, face.
* Store pointers back to the python data in a custom data layer so as not to use more memory for normal editing operations (when pythons not running).
* Currently this data is created and freed along with the BMesh PyObject.
* Incidentally - this fixes comparisons for bmesh elements which wasnt working before.
2012-02-22 16:08:30 +00:00
Bastien Montagne
b06beb6f35 Style code cleanup and consistancy (mainly spaces around assignements, C++ comments to C, and misc spaces/tabs cleanup). No functional change. 2012-02-22 15:35:42 +00:00
Campbell Barton
df83ce61bc fix 2 small bugs
* Ctrl+Click extrude wasnt normalizing the quaternion (was printing warnings)
* bmesh bevel was supposed to add a float layer and remove, but removing passed the mask define of the customdata layer.
2012-02-22 14:55:12 +00:00
Thomas Dinges
edab2e4b3d Multi File Output Node:
* Some small UI tweaks, grey out image settings rather than hide and made it a bit more compact.
2012-02-22 14:19:39 +00:00
Sergey Sharybin
f5f529e740 Fix freeing of NULL pointer in array modifier. 2012-02-22 13:15:29 +00:00
Sergey Sharybin
4ed01fe734 Fixed compilation error after recent node commit. 2012-02-22 12:59:43 +00:00
Campbell Barton
ccfcc70c8c add slice access to bmesh sequences.
eg:
 verts = bm.verts[1:-7]
2012-02-22 12:54:53 +00:00
Campbell Barton
5123238f7d BMesh-py attributes (readonly):
* is_valid (all types)
* is_wire (verts/edges)
* is_boundry (edge only)
* is_manifold (verts/edges)

also corrected own error, missed updating BMesh operator formatting char (broke erase only-faces)
2012-02-22 12:28:32 +00:00
Lukas Toenne
3bae60d0c9 Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:

Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'

would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...

Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.

To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.

Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is  activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.

Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
Sergey Sharybin
dadc2a26e3 Fix #30290: Shape Keys not working as expected
New method of vertex shapekey propagation didn't restored coordinates in
me->mvert array which lead to unwanted deformation of basis mesh and
lead to issues like described in the report.
2012-02-22 12:11:56 +00:00
Campbell Barton
0ca14d9558 bmesh py api add connectivity attributes - to access adjacent data. 2012-02-22 12:04:44 +00:00
Campbell Barton
361de47cf5 bmesh py api - function to remove vert/edge/faces 2012-02-22 11:52:56 +00:00
Campbell Barton
91353bc716 bmesh python api - add BMEdge.verts, also had to add VERTS_OF_EDGE iterator in bmesh's api. 2012-02-22 11:31:07 +00:00
Campbell Barton
e0a6d273d0 bmesh py api - generalize bmesg sequences to use the iterator type and optionally another bmesh element.
This allows BMFace.verts to be added without defining a new sequence type.
2012-02-22 10:41:07 +00:00
Campbell Barton
e7d98179ea initial bmesh python api.
corrently allows to create and loop over verts/edges/faces, access selection and selection modes.

this is still WIP, access to face, edge verts is still missing, no access to UV's, no access to editing operations yet.

When the api is ready it will be documented by sphinx like mathutils, blf, aud.
2012-02-22 09:19:53 +00:00
Campbell Barton
3788adb8cb utility functions to convert between flags / sets, without depending on RNA API. 2012-02-22 09:15:46 +00:00
Campbell Barton
1f40f01435 correct exception - was using a TypeError when should be a ValueError. 2012-02-22 09:13:29 +00:00
Sergey Sharybin
e5d4e0f69b Fix #30231: Drag and Droping Parenting from Outliner giving unnecessary Loop Error
In fact, error was much deeper and DND parenting in outliner used to parent all selected
objects to drop target, not just currently dragging object.

This was caused by code sharing between Parent Set operator and this DND operator which
was iterating all selected objects in scene and was setting parent to it.

Solved issue by separating actual parenting code which makes specified object be parented
to specified parent and moved iterating to Parent Set exec callback.

Now both of discovered issues (unneeded loop error and parenting all selected objects)
are solved, but more extensive testing of this changes are welcome.
2012-02-22 07:56:15 +00:00
Antony Riakiotakis
9ca3084d4d Attempt to fix scons compilation of blenderplayer.
Added bmesh to player libraries and changed the priority of blenlib so as to avoid duplicate definitions (looks like there are actually functions defined twice that cause conflicts if one changes the order of linking...figures).

Only tested this on mingw-windows, I hope it works elsewhere too.
2012-02-22 03:16:34 +00:00
Antony Riakiotakis
c7185d2652 Stitch tool fully functional again. Many thanks to Howard Trickey for proposing the loop winding criterion for normal disambiguation of edges. Unfortunately some extra memory has to be allocated for this to work correctly. If the tool had been initially written for bmesh I would have used the already present adjacency information to make it work, avoiding some extra allocations. Maybe a project for another day though, when I am more proficient with bmesh internals. 2012-02-22 00:06:15 +00:00
Antony Riakiotakis
a4e6967323 change UvElement to directly use BMLoop * instead of tfindex. This saves quite some lookups on uv sculpting and stitching. Based on BMESH todo by Campbell, thanks for the idea! 2012-02-21 19:41:38 +00:00
Antony Riakiotakis
9c3710df1f uv stitch static island highlight ported to bmesh system.
Unfortunately since we are missing a way to tesselate uvs, the result will look good only on concave faces since we are essentially using a triangle fan to draw. When a tesselation of uv polygons is possible the tool should also change to use that instead. This will also influence the preview drawing code, coming next.
2012-02-21 18:20:47 +00:00
Sergey Sharybin
3663bd580f Remove debug print code.
It was harmless because it ifdef-ed, but it's likelly not needed anymore.
2012-02-21 17:27:33 +00:00
Sergey Sharybin
9064978d0b Remove unused code left from old multires interpolation stuff
- Removed validate() callback for MDisps layer. It wouldn't actually work
  correct from CustomData layer and all needed data might be validated from
  BMesh interpolation level. Also this callback was never actually used in
  BMesh, so can't see why we'll want to have it in structures.
- Removed layrInterp_mdisps callback. Interpolation now happens from
  another level (bmesh_interp) and this callback isn't needed anymore.
- Removed all function from multires.c which were used by old interpolation
  stuff and seems to be useless for other usages.
- multires_topology_changed is still marked as a TODO, Probably it's not
  needed anymore, buy better to keep for now until it'll be 100% clear this
  function isn't needed and all needed re-allocations happens in bmesh_interp.
  Otherwise, it'll be needed to be ported to new system.
2012-02-21 17:24:21 +00:00
Sergey Sharybin
4041c57756 - Remove unused code in bmesh interpolation module and switch it to using mathutils
functions instead of own macros for vectors.
- Double precision isn't needed here at all. It only makes it impossible to use
  mathutils, adds extra float<->double conversions without any benefits.
  (current multires interpolation is already an approximate method and it can't
  be improved using double precision)
2012-02-21 17:24:05 +00:00
Sergey Sharybin
debd32d336 Improved displacement flipping algorithm to work properly in cases when target grid isn't orthogonal.
Subdivision of face now works pretty smooth, only producing minor unwanted displacement on the along edges.
2012-02-21 17:23:32 +00:00
Sergey Sharybin
b2fd08c754 Flip displacement direction after interpolation in bmesh_loop_interp_mdisps
This is needed because displacement might been interpolated from a grid
with different orientation and in this case X and Y components of displacement
are need to be flipped in needed order.

Order of flipping is determining by projecting source grids axis orientation
on target grid axis. This probably will give some unwanted artifacts when
interpolating non-planar face but currently can't think about better way
to determine how to flip displacement.

This commit makes operators like Subdivide works much more unpredictable
for sculpting data, but this stuff should be rethinked much more global
because current approach is not acceptable.
2012-02-21 17:23:03 +00:00
Brecht Van Lommel
3efe399ed4 Fix part of #30272: cycles preview render not updating when changing particle
emission from with instanced objects.
2012-02-21 16:34:00 +00:00
Bastien Montagne
1b0802265c Fix [#30281] Left/Right vertex weights flipped.
Mirror modifier was flipping vgroups on org vertices, not mirrored ones!
2012-02-21 14:45:18 +00:00
Brecht Van Lommel
d47b018f8d Fix #30270, #30265: cycles not displaying textured objects, and not rendering
text/curve objects after the bmesh merge. Also removed a debug print.
2012-02-21 14:39:59 +00:00