Commit Graph

297 Commits

Author SHA1 Message Date
Ton Roosendaal
8712c7dab4 Essential cleanup for mess involved with reading files, initializing UI and
patching versions for UI settings.

Currently four different levels of routines for .blend file reading exist;

/* interface level */
1) BIF_init() -> calls 3
2) BIF_read_file() -> calls 11, optional 4
3) BIF_read_homefile() -> calls 11 or 12, and then 4
4) init_userdef_file()

/* kernel level */
11) BKE_read_file() -> calls 21, and then 14
12) BKE_read_file_from_memory() -> calls 22, and then 14
13) BKE_read_file_from_memfile() -> calls 23, and then 14
14) setup_app_data()

/* loader module level */
21) BLO_read_from_file() -> calls 24
22) BLO_read_from_memory() -> calls 24
23) BLO_read_from_memfile() -> calls 24

/* loader module, internal */
24) blo_read_file_internal()


Note:
- BIF_read_homefile() has additional UI initialize calls, like windows fullscreen and executing commandline options

- Reading from memory (12) only happens for the compiled-in .B.blend

- The "memfile" here is a name I gave to the undo "file" structure. Which is constructed out of memory chunks with basic compression features.

- the kernel function setup_app_data() sets globals like "current screen" and "current scene".

So far, so good. The levels as mentioned here clearly distinguish UI from kernel, and should enable for example game loading (runtime) or background (no UI) loading. In the past years however, 'bad level' dependencies were added, and especially the patches for 'file versions' were added in too many places. The latter is evidently a result of the problem that the "UserDef" struct cannot be initialized/patched if there's not a need for a UI.

Here's how the flow goes in four different cases:

----- Starting up Blender, in foreground with UI --------------------

- creator/creator.c, main() -> calls 1
- If the commandline contains a filename, it calls 11

----- Starting up Blender, in background without UI --------------------

- creator/creator.c, main() -> calls 11 if the commandline has a filename

Note: no Userdef is read, nor initialized. Please note that this was already an existing problem for using Yafray, not setting proper file paths in background mode. The Yafray paths don't belong in the User menu.

----- Starting up Blender as a runtime executable --------------------

This only has calls to 22

----- Loading a file from within the UI (with F1, CTRL+O, using pulldowns) -----

Only calls allowed to 2. It detects if a UserDef has been read too, and in that case the init_userdef_file() will be executed.

Hope this is understandable :)

-Ton-
2004-12-08 14:12:47 +00:00
Ton Roosendaal
d0cdf2bd4b More tweaks related to bump mapping quality;
While going over the code, I found out the "nabla", the size of offset
vectors for calculating derivatives of a texture, is a built in constant.
Even worse, the value was different for new noise types (musgrave etc).
So I've added a new slider for it in the procedural texture panels, which
by default is set to 0.025, the value of the old constant. Also made sure
it works with equal effect in all procedurals.

NOTE: a small Nabla will give sharper, detailed bump, but the effect also
becomes smaller, correct that in the Mapping Panel of materials.

For better & compliant control over the bumpmapping, I've also included
the Colorband output in derivatives calculus, so the bump output then
matches the color created. It's also a nice tool to finetune output of
textures for bumpmapping in general.

Bug fix; clicking on the rightmose 'item' in ColorBand didn't activate it.
Found out the ColorBand was slightly drawn off (2 pixels).
2004-12-07 14:46:48 +00:00
Ton Roosendaal
e4d428b539 Tweaked support for normalmaps to be OK.
http://www.blender3d.org/cms/Normal_Mapping.491.0.html

main changes:
- The "Map Input" in Blender for normals was negated
- Range for Z in normal map is Z (0-1) to Blue (0-255)
2004-12-06 18:05:42 +00:00
Ton Roosendaal
049adae624 Bug #1970
Objects being vertex-parented to a mesh, which in turn was being deformed
by a curve or lattice, were never update correctly.
Whilst this is a typical issue for our beloved new Dependency Graph, I
consider it worth at least solving for now. An issue since Blender 1.0
you know. :)

