Commit Graph

211 Commits

Author SHA1 Message Date
4903751c4d mirror face UVs and color was rotating, shift for alternate axis also wasnt implimented 2008-05-12 18:30:50 +00:00
Chris Want
5d0a207ecb Patch from GSR that a) fixes a whole bunch of GPL/BL license
blocks that were previously missed; and b) greatly increase my
ohloh stats!
2008-04-16 22:40:48 +00:00
Chris Want
8f6a16c12e Moved initialization of vertex flags up a bit in the subdivide
routine because they were trumping a fix I had made earlier
to deal with subdivide smooth and mirror modifiers.

Campbell, could you please check that this commit is compatible
with the results you were expecting from commit 14227? Here
is the log of that commit:

http://projects.blender.org/plugins/scmsvn/viewcvs.php/trunk/blender/source/blender/src/editmesh_tools.c?root=bf-blender&view=log#rev14227
2008-04-11 20:46:12 +00:00
b37cf7d75d Fix for bug #8407: merging vertices at first/last did not
preserve UVs correct.
2008-03-26 17:56:14 +00:00
972b0a5218 Fix for bug #8713: edge loop delete did an undo push too much. 2008-03-26 16:46:04 +00:00
2b7e4f4d4a subdivide would give weired results especially when used after proportional edit mode because vertex temp flags wernt zero'd 2008-03-24 11:55:43 +00:00
6e24c23176 Fix for bug #5641: edge slide doesn't work straight after remove
doubles. Also fixed some 64bit warnings in this file.
2008-03-13 21:14:11 +00:00
d566fe665a -> Bevel
Fixed the following problems with Bevel code

  -meshes with 2 edged faces left over at the end would cause buffer
   overrun whens converting from a Bmesh to a Derived Mesh. The
   conversion process now checks for both double edges and faces
   and removes them when present.

  -BME_reverse_loop euler had a bug that was causing the corruption of
   radial cycle. This would lead to the bevel tool hanging for a long time
   and possibly crashing.

  -Added optimization of BME_reverse loop so that it no longer does tiny
   allocations but instead uses an area of 'scratch' memory. The same thing
   will be done to the Make Face euler soon

  -Added proper call to selection flushing for editmode.

  -Some miscellaneous cleanups and removal of unneeded debug printfs.
2008-02-25 04:53:37 +00:00
e03ab146ae -> Bevel tools and Bmesh kernel
The following is a commit of Levi Schooley's bevel code and 
the bmesh library it depends on. The current editmode bevel has 
been replaced with a new per edge bevel function. Vertex beveling is 
also availible.

To set weights for the modifier to use, use the ctrl-shift-e shortcut on either edges 
or vertices.

Recursive beveling is turned of for the time being.
2008-02-23 22:11:16 +00:00
cd284d5783 Fix for bug #6991: edge slide crash with the last vertex
missing rails.
2008-02-21 17:52:03 +00:00
835624fa05 Fix for bug #8120: edgeloop delete with automerge editing enabled
resulted in wrong selection state.
2008-02-21 15:24:15 +00:00
Chris Want
40413c9a4a == Mirror Modifier & Subdivide ==
Vertices that are newly created by a subdivision of a mesh object
with mirror modifiers (with clipping option set) are projected to
the plane of symmetry when they are created on edges that lie on
that plane.

For regular subdivide this is trivial by linearity, so this mainly
effects subdivide smooth, loopcut smooth, and subdivide fractal.
This commit basically prevents nasty seam rips on the mirror when
doing these operations.
2008-01-25 23:21:22 +00:00
121dab1bcd Fixes for some long standing transform bugs.
- [#6112] is this an extrusion bug?

When extruding, x-mirror was giving weird behavior since the extruded vertice could match with their non-extruded counterpart on the other side.

The solution is to disable x-mirror (with a transform context flag, like disabling PET) in that case.

- External constraint setup calls (BIF_*) didn't setup some internal structs properly.

For the user, this resulted in some transform (extrude particularly) showing a full 3d vector in the header instead of a scalar along the constraint axis (this messed up num input a bit too, you could type values in unused axis).
2007-11-26 01:52:48 +00:00
46deddcc62 Image Stamping patch by Diego (and peach request)- stamps image info into metadata and optionally
draws into the
frame.

This patch includes some changes I made...   
* use blenders bitmap fonts (rather then own fonts)
* select font size
* user interface layout changes
* Marker as another image stamp option

Also added some new API calls   
BMF_GetFontHeight(font);
BMF_DrawStringBuf(...);  - so we can draw text into an imbuf's image buffer.
get_frame_marker(frame) - get the last marker from the frame.
IMB_rectfill_area(...) - fill in an image buffer with a rectangle area of color.

TODO - draw stamp info in 3d view, at the moment it just displays in the animation.
2007-10-20 16:17:27 +00:00
5ea45a1385 Mesh edit option 'AutoMerge' - access from the mesh menu, basically runs remove doubles after transform. but only merges
unselected verts into selected verts, so it wont merge verts your not editing.
2007-10-18 21:47:55 +00:00
b47c75953b - rewrote UV Stitch, (seperate from limit stitch now), does much less
work for same results.
- UV Stitch with the V key was not working (as stated in the menu)
- Rotate UV's and Colors now have an option for CCW (was in the menu 
but not implimented)
- Draw face dot in UV when in face mode
2007-09-30 08:28:15 +00:00
18bd726f0b bugfix from 11860, the derived mesh was getting free'd twice (crashed
editmode + linked-dupes + texture-drawtype)

