Commit Graph

66005 Commits

Author SHA1 Message Date
7b1d69a35c -> Stored Selections
Previously Blender did not store the order in which vertices, edges
or faces were selected in edit mode. In many cases it is useful to
have this data, however it is not desirable to store every selection
made. Now blender stores selections in the order in which they were
made in a linked list called 'selected' in  EditMesh. EditSelection structs
are created whenever 'EM_store_selection' from  editmesh_lib.c is called
(currently only on user selection with mouse). There are several cases
in which they might be deallocated by calling the 'EM_remove_selection'
function however:

-When the user deselects something with the mouse ('mouse_mesh' in
 editmesh_mods.c)

-When switching selection modes stored selections that are not relevant
to the new mode are removed by the 'EM_strip_selections' function
(multi-select mode is supported)

-When the vertex, edge or face pointed to by a certain stored selection is
deallocated

-When EM_clear_flag_all is called and where the flag passed to the function
contains the 'SELECT' bitmask.

-When leaving edit mode (making stored selection data persistent across
editing sessions will require modifications to mesh DNA later)

Todo:

There are a few cases still where you can temporarily end up with a stored
selection that points to an element that is no longer selected
(edge loop de-select can cause this for instance). The solution to this is to
add a call to EM_remove_selection from 'EM_select_edge' and 'EM_select_face' when
these functions are being used to deselect elements. For the sake of completeness
however this will also require that an 'EM_select_vert' function be coded and
called at all appropriate parts of the editmesh code. I will look into this
later in the week.

For now there are two tools that already take advantage of the stored selections.
The first one is 'merge at first or last vertex' in the merge menu (the 'firstvert' and
'lastvert' pointers are gone from EditMesh). The second tool is path select, which builds
a path between the last vert selected and the second to last vert selected. This allows you
to build complex path selections in a short amount of time like this
'select A, select B, path select. select C, path select. select D...'
2006-03-27 05:19:14 +00:00
07b88496e0 === Transform Display ===
Based on a patch by Matthias Derer, this adds the distance moved to a translation (grab) transform
(both 3D and 2D, although the 2D transform displays the normalised distance only).
2006-03-26 22:35:03 +00:00
f674689006 ==sequencer==
a tiny patch by Luis de Bethencourt Guimera (luisbg) adds RETKEY as completing a transform for consistency
2006-03-26 22:31:11 +00:00
2dce179e9d ==Sequencer==
This patch is mostly a usability patch for the sequencer, mainly written by
Anders Gudmundson and twisted a little bit by me.

- Lock Time to other windows
- Possibility to switch the X-Axis between frames and seconds-display
- IPO-Frame Locking for plugins (T-Key)
- Additional Popup to add HD-Sound and Movie at once
- In Timeline-Window: Sequencer windows only playback
- Make the IPOs a little bit IPO-Frame-Lock friendlier (doesn't jump;
  the frame that is drawn has the right dimension)
- Wheel-Mouse buttons make the sequencer window zoom again.
- The "This is not a sound/movie-file message" now reads "... or
  FFMPEG-support not compiled in!" since I learned some prominent
  people who complained, that hdaudio does not work for them ;-)
- Make SPACEKEY open up the "Add Strip"-Popup on the timeline and start
  playback in the preview window.
2006-03-26 21:36:42 +00:00
915cd5b80b Added python image pack/unpack per image. 2006-03-26 09:25:30 +00:00
e2637de00f select group with large selections could make blender hang. break out of the loop when no more can be done. 2006-03-26 01:54:52 +00:00
05fb90a867 Made group work from multiple selection's (before it used the first selected face/vert/edge)
so you can select 2 faces and then get all coplaner faces around both.
Added fp to face and edge edit data so as to store edge length and face area/perimeter. (in the union so minimal overhead)
current implimentation is fairly optimized.

Change to arithb.c was just to command Inpf as being the dot producr.
2006-03-26 01:02:22 +00:00
9fcf5f0957 ==paint==
change CKEY to toggle paint on or off in image paint patch by Stephan Kassemeyer
2006-03-25 22:29:48 +00:00
97fbe88dc1 Fixed a possible bug where counting faces was a short and could be less then the number of items selected.
Added Vertex group select menu- Similar Normal|Same FaceUsers|Shared Vertex Groups
2006-03-25 11:51:33 +00:00
ed36b797a0 Fixed a but where DupStart and DupEnd (duplivert settings) max values were larger then a short. which made the buttons act oddly.
Also added tooltips.

