Commit Graph

47 Commits

Author SHA1 Message Date
0804d66f79 - Imagepaint code cleanup:
- Move UVTEXTTOOL variables into global Gip struct (like Gvp for
    vertex paint). This will probably be moved into SpaceImage later,
    so it is saved with the .blend file.
  - Disable tool drawing. a better solution needs to be found.
  - Panel button layout is still the same, this will change.

- Removed the NAN_TPT define, it has no use anymore.
2005-09-16 20:17:09 +00:00
7804860cf6 - added mesh_strip_loose_faces, works in conjunction with make_edges
to get rid of faces with MFace.v3==0
 - change all Mesh's to have ->medge now. This is forced by make_edges
   on readfile, and in the various exotic important routines, and on
   conversion back in python.
 - make python NMesh structure always have medges now (needs testing)
 - with above two changes it is guarenteed that mf->v3 is never ==0
   in main blender code (i.e., all MFace's are actually triangles
   or quads) and so I went through and removed all the historic tests
   to deal with MFace.v3==0. Equals lots of deleting, I am in heaven!
 - removed MEdge edcode flag, no longer needed
 - added experimental replacement for edge flag system

Still are some inconsistencies in FACESELECT mode edge drawing to
be ironed out.

NOTE: This commit adds an experimental edge flag calc system, based
on 10-seconds-of-thought algorithm by yours truly. Would appreciate
feedback on how this system works, esp compared to old one and esp
on complex or interesting models.

To Use: New system is enabled by setting G.rt to a value between
1 and 1000 (Value of 0 uses old system). Value 1000 is reserved for
"auto" edge, which is more or less identical to old system but also
makes sure that at least 10% of edges are drawn (solves errors for
super subdivided meshes). Values between 1 and 999 act as percent
(out of 1000) of edges that should be drawn, starting with "most
interesting" edges first. Please try it and comment!
2005-08-21 07:19:20 +00:00
8c41c00ff7 - added DerivedMesh.drawUVEdges function & implementations
- removed DerivedMesh.drawLooseEdges and replaced with much more
   general drawEdgesFlag function that draws based edge flags.
 - switch DerivedMesh.drawFacesTex to give user control over which
   faces are drawn
 - added object_uvs_changed and object_tface_flags_changed functions
   to do object recalc flag flush/redraw queueing and added calls
   in appropriate places
 - added various edge flags to mark TFace information. This is used
   by the drawEdgesFlag routine and was the best way I could come
   up with to deal with drawing TFace information from modifier stack.
   Unfortunate side effects are (1) uses a lot of MEdge flags (although
   not needed in file so thats fine) and (2) requires recalculation
   of modifier stack on UV selection changes. #2 is disappointing
   but I could not find a better solution.
 - update UV mesh shadow drawing to use modifier result. At the moment
   just uses the final result but probably should be integrated with
   the editmode cage option.
 - convert draw_tfaces3D to use drawEdgesFlag routine which cleaned
   up the code quite a bit.
 - convert draw_tface_mesh to draw using result of modifier stack.
   Same comment about which result actually gets draw in FACESELECT
   mode as for UV editor shadow drawing applies.

There is a still a bug in that selection is using the wrong
mesh to draw.
2005-08-18 11:31:20 +00:00
5afdfc6ac1 - remove some silly array copying code for nurb displist generation
- converted dl->flag to use consistent defines for cyclic U/V
2005-08-11 22:27:53 +00:00
2f32c8451c New "Mirror UVs" function in faceselect mode, to complement Rotate UVs.
It mirrors the UVs or Vertex Colors of individual faces (on the red edge
of the UV face).

Patch provided by Martin Poirier, thanks!
2005-08-11 00:00:24 +00:00
aa454cd412 - switch to using DAG_object_flush_update instead of mesh_changed
- mesh drawing calculated derived surface before clipping to view matrix,
   waste for offscreen objects
2005-07-14 17:10:44 +00:00
befc2bbc41 - split makeDispList into makeDispList{Mesh,MBall,CurveTypes}, there is
still a makeDispList that dispatches to the appropriate one.
   makeDispList is on the way out and this makes it easier to track down
   exactly which places use makedispList and for what types of objects.
 - switch calls to makeDispList to appropriate more specific function (if
   the object type is known by caller).
 - added mesh_changed function that invalidates cached mesh data (but does
   not rebuild, mesh data gets rebuilt on access). Most old calls to
   makeDispListMesh use this instead now.