Solution is only working for this specific case; vertex-parent to deformed
object.
2004-12-06 12:24:10 +00:00
Ton Roosendaal
1e811c7886 Bugfix: normal mapping for textures wasn't rotated back to view space,
causing weird results on camera moves or object rotations.

Added: support for "normal maps". See for example:
http://members.shaw.ca/jimht03/normal.html

The Image panel in Texture buttons has new option "Normal Map" for it.
When this is used, normals are read straight from RGB values, and blended
with the current normal.
2004-12-05 21:49:13 +00:00
Ton Roosendaal
aad31875d7 Special bf-committers request; Lamp/World/Material now each have 10
channels to link texture to.

The amount of code changes seems large, but is mostly getting rind of
hardcoded values (6 and 8) for channels, replacing it with MAX_MTEX.

Further did some fixes;
- Ipo for Lamp showed too many mapping channels
- Texture MapTo buttons for lamp missed the slider to blend texture color
- Lamp texture mapping "View" only worked for Spot, now it uses lamp-
  view vector for all types. (Nice for projections!)
2004-12-04 21:49:02 +00:00
Ton Roosendaal
73b7d9f80b Fixes in static particles. Result of going over details with Chris Burt,
thanks for that!

- static particles that are being deformed (curve/lattice/armature) now
  display correct in 3d window. Only updates when particle system updates
  normally though
- static particles without "animate" set didn't deform even
- static particles used as duplicators had errors with extreme low "life"
  value for particles. Also, still cases could happen with unrotated duplis
  at the end of a static particle line (with Vect option)
- Added tooltip for "Step" option in particles
2004-12-03 20:22:37 +00:00
Ton Roosendaal
1411f7ed59 Fix for #1700 and #1941
When a font for 3d Text Object doesnt exist anymore, Blender could crash.
Thanks Rob Haarsma for fixing it.
2004-12-03 14:30:32 +00:00
Ton Roosendaal
81702927a8 Bufix for #1940
With material slider "Ray Mir" set non zero, but with toggle "Ray Mirror"
off, Blender accidentally entered a part of raytracing code, screwing up
the alpha value of the result.
2004-12-03 10:16:29 +00:00
Ton Roosendaal
a7e250e85c Bug fix #1937
In unified render, halos can give black/colored overflows. Found it this
happens with halos that are behind the camera clipping range. Halo clip
just had some weird code for panorama corrections...

In the provided .blend of report found 3 more glitches;

- after render particle system with Material Ipo, values for material were
  not restored correctly
- Meshes with particles didn't draw axis (draw extra) on correct location
- Same as above, axis didn't draw in selected color.
2004-12-02 14:52:40 +00:00
Ton Roosendaal
a34432aa8c Fixes in reading .dxf (bug #1883)
- fgets() doesn't recognize DOS strings in unices, made my own fgets
- reading polyline didnt support 3d lines
- reading polyline didn't create edges

All in all, this code isn't very nice and badly structured... a code
review or test (yes sirdude!) could have been useful. :)
2004-11-26 19:59:11 +00:00
Ton Roosendaal
9928ecc642 One free too many on shading displaylists, causes material-less objects not
to render.
2004-11-25 16:27:21 +00:00
Ton Roosendaal
a9d6a57745 Fix for #1887 and #1636
Old code in displist.c caused crash on OGL "render this view" option for
3D windows. No idea why this exception was in displist.c... must be for
old engine or so?
2004-11-25 11:30:56 +00:00
Ton Roosendaal
970ac5aa99 Bug fix #1880
Two accumulating errors, causing 'scanline' errors too, but now based on
using different filtering values for transparent shadows.
Was another 2 cases of unused variable render as well. :)
2004-11-24 18:53:45 +00:00
Ton Roosendaal
f7b8e05f8e Bugfix on irc report;
Static-animated particles didn't recalculate on render
when used for duplicators (did work for halos). Allows material/texture ipo
for animated motion.
2004-11-22 18:13:56 +00:00
Ton Roosendaal
0069a48897 Fix for strange (showed in windows only) error that delivered flat curve
deforms by default. Proved to be a [3] array passed on to function needing
[4] array. Bad bad...
Thanks Ole for finding it! :)
2004-11-21 10:42:42 +00:00
Jiri Hnidek
cbb66c68f0 - bug fix #1843
https://projects.blender.org/tracker/index.php?func=detail&aid=1843&group_id=9&atid=125

  function find_basis_mball() sometimes returned duplicated MetaBall as basis mball, which caused crash of Blender. It happened only when basis MBall object was used for duplication. It was propably caused by some changes in duplicator code.