Idealy these would be unsigned shorts or ints because they should be able to go up to the max frame number 300000.
2006-03-25 10:06:40 +00:00
ec664be2d7 Added select group edges (Length/Direction/FaceUsers)
Added VecAngle2 - needed for grouping by normal and planer faces.
Made select face & edge group ignore hidden faces.
fixed a bug where hiding faces didnt update G.tot*sel
2006-03-25 06:32:39 +00:00
84d8b0cafe Added select group meny to mesh editmode.
Currently only works for faces.
Try Shift+G in face/editmode.
2006-03-25 04:37:40 +00:00
Ken Hughes
927be3725a Bugfix #3818: nmesh.insertKey() was not letting Ipo space know to
recalculate, causing a segfault when the curve was selected in the Ipo
window.  lattice.insertKey() has similar code.  Added calls to
allspace(REMAKEIPO,0) to correct this.
2006-03-24 21:56:29 +00:00
Ken Hughes
b174a988ae Bugfix #3772: Allows "Center Cursor" for 3D curves to modify the curve
center's Z location.  An eons-old comment in the code said:

/* Curves need to be 2d, never offset in
 * Z. Is a somewhat arbitrary restriction,
 * would probably be nice to remove. */

I couldn't find any other reason for the restriction other than 2D curves
limit the point's Z component to 0, so added a check to only forve the
center Z to 0 when the curve is 2D.  If there are other reasons for the
restriction, then this commit may need to be rolled back.
2006-03-24 20:39:38 +00:00
97a4e4f88d a bunch of small warnings fixes:
newline missing at end of file fixes:
TypedConstraint.h WheelInfo.h RaycastVehicle.h VehicleRaycaster.h
CcdPhysicsEnvironment.cpp

radiance_hdr.c fixed the following warning by changing type of local variable:
radiance_hdr.c:357: warning: pointer targets in passing argument 3 of
‘fwritecol rs’ differ in signedness

edgeRender.c,edgeRender.h same thing changed type of local vars to get rid
of warnings about signedness

RAS_OpenGLRasterizer.cpp removed unused variable unit line 1295

Kent
2006-03-24 16:40:32 +00:00
21c9ee54ca blender -P xxx -b crashed sometimes, still will crash in some cases if the python functions access screen data. but at least Blender.sys.expandpath wont segfault anymore. 2006-03-24 16:04:55 +00:00
d29503cc6d Made blender python work in background mode without a blend file loading.
Blender.c python initialization creates a scene when in background mode and when there is no scene.
Needed to skip redrawing when in background mode because it depended on screen data that wasnt there.
2006-03-24 15:46:26 +00:00
7417d07482 Attempted to unify and document Dupli* stuff.
DupGroup
DupObjects
enableDupVerts
enableDupFrames
enableDupGroup
enableDupRot
enableDupNoSpeed

see the epydocs for documentation at http://members.iinet.net.au/~cpbarton/ideasman/BPY_API/Object.Object-class.html - will update in a tick.
2006-03-24 08:36:39 +00:00
Ken Hughes
4b2f0225bf Fix problem with possibly random calls to MEM_freeN() due to uninitialized
variable in NMesh.c
2006-03-23 23:54:48 +00:00
391ae8f7ac Updated mallocn.c MEM_check_memory_integrity was casting
a string as an int and it was causing a warning.
I changed it to check to see if the string == 0
return 0 else return 1.

The only thing that called this function was memtest.c and it
had outdated code, so I fixed that...
        was calling MEM_set_error_stream updated to
                    MEM_set_error_callback

Kent
2006-03-23 17:45:40 +00:00
a837e1e8c0 oops, typo 2006-03-21 23:59:52 +00:00
Ken Hughes
e57ce8489b ===Python API===
Two small bugfixes:
   * Image.New() resets id.us to 0; it is set to 1 by new_image()
   * allow ima.depth and ima.size getters to propagate their own error
     messages (missing image was returning MemoryError)

Also, seems to me there's something funny going on with image id.us
accounting.  In do_image_buttons(), id.us is set whenever an image is
accessed vi the datablock menu:

        if(idtest!=id) {
            G.sima->image= (Image *)idtest;
            if(idtest->us==0) idtest->us= 1;
            allqueue(REDRAWIMAGE, 0);
        }

This is independent of whether a UV face is selected or not (and it also
seems that the number of UV faces linked to an image is not maintained
either).
2006-03-21 23:30:25 +00:00
742ba52072 Fix for a bug where python could save a sceneless blend file.
https://projects.blender.org/tracker/index.php?func=detail&aid=3902&group_id=9&atid=125
2006-03-21 22:30:29 +00:00
9cf9ce75af Fix for bug,
https://projects.blender.org/tracker/index.php?func=detail&aid=4021&group_id=9&atid=125
Raise an error instead of crash when python expandpath runs and no scene is loaded.
2006-03-21 22:16:41 +00:00
8383c44a85 Silly bug in using Compositor... the code that checked if a 3d rendering
was required (compositor can also be used with only image input) told
the pipeline not to render when no composite nodes were available at all,
and with button 'Use Nodes' on.
2006-03-21 11:29:03 +00:00
b746e27c82 Scene id->us user counter was always set to 1 on a file read, which did not
work for Composite nodes using a scene... when you delete such a node the
scene could get zero users then.