2005-07-14 15:48:01 +00:00
49d38efe7e With no objects in scene, press F (ALT+F) for faceselect crashed.
Bugfix #2755
2005-06-16 21:19:13 +00:00
a7bbf8245a Fixed various errors with Blender allowing editing Library linked data.
CTRL+V on buttons
NKEY Panels
join mesh
join curve
editing buttons
boolean
vpaint
faceselect
Manipulator

Also; Transform() got in useless loop when you entered without anything
selected. Not sure why Martin recoded it this way... maybe as a first
step to handlerify it? For evil Python Aussie Bosses? :P
2005-05-12 19:17:12 +00:00
b705434c72 A couple more simple gcc4.X warnings fixed.
softbody.c I removed an unused var.
text.c added return values to 2 return statements that didn't have anything.
Makefile added $(FIX_STUBS_WARNINGS) to CFLAGS for the stub.
source/blender/src/editface.c  fixed up int vs unsigned int stuff
source/blender/src/resources.c had two vars declared as unsigned char *
and then inputs to them were cast as char * so updated the casts.

Kent
2005-04-28 14:37:15 +00:00
c333ba8dfa Merging over some uv editor tweaks from tuhopuu:
- Moved Weld/Align out of transform code, now it's a menu.
- Removed confirmation popups for LSCM unwrapping in the uv editor, didn't
  make sense anymore now we have undo.
- Extended select linked, to work more like it does in edit mode:
	- L: select linked uvs/faces under the mouse
	- Shift+L: select/deselect linked uvs/faces under the mouse
	(like shift+click for selecting single uvs/faces)
	- Ctrl+L: how L worked before
- More accurate uv selection: when selecting one uv from a group of uvs that
  are in the same position, it now selects the uv belonging to the face the
  mouse is over, instead of a random uv.
- 'View Selected' (numpad .-key) for both faceselect mode and the uv editor.
2005-04-23 01:36:08 +00:00
6a00fcd90c Add "View Selected" (numpad .-key) for faceselect mode and the uv editor.
Also includes some 2d vector operations (subtract, dot, normalise).
2005-04-22 20:16:02 +00:00
8e92ee8684 - remove all obsolete inclusions of BLI_winstuff.h (due to recent changes)
NOTE: BLI_winstuff.h was meant to be a wrapper around windows.h to handle
undefining various crap that windows.h defines. Platform specific headers
should only have to be included in a few places. This reduces the number
of inclusions of BLI_winstuff.h to 16 which is a much more reasonable
number (than the 144 or whatever it used to be)
2005-03-19 21:08:13 +00:00
c78e44cdc5 big warning hunt commit
lot of casts, added prototypes, missing includes and some true errors
2005-03-09 19:45:59 +00:00
610cec55c7 Biiig commit! Thanks to 2-3 weeks of cvs freeze...
Render:
- New; support for dual CPU render (SDL thread)
  Currently only works with alternating scanlines, but gives excellent
  performance. For both normal render as unified implemented.
  Note the "mutex" locks on z-transp buffer render and imbuf loads.
- This has been made possible by major cleanups in render code, especially
  getting rid of globals (example Tin Tr Tg Tb Ta for textures) or struct
  OSA or using Materials or Texture data to write to.
- Made normal render fully 4x32 floats too, and removed all old optimizes
  with chars or shorts.
- Made normal render and unified render use same code for sky and halo
  render, giving equal (and better) results for halo render. Old render
  now also uses PostProcess options (brightness, mul, gamma)
- Added option ("FBuf") in F10 Output Panel, this keeps a 4x32 bits buffer
  after render. Using PostProcess menu you will note an immediate re-
  display of image too (32 bits RGBA)
- Added "Hue" and "Saturation" sliders to PostProcess options

- Render module is still not having a "nice" API, but amount of dependencies
  went down a lot. Next todo: remove abusive "previewrender" code.
  The last main global in Render (struct Render) now can be re-used for fully
  controlling a render, to allow multiple "instances" of render to open.

- Renderwindow now displays a smal bar on top with the stats, and keeps the
  stats after render too. Including "spare" page support.
  Not only easier visible that way, but also to remove the awkward code that
  was drawing stats in the Info header (extreme slow on some ATIs too)

- Cleaned up blendef.h and BKE_utildefines.h, these two had overlapping
  defines.