2004-11-20 11:59:44 +00:00
Ton Roosendaal
cf1c76af15 - 2.35 splash
- Version code set to 2.35
2004-11-14 17:16:54 +00:00
Ton Roosendaal
c42d4156a6 Bugfix #1796
On undo (CTRL+Z) the flag 'save_over' was set, which caused the F2 and
CTRL+S save to not show "untitled.blend" but last saved file
2004-11-14 16:19:34 +00:00
Ton Roosendaal
7fae7b0cf9 - Disabled printf for undo (still works in debug mode blender -d)
- Made global undo to set default on 'old' files (2.34 too, so wait
  with saving a .B.blend without glob undo until release is 2.35)
2004-11-12 22:16:23 +00:00
Ton Roosendaal
ccc07d249a Small fix for deform lag in deforming curves on animted objects. 2004-11-12 20:31:34 +00:00
Ton Roosendaal
d673c4a862 1) Bug fix 1776
Lattices seem to have deform lag, when they're animated with Ipos.
Found out this behaviour is already from before 2.25... solved with
removing a where_is_object() from deform code, but dont fully grasp
why.
Tested with good demo file, with motion blur too.

2) No functional changes, just made 2 files compile without warnings;

- added extra ifdefs __NLA_BLENDCON for unused calls
- removed zealot 'const' from function protos and variables, these cannot
  work there, and hence gave warnings
- added void pointer casts for array conversions in matrix code
2004-11-11 15:31:44 +00:00
Ton Roosendaal
2e4a10253b Fix for bug #1756
This was caused by a very primitive method of interpolating quaternions.
It was converting quats to mat and back to quat, and then just doing
a linear interpolation. That whilst quaternions are renowned for having
good interpolation possible.

I've experimented with 2 quaternion interpolation methods, and can only
get one to work correctly... the "official" version from Watt brothers
I can't get working, both are in arithb.c now.

Will arrange *close* review with experienced NLAers for it! But testing
here gives fully predictable results.

Also changed;
- added pointer check in drawaction
- changed puldown menu for correct hotkeys for move NLA strips up/down
2004-11-11 13:17:32 +00:00
Ton Roosendaal
f7cc0cf342 Wrong vector math for hooks with falloff... now its OK! 2004-11-10 15:55:07 +00:00
Jiri Hnidek
48121a0b6a - fix for bug #1577
MetaElems aren't truncated. It was caused by bad filling of octal tree.

- bug fix: when non basis mball is in edit mode, then it is polygonised again.

- bug fix: fixed some other unexpected disappearing of MetaBalls caused by bad filling of octal tree.
2004-11-10 13:20:13 +00:00
Alfredo de Greef
459deaf11f Fixed:
Texture matrix bug in plugin code reported by Mel_Q.
Vertex colors, this was basically the same as the previous uv coord
splitting bug, for xml export, uv coord splitting was actually not quite
complete either (reported by richie).

Added:
Camera Ipo curves for DoF aperture and focal distance.

Aspect ratio set with AspX & AspY are now taken into account as well.
(needs yafray from cvs)