Now scenes count users correctly, and are initialized to 1 on the correct
place.
2006-03-20 20:52:04 +00:00
a89905d6fa === MINGW compile ===
Fixing compile for Windows mingw builds with cygwin make and scons.
Used SHGetFolderPath instead of SHGetSpecialFolderPath which is
better supported for mingw.
Thanks to Ralf Hoelzemer for the tip and the patch.

Let me know if any problems persist, I'll try to fix then.

--- Andrea
2006-03-20 17:25:42 +00:00
e469e4875f Cineon/DPX export didn't survive when Blender gave it negative colors.
Was missing test for it before turning it into unsigned short.
2006-03-20 16:53:13 +00:00
99dbcaa2f1 Fixed an error in the help printout and set out the formats that are not supported on all os's. 2006-03-20 16:24:00 +00:00
Ken Hughes
4fcd19013b Fix various gcc warnings. 2006-03-19 20:45:50 +00:00
ee5d54c0fa Threshold for non-flat quad detection was too wide still. Causing errors
of quads filling in in octrees...
2006-03-19 20:14:16 +00:00
cf0408a4f6 More environment map stuff:
- added a zoom factor for Planar Environment Map, allowing to zoom in or
  out on the reflected object. The zoom is corrected when rendering, so it
  just gives control over the resolution.
- Planar maps don't cycle anymore, but only render the front plane, using
  standard image texture extend mode.
- threaded rendering is back in envmap render
2006-03-19 17:50:53 +00:00
652bf89985 === fileseletor ===
patch #2554: My Documents and Desktop folder automaticly added to the Folders
pulldown of the filesector

Only affects Windows builds.

Uses shell functions to correctly get the My Documents and Desktop folders and
then add them to the fsmenu, right below the drive letters.

Needs shell32.lib linked, which is already linked by default for VS7 project files.
Platform maintainer please check if it has to be added to scons and MSVC6 project files.

Patch provided by Martin Poirier (theeth) - many thanks!
2006-03-19 16:36:37 +00:00
90e590936c Added a way to set the renderpath (dir and name) from the command line.
eg
Blender  -b c:\blends\test.blend  -o "c:\renders\render_#.png"  -x 0  -F PNG

-x 1/0 for extension enable/disable
-F for format/filetype

This is important because somebody elses Blend files can render anywhere on your PC, possibly a security risk.
And nice for renderfarms to be able to set the path without running a python script inside the blend file.

blender --help (render opts only)
Render options:
  -b <file>     Render <file> in background
    -S <name>   Set scene <name>
    -f <frame>  Render frame <frame> and save it
    -s <frame>  Set start to frame <frame> (use with -a)
    -e <frame>  Set end to frame (use with -a)<frame>
    -o <path>   Set the render path and file name.
      Use // at the start of the path to
        render relative to the blend file.
      Use # in the filename to be replaced with the frame number
      eg: blender -b foobar.blend -o //render_# -F PNG -x 1
    -F <format> Set the render format, Valid options are..
        TGA IRIS HAMX FTYPE JPEG MOVIE IRIZ RAWTGA
        AVIRAW AVIJPEG PNG AVICODEC QUICKTIME BMP
        HDR TIFF EXR MPEG FRAMESERVER CINEON DPX
               Use // at the start of the path to
    -x <bool>   Set option to add the file extension to the end of the file.

Added details to the -v option
Eg
blender -v
Blender 2.41 Build
        build date: 2006-03-20
        build time: 16:16:34
        build platform: linux-glibc2.3.6-i386
        build type: dynamic

Also fixed bugs where nagative/realy big  frames could be set- causing Blender to crash.
2006-03-19 16:25:32 +00:00
54004b8dcc Bugfix in environment mapping: Ztransp and Halo didn't show up. Bug is
there since the Render refactor of early january.
2006-03-19 15:16:02 +00:00
4bbc9df60d Added option to only render a single side of an Environment map cube,
allowing to use it for planar mirrors. Enable it with the new "Plane"
option in the Environment Map Panel.

Current default is to render the cube side that points to the positive
Z axis direction. To make it work, it uses the same image for all
other cube sides, so it will 'wrap around'.

Also made maximum resolution for environment map to be 4096x4096 now.
2006-03-19 14:26:56 +00:00
528ea06531 Updated to use Blender.sys.exists() which now uses BLI_exist rather then stat. 2006-03-19 13:31:44 +00:00
368cab399c === bugfix win32 - python ===
Fixed BLI_exist: In Windows stat doesn't recognize
a dirname ending is a slash, exept when it's
the root dir ("C:\\"), where it is required.
So trailing slashes are only removed when filename
is longer than 3 chars.
Also fixed Python Sys.c that now uses BLI_exist
instead of calling stat directly.
2006-03-19 13:28:01 +00:00
59ed566e86 Added support for group objects
grp.objects