- I might have forgotten stuff... and will write a nice doc on the architecture!
2004-12-27 19:28:52 +00:00
88534ee519 Added some missing undo pushes for the UV editor and UV Face Select Mode. 2004-11-07 13:15:04 +00:00
82cae482e9 Added undo in UV FaceSelect mode (3d window) and in UV Image window.
Brecht; can you give it a good test :)
2004-11-06 23:22:06 +00:00
01c17446ac Fix for bug #1582: LSCM mesh splitting based on seams gives incorrect results in some setups.
The algorithm used before to split up the mesh before unwrapping was based on
vertices, resulting in leakage in some setups. Now it's edge based, allowing to
select only two edges of a triangle, and not automatically selecting the third.
2004-09-06 14:30:28 +00:00
Alexander Ewering
96e0a103d4 1) Change the way "Align mode" is accessed in the UI: It's now a global
toggle for all pivot modes. The 2 new pivot modes have been removed
   from the popup.

   Instead, a new toggle button is added to the 3d view header.

2) Grab cursor mode. Cursor can be grabbed (and constrained to axis, grid,
   etc. while moving) like any other object. If no object is selected,
   GKEY alone grabs the cursor, otherwise pressing CKEY while in GKEY mode
   moves the cursor.
2004-07-18 15:57:33 +00:00
688a6de878 * User preference to select with the left mouse button
instead of right.

This basically swaps left and right, in most window spaces
so you can choose between:
LMB: Cursor/time slider/paint  -  RMB: Select
or LMB: Select  -  RMB: Cursor/time slider/paint

Aimed at:
1. Newbies
2. 1 button mouse mac users
3. People like me who are sick of having to constantly keep putting their brains into different modes when
 switching between other apps and Blender :)

Yes, the User Preferences window is a bit of a nightmare
now, a layout cleanup will be forthcoming soon...
2004-07-16 01:34:19 +00:00
700d9c5559 This adds two modes to the 'around' drop down in 3d header
3d Cursor, only Ob Centers
Median Point, only Ob Centers

They prevent rotation/scaling from effecting the scale/rotation of the objects and just effects their position.
This is handy for aligning objects if you constrain to an axis and scale, as well as other neato things :)

Intrr came up with the code and I hacked it into the GUI
2004-07-15 17:42:04 +00:00
e077328122 Added LSCM UV Unwrapping:
http://www.loria.fr/~levy/Galleries/LSCM/index.html
http://www.loria.fr/~levy/Papers/2002/s2002_lscm.pdf

Implementation Least Squares Conformal Maps parameterization, based on
chapter 2 of:
Bruno Levy, Sylvain Petitjean, Nicolas Ray, Jerome Maillot. Least Squares
Conformal Maps for Automatic Texture Atlas Generation. In Siggraph 2002,
July 2002.

Seams: Stored as a flag (ME_SEAM) in the new MEdge struct, these seams define
where a mesh will be cut when executing LSCM unwrapping. Seams can be marked
and cleared in Edit Mode. Ctrl+EKEY will pop up a menu allowing to Clear or Mark
the selected edges as seams.

Select Linked in Face Select Mode now only selects linked faces if no seams
separate them. So if seams are defined, this will now select the 'face group'
defined by the seams. Hotkey is still LKEY.

LSCM Unwrap: unwrap UV's by calculating a conformal mapping (preserving local
angles). Based on seams, the selected faces will be 'cut'. If multiple
'face groups' are selected, they will be unwrapped separately and packed in
the image rectangle in the UV Editor. Packing uses a simple and fast
algorithm, only designed to avoid having overlapping faces.

LSCM can be found in the Unwrap menu (UKEY), and the UV Calculation panel.

Pinning: UV's can be pinned in the UV Editor. When LSCM Unwrap is then
executed, these UV's will stay in place, allowing to tweak the solution.
PKEY and ALT+PKEY will respectively pin and unpin selected UV's.

Face Select Mode Drawing Changes:
- Draw Seams option to enable disable drawing of seams
- Draw Faces option to enable drawing of selected faces in transparent purple
- Draw Hidden Edges option to enable drawing of edges of hidden faces
- Draw Edges option to enable drawing of edges of visible faces

The colors for these seams, faces and edges are themeable.
2004-07-13 11:48:52 +00:00
506b78bfbb * Big, mundane clean up and edit of (error/ok/etc)
messages and pupmenu()s. Edited spelling and grammar,
 stylistic consistency, etc.

I added the guidelines and rationale that I used to the
 CMS here:
http://www.blender3d.org/cms/Language_and_terminology.338.0.html

Next step is to get icons in there, to make it easier to see
 at a glance what sort of message (and how much attention
 should be paid to it, or if it can be dismissed with a flick
 of the mouse, eg. boring remove doubles notifications)