Bokeh parameters for DoF (also needs yafray from cvs).
'Bokeh' controls the shape of out of focus points when rendering
with depth of field enabled.
This is mostly visible on very out of focus highlights in the image.
There are currently seven types to choose from.:
'Disk1' is the default, the same as was used before.
'Disk2' is similar, but allows you to modify the shape further with the 'bias'
parameter, see below.
Triangle/Square/Pentagon/Hexagon, in addition to the bias control, you can
offset the rotation with the 'Rotation' parameter (in degrees).
'Ring', a weird ring shaped lens, no additional controls.
The 'bias' menu controls accentuation of the shape.
Three types available, uniform, center or edge, with uniform the default.

Although based on an actual phenomenon of real camera's, the current
code is bit of a hack and not physically based, and doesn't work all that
well yet (in yafray anyway). Since this is also mostly visible in the very
out of focus parts of the image, it usually also means that you need lots
of samples to get a reasonably smooth result.
2004-11-08 03:55:44 +00:00
Ton Roosendaal
b6e037049b Forgot to add correct changed force_draw_all in stubs.c 2004-11-07 20:15:16 +00:00
Ton Roosendaal
1ba95262f6 More undo goodies;
- Undo for editmode Font object
- Undo for posemode :)
  (btw; it also means posemode remains active on file load)
2004-11-07 20:11:42 +00:00
Ton Roosendaal
ac0bb78a20 Tweaked the force_draw() calls, to allow headerprint() to work while
doing a transform. Solves bug reported by Brecht about this.
2004-11-07 18:20:44 +00:00
Ton Roosendaal
0f84375d7a Lotsa undo stuff added;
- ALT+U undo menu shows history for global undo as well
- Added undo pushes for buttons window more consistantly
- Added it & tested for ipowindow too
- Added it in outliner
- And quite some missing occasions for 3d window editing
2004-11-07 16:49:46 +00:00
Ton Roosendaal
02e838c99b - Pending Hook work; falloff value for soft hook deformation.
Falloff= distance where influence becomes zero.
2004-11-06 21:59:35 +00:00
Ton Roosendaal
cae8b8783d - Added initialize to '4' for new tab variable in text window
(prevents crash reported by sgefant!)
- Selection outline for Curve objects didnt draw right after leave
  editmode
- outliner now default when first viewing Oops window (dangerous?)
- Zoom with ctrl+middlemouse works in Oops again
2004-11-01 20:50:42 +00:00
Ton Roosendaal
84b3980b92 Making Curve objects display smooth/solid was nice, but then the Surface
Objects should do that too, right? Bad testing... tsk! :)
2004-11-01 12:11:03 +00:00
Ton Roosendaal
6c04fe887e Just some nice updates in drawing (extruded) Curve objects;
- display of 'smooth' or 'solid' is correct now
- standard bevel and extrude displays in 'smooth' correctly now (with sharp
  edges where you expect it)
2004-10-31 13:51:36 +00:00
Ton Roosendaal
d292541cac For solid display of curves in editmode; found fix (thnx intrr :) that
hopefully prevents weird results in grabber... error was that the
editNurb was not used for triangulating.

Also; added drawing the wire as extra in solid display editing curves...
that for unfilled curves as well.
2004-10-30 20:46:10 +00:00
Ton Roosendaal
e1fb446ce7 Feat request intrr, he won a bet with me :)
Colorband sliders now activate automatic on a click closer than 12 pixels
away from it. No more clumsy 'act' button stuff.

BTW: Error in utildefines.h, ABS() was defined incorrect.
2004-10-30 16:11:36 +00:00
Ton Roosendaal
408702009e Finally something new!
- in Solid draw mode, curves without faces draw as wireframe now
- in Solid draw mode, curves without faces don't get fat outline on select
- in Solid draw mode, editing curves shows filled now!
2004-10-29 15:39:01 +00:00
Ton Roosendaal
1b293777b8 Brought back overkill of displist creation for armatures and deform...
Got some testfiles that I cannot get to work quickly, better do this
after release (again)
2004-10-28 21:12:26 +00:00
Ton Roosendaal
e2f33871be Duplicator object which is being deformed now gives deformed duplicates
too. Feat request & discovered by S68. :)
2004-10-28 17:22:10 +00:00
Ton Roosendaal
9326a6cf51 Report 1659
Delete object, after selecting it in Oops (not outliner!) crashed blender.
2004-10-28 14:47:53 +00:00
Ton Roosendaal
8682084834 Bug fix #1647
Making 'nice' code (split reused code in separate call) caused DupliFrames
option not to work, dupliverts & particles did, but yah, testing eh! :)
2004-10-16 12:05:42 +00:00
Kent Mein
e8b41d139c Martin DeMello's patch to add dxf import code for:
CIRCLE, ARC, ELLIPSE and LWPOLYLINE.