Also fixed own bug with face mode setting (wasnt checking for texface)
2007-09-27 20:41:56 +00:00
037f6f20d8 added a view properties panel for image/uv. moved the cursor x/y there to match the 3d view.
added an optional view setting - Repeat/Tile image display so mapping with tiled textures you dont have to guess the locations or look in the 3d view to see what your mapping to.
copy and face menu was missing depgraph update calls.
2007-09-19 23:50:46 +00:00
28ae78a745 reworked how tile functions, seperated image and tile setting functions/events and made tile work with image pinning.
changed how image replace works,
it used to load a new image and then assign that image to all faces in meshes active UV layer.
without replacing images in textures or images on inactive UV layers

now it simply changes the filename of the existing image and reloads the contense.

This is different in some other subtle ways, 
1) replace used to use an existing image if it was available,
this could be confusing because when I replaced with an image I didnt like, but had alredy applied to objects in some other scene, replacing again would alter the images from models unintentionally.
2) since replace used to load a new image, it would load with a new name. at the moment the name is left unchanged,
This is better when dealing with linked libraries. because when replacing a images, anything linking to that texture gets broken. since imaged can get automatically named strings longer then its possible to enter into the user interface, you could wind up with some really annoying cases where it wasnt possible to type in the original name again.

Since this replace effects everything usiung the image, we may want to have 2 replace functions, "Replace Globaly" and "Replace in Mesh"
2007-09-19 16:28:52 +00:00
d86a03113d Another purge of compiler warnings (some of which I've been getting for a while) as a warmup exercise. 2007-09-18 06:33:24 +00:00
b2b3b01894 Added UV face rotate and mirror to editmode and re arranged some of the editmode keys
The WKey menu was way too big and not well organized, re-arranged keys like this.

Ctrl+V - Vert Menu  (remove doubles, smooth...)
Ctrl+E - Edge Menu - left as is
Ctrl+F - Face Menu - (flip normals, shading, Rotate and Mirror UV's/Colors)

Wkey menu only has subdivide in it now.

filesel.c - only show the relative paths option if the file is saved, (flag on by default caused the image to silently fail loading on my system, and gave permission errors on a users), also removed a warning.
2007-09-12 10:35:48 +00:00
e8a808da24 UV Editing is now done in editmode rather then UV/Face Select mode.
Notes
* you cant edit UV's in the image window in "UV Face Select" mode. (removed UV from the name)
* going into Face Select mode no longer adds UV's and does not need UV's to work.
* The UV Calculation menu is now in editmode (Alt+W)

Todo..
* Image replace - partly broken in stable also.
* Rotate/Mirror UV/VCol are still only in Face Select mode.
* Hide/Reveal is not quite right, (issue with editmode flushing)
2007-09-10 12:26:36 +00:00
caa804e2b6 This is patch #7056
Submitted by Davide Vercelli (unclezeiv)

removes the restriction of using the screw tool only in front view.

Kent
2007-08-28 11:11:07 +00:00
427d6fc21d * Removed the 'Beautify Fill' confirmation. None of the other fill
tools have them any more, it was an annoying historical artifact
from before undo.
2007-07-03 07:24:55 +00:00
999e405543 Save PET state before ripping and disable it, so that post rip transform works better. Restore PET state after finished. 2007-04-06 20:42:17 +00:00
afdd54fa37 moved source and text to american spelling
* colour -> color
* centre -> center
* normalise -> normalize
* modelling -> modeling
2007-04-04 13:18:41 +00:00
112c641263 -> Fix for bug #6327
Small fix for edge subdivide code. Handling of visibility flags was never
handled properly, this should fix.
2007-03-27 17:09:10 +00:00
509967930e === Edit Mesh Bevel ===
[ #6110 ] bevel tool contains a bug

Fix: Added missing initgrabz
2007-02-26 17:24:22 +00:00
758307b9cc Bug #6093:
Spin tool now uses the 'clockwise' setting again. This was disabled
because degrees accepts negative values, but it seems to cause confusion,
and there's no reason both buttons can't work at the same time.
2007-02-23 20:06:17 +00:00
0e27b11f6e Modified weightpaint to prevent user from editing multires weights except on level 1. 2007-01-10 06:43:03 +00:00
5bb658dd69 Fix for bug and #5449 and #5423:
Crashes using flip triangle edges or beauty fill.

The cause was edges being marked for deletion and deleted that are
still in use by faces. This could happen if the edge was part of a
quad or unselected triangle, or if the edge was marked for deletion,
but then needed again because of another flip.
2007-01-08 21:20:18 +00:00
7212711225 ->Fix for bug #5542
Missing a check for non-manifold edges in new alt-j code. Fixed now.
2007-01-01 01:05:40 +00:00
3c13561ab5 === Transform Snap ===
Fixed the bug where it would snap to a selected (moving) vertex.

Fixed a bug with Snap Closest with only one vertex selected.

=== Internals: EditMesh Mods ===

Modify and documented findnearestvert.

Added a new parameter to restrict the search to selected or unselected vert instead of just adding a bias to them (as previously). Currently, the "strict" method bypasses the openGL optimisation, people with more knowledge about that should feel invited to fix it.

=== Internals: EditMesh Tools ===

Adding missing newline at the end.
2006-12-28 22:42:58 +00:00
0aebc13199 -> Further work to improve triangle conversion tool:
The improved triangle to quad conversion is now better integrated
into Blender in several respects. First of all the code makes distinctions
between 'simple' pairs and 'complex' pairs. Simple pairs are an island of
exactly two selected triangles that are joined by an edge. These simple pairs
are subject to the old 2.42 rules for joining triangles. Complex pairs are part
of larger islands of selected triangles and their conversion is controlled by
several parameters that can be individually tweaked via new buttons located
in the "Mesh Tools" panel of the editing buttons. Furthermore the tool deals
with any arbitrary combination of simple and complex islands in a consistent and
logcial way.

The code has also been drasitcally cleaned up and should address the open
bugs in the tracker regarding alt-j. However as part of cleanup the tool has
been made somewhat slower to insure a consistent mesh structure. This is a
limitation of the exist_face() function in editmesh and will have to be adressed
at a later date.
2006-12-26 02:00:56 +00:00
a720296999 Another 3-in-one commit:
- Unitialized variable in new shadow code caused Sun lamp shadow to not
  work.
- Ipo handle bug: when the handle was vertical it flipped around
- Loop select: unitialized variable caused it to work unpredictable in
  cases. Also found an unitialized var in collaps_edgeuvs().
2006-12-06 11:17:34 +00:00
e435fbc3c5 Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.

Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData


Replaced TFace by MTFace:

This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.


Removed DispListMesh:

This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.


Removed ssDM and meshDM DerivedMesh backends:

The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.


This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 04:28:02 +00:00
Ken Hughes
318a694a25 Get rid of various warnings with gcc under linux 2006-11-17 17:50:43 +00:00
c25c249eb0 Fixed bug #5235, "deleting edges, verts, or faces in multires does bizarre things to mesh"
Added a simple check to a number of editing operations. If multires is enabled,
an error is displayed and the operation is cancelled. This includes adding and
deleting verts/edges/faces, and anything that would reorder elements.
2006-11-15 22:24:05 +00:00
e4a1eb4e09 Added custom vertex data support to editmode. Only used for vertex groups
now, others can be added later (sticky, shape keys). Beside one small fix
for knife exact vertex group interpolation, is intended to work the same
as before.

Also fixes bug #5200, related to editmode undo and vertex groups. And
corrects the editmode to faceselect mode selection conversion, that was
broken in a previous commit.
2006-11-11 23:23:15 +00:00
97f892b86b Added custom face data support in edit mode. The code used to do this is
the CustomData module from the modifier stack rewrite, but with additions
to make it also usable in edit mode. Some of the datatypes from that
module were move to a DNA header file, they are not saved to file now, but
will be soon.

The only code that wasn't abstracted is the uv collapse / merging code. It
is rather complicated, will look into that in the future.

There should be no user level changes.
2006-11-11 16:38:37 +00:00
Ken Hughes
56a12a30c5 Patch #4896, submitted by Juho Vepsäläinen (bebraw):
Allows "Degr" field in Mesh tools accept negative and positive float values
from range [-360, 360].
2006-11-09 14:30:11 +00:00
011f531359 Modified the way booleans preserve face data, and cleaned up some
duplicate code. Also removed redundant files from the bsp module,
that where replaced by boolop last year, no sense in updating them
for these changes. On the user level things should still work the
same, this is only preparation work.

Not counting the removed files, -1501 lines of code, not too bad :)
2006-11-08 20:14:04 +00:00
c6976219fb ->Join triangles fixes.
There was a bug with the new join triangles code that caused concave faces to be
created. This is fixed now and is tweakable using the the 'threshold' value set
in the 'Mesh Tools' panel in editbuttons.

Also removed the popup notice telling you how many triangles had been joined. It
was only there for debugging purposes.
2006-11-08 05:18:11 +00:00
e259923340 -> Triangle to Quad bugfix
Last minute bugfixing for last commit introduced a brand new bug causing
Crashes, whoops! Fixed now.
2006-10-18 06:06:15 +00:00
134e562219 -> Improved Triangle to Quad conversion
Alt-J behavior has been replaced by a port of the Tri2Quad python script
currently in CVS. This method has many advantages over the old behavior.
A simple illustration of how the new method is superior to the old can be
made by triangulating a suzzane and converting it back to quads.

	http://www.umsl.edu/~gcbq44/t2q2a.jpg
	http://www.umsl.edu/~gcbq44/t2q2b.jpg

The algorithm works by considering all possible triangle pairings and then
weighting them according to how appropriate it would be to join. These pairs
are then quick-sorted and those with the highest weighting factor are combined.
The function is quite fast even for dense meshes and usually involves no
noticeable wait-time for completion. For instance the following imported
model took less than 2 seconds to convert on my 1.3ghz PPC powerbook:

	http://www.umsl.edu/~gcbq44/mimitri.jpg
	http://www.umsl.edu/~gcbq44/mimiquad.jpg

It should be noted by the user that this method also discards face pairs
where the two triangles:

-do not share the same material
-do not share the same UV image (texface)
-do not share a compatible set of UV coordinates
-do not share a compatible set of vertex colors
-will form a concave quad or create a non-planar face

Additionally if the edge shared by the pair is marked 'sharp' the pair
will be discarded from the quicksort. In this way the user can gain great
control over the conversion process if they desire as this imported VRML
model of a sneaker illustrates:

	http://www.umsl.edu/~gcbq44/t2qa.jpg
	http://www.umsl.edu/~gcbq44/t2qb.jpg

For the future it would be nice if some of the options for the conversion
process, such as angle tolerance, could be made configurable in the UI.
However it is unclear at this time which options should be made configurable
and where to put them. Feedback on this is appreciated.

Special Thanks goes to Joe Eager for the two macros he contributed to this code
and to Campbell Barton for writing the script this was based on!
2006-10-18 05:18:51 +00:00
e7874b3ff0 ->Knife Midpoint and Vertex Cutting
Cutting through vertices and vertex snap was only supported in
'knife exact' mode. Now works for 'Knife Midpoint' as well.
(Multicut and vertex cutting would require N-Gons)
2006-09-19 00:08:09 +00:00
d9ff064cf7 Menu to copy Shapes (Editmode Mesh, CTRL+C) now displays in columns 2006-09-12 10:39:22 +00:00
2ee42ac01e Huge commit: VERSE
- All code is in #ifdef ... #endif
 - Only make build system is supported and you have to add:
    export WITH_VERSE=true
   to user-def.mk file
 - Blender can share only mesh objects and bitmaps now
 - More informations can be found at wiki:
    http://mediawiki.blender.org/index.php/BlenderDev/VerseIntegrationToBlender
    http://mediawiki.blender.org/index.php/BlenderDev/VerseIntegrationToBlenderUserDoc

  I hope, that I didn't forget at anything
2006-08-20 15:22:56 +00:00
e96c813cc3 -> Vertex support for knife tool
Previously the knife tool only allowed you to cut through edges. This
approach is limited however, since many times you want to cut through
vertices in order to create precise cuts or terminate a cut in a specific
way. Blenders knife tool now supports cutting through vertices as
demonstrated in these pictures:

http://briggs.zanqdo.com/newknife1.jpg
http://briggs.zanqdo.com/newknife2.jpg

Since the vertex intersection code is very precise, vertex snapping has
been added to the knife tool to assist the user when they wish to cut
through vertices and can be toggled by pressing and holding the 'alt' key.

Notes:
-Vertex cutting and vertex snapping are only available when using the
'knife exact' option.
-Added various fixes to the precision of the knife tool.
2006-08-11 07:24:33 +00:00
c2edcd4879 Siggraph show commit!
- pending commit for OSX intel systems, with intel graphics. These now call
  an extra swapbuffers after glFlush(). Code is ifdeffed, and doesnt affect
  other systems.

- show-off commit: option to have transparent nodes over the composite
  result. Only draws Image for active Viewer Node now, and image doesnt
  translate nor zoom (which isnt bad though).
  Set in themes the alpha color of "node backdrop" to make nodes
  transparent.
2006-07-31 19:23:42 +00:00