mockup: http://mke3.net:9000/blender/ui/controls/error_ok_icons.png
2004-06-05 05:55:15 +00:00
0c64d26db3 Fixed a bug where From Window mapping in perspective view would give strange
results, caused by a little typo. The solution was proposed by bjornmose.
2004-05-03 13:23:19 +00:00
7ba91ad2da New UV Calculation panel and code. The uv mapping function was split up into
multiple functions and partially recoded. Because now all the uv mapping
settings are accessible throught the panel, no popus will be shown when
pressing 'U' to unwrap faces in face select mode. Also From Window to Cylinder
and From Window to Shpere became obsolete, as you can set this in the new
panel.

The panel contains buttons for all the existing uv mapping modes, and the
following settings:

- Cube size: For Cubical unwrapping.

- Radius: Radius for Cylindrical unwrapping.

- View Aligns Face, View Aligns Top, Align to Object: For Cylinder and Shpere.
Respectively means you are in front of the Cylinder/Sphere, look through the
Cylinder, or use the object rotation to determine how the cylinder is
positioned (old Cylindrical unwrapping).

- Polar XZ, Polar XY: With 'View Aligns Top' enabled, defines at which polar
you are looking.

- No Edges, Draw Edges, All Edges: Draw no edges, draw edges z-buffered on top,
draw all edges, without depth test.

All credits for this part (and also at least half of the other UV editor
improvements) go to Jens Ole Wund aka "bjornmose".
2004-04-05 17:08:00 +00:00
d7f3f66728 New UV editor / Image Window features:
- Draw Faces in the UV editor
- Draw Faces, selected in the UV editor, in the 3D view
- Draw Shadow Mesh in the UV editor (for faces unselected in the 3D view)
- Select Linked UVs (LKEY)
- Unlink Selection (Alt+LKEY)
- Stick (Local) UVs to Mesh Vertex on selection
- Active Face Select
- Reload Image
- Show / Hide Faces in the UV editor (H, Shift+H, Alt+H)
- Proportional Editing (O, Shift+O)
- Stitch, Limit Stitch UVs (snap by mesh vertex)
- Weld / Align UVs (WKEY)
- UVs Snap to Pixels on/off switch
- RMB in Texture Paint or Vertex Paint mode picks color
- Select Inverse in Faceselect mode

I hope these are all the features that were commited. The new UV Mapping
panel (and code) will follow later.
2004-04-01 12:55:12 +00:00
bbb94cd3df Fixed bug #963: UV editor wrong center
When using "From Window" unwrapping in a 3d view (that isn't square), the UV
coords would not be centered in the UV editor, even if the object was centered
in the 3d view.

Fixed two warnings (type definition defaulted to int for a variable that
should have been a float).
2004-03-28 22:13:25 +00:00
44a74dbf29 - added editmesh_[de]select_by_material function
- added mesh_set_smooth_flag, mesh_delete_material_index function
 - isolated some globals
 - got rid of reliance on meshdata in buttons_editing.c and material.c
2004-03-20 23:59:57 +00:00
aedf456938 - split the data structures that actually constitute a mesh
(MVert,MFace,etc) off into DNA_meshdata_types.h, to isolate areas
    of source that actually edit mesh *data* vs. areas that just edit
    mesh object information.
2004-03-20 22:55:42 +00:00
d5a1b582c3 two fixes:
- while Faceselect mode on Subsurf, it didnt render the changes. this was
  because the displaylist wasnt updated (the 3d window shows original mesh)
- added proper redraw event for F10-sound buttons when you add a new sound.
  somehow sound doesnt play anymore here... have to check further.
2004-01-16 19:30:25 +00:00
3805cf23f5 - fix for calling 'unwrap UV' from faceselect view3d pulldown. it needed
a 'winset' to activate window, otherwise header still active
- removed 'size' button from Magic texture, was accidentally added
2004-01-12 16:51:33 +00:00
2eed0e54ef bjornmose's UV mapping patch
two new options to uv auto calculation:
"from window to shere", "from window to cylinder".
the differences to sphere/cylinder mapping as is:
1. the around settings of the 3D view sets the projection center
2. the origin of the polar/spherical coordinate system always points out of the screen.
   so the rotation of the view affects mapping.
3. in the cylinder case the radius of the projection cylinder is read by a popup button.

Basicly what you need to do is rotate the viewport until the cylinder/sphere is aligned with the depth (Z axis) of the view, as if you where looking through the mesh from one end to another (makes more sense in the case of a cylinder), and choose the From window to cylinder/sphere mapping option.
2003-12-28 19:59:06 +00:00
825c40ed6a - and another fix needed due to the change in view3d matrices...
This one is the UV coord calculate function for FaceSelect mode.
2003-12-08 17:24:28 +00:00
a72fcb115b - fixed texture paint mode... and that all caused by fixing another bug!
again - reminder to self - the 3d window leaves in ortho mode default,
  and for evaluating it in 3d view you have to call persp(PERSP_VIEW)
2003-12-07 18:44:47 +00:00
10333bd1d3 - removed all #include "interface.h" from files. this is a local/internal
include only (use BIF_interface.h instead)
- split up interface.c in two files: NEW: interface_panel.c
- removed the temporal text files

WARN: FIX AUTOMAKE AND MSVC!
2003-10-15 19:23:54 +00:00
0d03929b9b Another huge commit!!!
First, check on the new files, which are listed below.
The new butspace.h is a local include, only to be used for the buttons
drawn in the buttonswindow.

- editbuts, animbuts, gamebuts, displaybuts, paintbuts,  work now
- i quite completely reorganized it, it's now nicely telling you what
  context it is in
- sorting error in panel align fixed (tabs were flipping)
- align works correctly automatic when you click around in Blender
- editsca.c renamed to buttons_logic.h
- button names are truncated from the right for allmost all buttons
  (except text buttons and number buttons)
- while dragging panels, you cannot move them outside window anymore

And of course fixed loads of little bugs I encountered while testing
it all. This is a version I really need good test & feedback for.

Next step: restoring material/lamp/texture/world
2003-10-10 17:29:01 +00:00
e889b375bd - forgot one event code in render...
- fixed the () in the && || code, typo... <blush>
2003-10-07 19:21:37 +00:00
dcf9213a48 - if( a || b && c) is (a || (b && c))
and not the other way! thats what you get with cleaning warnings. :)
2003-10-07 18:42:37 +00:00
f234b44d47 - another huge commit! read this!
- removed src/buttons.c and include/BIF_buttons.h
- added src/buttons.txt, which is the old buttons.c for review and adding
  code to new panels structure