I made some modifications to it to clean it up a bit.

I entend to do some more dxf stuff in  the near future but figured
this is ready to go for now, and trying to clean up a bunch of small stuff
I've had sitting around for awhile. ;)

Kent
2004-10-15 13:04:21 +00:00
Stephen Swaney
4ac4629905 a patch for the Text editor contributed by themeyers.
adds new features for indenting and commenting.

Note: I am not sure if the best menu spot for these features
is under the Select menu, but we can argue about that later.
They do work on a selection, though.

from the mailing list post:

1&2. Added Indent/Unindent under Edit->Select
just select the text you want to indent and go to the menu (
note if nothing is selected Indent will just indent ( tab )
the line the line )

3&4. Added Comment/Uncomment to the same menu
same applies as above

5. Added Tab setting on the menu bar in text editor
Sets the number of spaces a tab ==
changing the setting will change the hole script

6. Added Auto indent
when you hit enter it goes to the next line at the same
tab number and the line above it ( needs more testing and input)
2004-10-14 23:37:04 +00:00
Ton Roosendaal
6346486995 fix for #1635
Field render, and field option for image texture, had error due to
returns in middle of calls... this bug was there already for long
while, not much used eh ;)
2004-10-14 23:03:12 +00:00
Ton Roosendaal
24cd65efb0 Typo in effect.c, bad testing :) 2004-10-14 22:39:13 +00:00
Ton Roosendaal
61f738e0f3 Bug fix & new feature;
http://www.blender3d.org/cms/Particle_duplicators.443.0.html

Static particle systems now can also duplicate children (Dupli Vert).
Even ipo's for children are evaluated correctly then, nice stuff :)
2004-10-14 22:20:42 +00:00
Ton Roosendaal
31956cda44 This fix, bug #1342, makes blender consistant, but won't really solve
weakness in design.

Issue was: if you delete the 'mother metaball', which is an object with
name without a number, the entire metaball family isn't polygonized. Sofar
so good, where it not that rendering still worked, because it searches all
objects in the scene for a family member with lowest name.

Doing such a search within the main drawing loops will become a major
slowdown, so this better isn't done.

I don't mind sticking to (documented) consistant behaviour. Alternative is
a flag in object to denote it's a Mother Ball, and check for that instead.
This isn't nice to code in current Blender though... we don't have a signaling
system where to insert such tests reliably, making it very hackish.

Jiri; I hope you can agree with the solution! :) Just want to have tracker
cleaned up, refine it to real bugs.
2004-10-14 10:15:35 +00:00
Ton Roosendaal
6cc560682c Bug fix #1341
Deleting all vertices in a Curve Path, crashed/corrupted a FollowPath
constraint using it.
Now it defaults to (0 0 0) for an empty path.
2004-10-14 09:18:26 +00:00
Ton Roosendaal
652427c856 Three fixes;
- bug #1307; copy full scene didn't update links in constraints
  (was an oldie bug!)
- also fixed same for Hooks, which even't didn't duplicate yet
- HOME in outliner (show hierarchy) now only does current scene
2004-10-14 08:52:12 +00:00
Ton Roosendaal
7b99fb79c3 Fix for reported Mesh+Subsurf+Optimal+particles, make linked duplicate, and
editmode crashed.

Cause: the stricter rules for when displaylists should be made failed on
the check for Effects (like particles).
2004-10-10 16:54:25 +00:00