To have an iterator assigned as well as a list. Since gp.objects is an ietartor this is expected.
grp.objects= someGroup.objects works now.

Some other small fixes made.

Made a wrapper for add_to_group() That handles the OB_FROMGROUP flag. Should be moved to group.c's add_to_group()

void add_to_group_wraper(Group *group, Object *ob) {
	Base *base;
	add_to_group(group, ob);

	if (!(ob->flag & OB_FROMGROUP)) { /* do this to avoid a listbase lookup */
		ob->flag |= OB_FROMGROUP;

		base= object_in_scene(ob, G.scene);
		if (base)
			base->flag |= OB_FROMGROUP;
	}
}
2006-03-19 04:45:58 +00:00
abab9fc3de Added object.dupliGroup so objects can access the groups they instance.
This is very confusing.
Since in object has
ob.setDupliGroup() # Enable/Disable Dupligroup
ob.getDupliGroup() # see if its enabled.
ob.dupliGroup # the group data this object is instancing.

Not yet added
ob.groups # Groups that use this object.
2006-03-18 17:24:59 +00:00
dc90a417cb Slight change, when moving the active object out of localview, keep it the activew object. Face Select mode, vpain etc need to complain if act ob isnt visible before the modes are activated. 2006-03-18 15:53:06 +00:00
bfe42eea43 Moved declerations to the top of the skope so as to work with MSVC?
started removeing // from constant.h to shut GCC's -pedantic up. realized // are used everywhere.
2006-03-18 15:23:02 +00:00
7b37efb35f Added Blender.Group module
The plans for the new Python API are too far off to have this module conform.

Needs testing with MSVC 6
2006-03-18 14:47:26 +00:00
148bc0a2e8 Tsk! A 'new' for filehandle wasn't combined with a 'delete', which is
probably causing the leakage issues we have exr in linux.
2006-03-18 14:45:15 +00:00
f356eac8a4 Update box unpack with faster python use
Update image loader, optional arg for not autocreating the image. - aslo removed some stuff that shouldent have been left in.
  Workaround for a bug in Blender.sys.exists()... should fix soon.
2006-03-18 11:41:07 +00:00
Nathan Letwory
8d9629cef9 ==SCons==
* The documentation for BF_QUICKDEBUG et al, missing from previous commit. Also
  provided by Joseph Eagar.
2006-03-17 16:42:43 +00:00
Nathan Letwory
b92c2197ec ==SCons==
* Applied patch #4012 by Joseph Eagar. The patch provides a way to quickly assign a list
  of libraries to build with debug symbols. Usage:

  scons BF_QUICKDEBUG=src,bf_blenkernel,bf_blenlib
2006-03-17 16:38:39 +00:00
73da80e757 We're now doing final conversions... float exrs to dpx amd png. Found a
couple of bugs in the new float support in sequencer;

- when effects have float buffer input, the effect strip itself only got
  byte buffers assigned, which bypassed the float versions of effects
- the float version of cross effect used ints to fade... should be float
- tests if an effect should be recalculated didn't check for float yet
- display of float buffer in sequencer preview showed black when no
  byte rect was in imbuf

Peter; we need this urgent, so I commit now.. check if this is according
to how you thought floatbuffers to work? thanks!
2006-03-16 20:42:00 +00:00
Nathan Letwory
fd54be1d46 ==SCons==
* Link to png_st. Jens reported linking with dynamic lib crashed, but with static doesn't.
2006-03-16 19:16:26 +00:00
e4439dd050 2 New tools, 'Loop to region' and 'Region to loop'
-> Loop to Region
Examines the current set of selected edges and seperates them into groups
 of 'loops' that each bisect the mesh into two parts. Then for each loop it
selects the smaller 'half' of the mesh.

Example images:
http://www.umsl.edu/~gcbq44/looptoregion2a.jpg
http://www.umsl.edu/~gcbq44/looptoregion2b.jpg

This tool handles multiple loops fine as is shown by these images:
http://www.umsl.edu/~gcbq44/looptoregion1a.jpg
http://www.umsl.edu/~gcbq44/looptoregion1b.jpg

Furthermore it handles 'holes' just fine as well:
http://www.umsl.edu/~gcbq44/looptoregion3a.jpg
http://www.umsl.edu/~gcbq44/looptoregion3b.jpg

-> Region to Loop

This is the 'logical inverse' of loop to region.

Example:
http://www.umsl.edu/~gcbq44/regiontoloop1a.jpg
http://www.umsl.edu/~gcbq44/regiontoloop1b.jpg

Both features can be accessed by the 'Edge Menu' in EditMode (CTRL-E).
2006-03-15 20:53:41 +00:00