- changed internal events to match new buttonspace structure
- added tabs for new shading group of buttons
- removed loads of little warnings, -Wall now compiles src/ almost without
  error (hint: setenv NAN_QUIET to see it all better)

Now I'm ready to do actual buttons -> panels conversion. I will do the raw
versions first, others then can cleanup
2003-10-07 18:24:02 +00:00
b5450f0815 added 2 new features:
- "Seperate loose parts" is an option in the new pkey popup (in mesh editmode) that seperates a mesh based on objects in it that are not connected.

- "Select same uv" is an option in the wkey popup (in facemode) that selects all faces in the mesh that have the same uv texture assigned as the current active face.

ps. first commit! I hope I can live up to expectations...but don't expect too much! :D
2003-09-20 20:58:14 +00:00
51c8bb6077 - OSX bugfix: drawing selection code for vpaint and faceselect happens in AUX
buffers now. It only works nice at OSX (tested, linux and windows do not
  support it nicely)
  This fixes the annoying flashing during paint or select
2003-06-11 15:43:20 +00:00
f2c40d3e37 Michael Velikanje's patch to renable Sphereical UV mapping.
Kent
2003-05-28 10:41:30 +00:00
ad3a972a25 added two extra uv mapping types to uv menu,
nothing big really
2003-05-03 16:06:30 +00:00
ceb3e8cc2a phew... a whole bunch of old and nasty files translated, including the
central mesh editing one.
2003-04-29 15:30:59 +00:00
5a9b727079 Ok last change for the night :)
Time to go watch er.

Note this was already done with face_old, img_old was probably just
overlooked.
(If you guys didn't notice I was sick for a couple of days but I'm back now
as you can tell)

Kent
--
mein@cs.umn.edu

Index: editface.c
===================================================================
RCS file: /cvs01/blender/source/blender/src/editface.c,v
retrieving revision 1.3
diff -u -r1.3 editface.c
--- editface.c  2002/11/25 12:02:05     1.3
+++ editface.c  2002/12/20 02:50:55
@@ -1202,7 +1202,7 @@
        TFace *face, *face_old = 0;
        short xy[2], xy_old[2];
        //int a, index;
-       Image *img, *img_old;
+       Image *img, *img_old = 0;
2002-12-20 02:52:58 +00:00
d0e346d544 updated .c files to include:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

Just need to finish cpp files now :)

Kent
--
mein@cs.umn.edu
2002-11-25 12:02:15 +00:00
Hans Lambermont
12315f4d0e Initial revision 2002-10-12 11:37:38 +00:00