Commit Graph

30 Commits

Author SHA1 Message Date
Martin Poirier
676b9013ea Tsk, noob mistake in intrr's radiosity commit (not collecting invisible faces).
Didn't check pointer, so it crashed if the mesh didn't have TFaces.
2005-07-21 05:43:49 +00:00
Alexander Ewering
3be3e68e2f Fix radiosity "Collect Meshes" to ignore TFaces set to "Invisible".
I hope this doesn't break anything - works fine here.
2005-07-16 01:06:55 +00:00
Daniel Dunbar
8da29921ba - added mesh_get_texspace (should be used instead of direct access)
which calculates texspace on demand if need be.
 - removed almost all calls to tex_space_mesh

There may be a few corner cases where this goes wrong (meshes with vertex
keys) but these should get ironed out by coming modifier system.
2005-07-14 21:57:18 +00:00
Ton Roosendaal
75ae1ae5ef Armature "XRay mode" now draws nicely with solid too. For it to work, I
had to add a new feature to the 3d window, to collect "after draw" objects,
which get drawn as last, after a clear of the zbuffer.

Same method can be used for nice OpenGL transparent draw, the system is
ready for it, do that later.

The huge commit is caused by cleaning up globals from struct Global. Many
variables were unused or just not needed anymore. Did that to move the ugly
G.zbuf to where it belongs, in the View3D space struct. :)
2005-07-13 19:42:08 +00:00
Daniel Dunbar
f4e1ea0b62 - add missing include 2005-07-12 17:26:19 +00:00
Alexander Ewering
6f5b3b10c8 Fix "Replace Meshes" in radiosity to actually only replace Meshes, and not
also delete lamps, cameras and anything else that was selected in the
"Collect Meshes" phase.
2005-07-12 16:24:27 +00:00
Daniel Dunbar
d7ab2a584e - added missing include 2005-07-12 13:50:42 +00:00
Martin Poirier
0c0205ad78 My Radiosity commit had some code from my base list ordering experiement. (It wasn't removed because it didn't use the macros)
Caused radio to often say "no vertices" when that was obviously untrue.
2005-07-11 23:23:06 +00:00
Martin Poirier
54cd0cf56d This commit fixes radiosity to correctly preserve and subdivide UV
coordinates.

  Known problem: Pin status bleeds a bit, so new subdivided UVs around
points that were original pinned can end up pinned in the end. Could be
fixed, or could just drop pinned status entirely.

Also, when gathering meshes, it doesn't add materials twice, so it's harder to bust the 16 materials limit.
2005-07-11 10:48:14 +00:00
Daniel Dunbar
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
Jean-Luc Peurière
c78e44cdc5 big warning hunt commit
lot of casts, added prototypes, missing includes and some true errors
2005-03-09 19:45:59 +00:00
Ton Roosendaal
106c3340ad Added a flush in radiotisitizer tool, to update draw of shooting patches
while it's doing a 'Go'
2004-08-29 17:05:19 +00:00
Willian Padovani Germano
c50e3f374f BPython:
- new submodule Scene.Radio, for radiosity: still incomplete, but in shape for demos, updated SConscript to include it;
- new functions in Window module;
- doc updates: adding a todo file and a new start page for our docs: API_intro.py + other updates;
- small fix in Ipo.c provided by Damien McGuinnes (thanks!): Nathan has a patch with IPO additions and fixes for this and more, but until it is committed, there's this fix for Ipo.getCurve('LocX'), LocY, Z and QuatW,X,Y,Z too, according to Damien.

Other files:
- radpreprocess.c: added check for "during_script()" so eventual msgs don't popup during scripts;
- drawmesh.c: made a pointer (display list) be checked before accessed, fixes crash in scripts that forget to update display lists for subsurf meshes when a 3d view is in textured view mode.

Script: updated bevel_center by Loic Berthe.
2004-07-25 16:55:45 +00:00
Ton Roosendaal
263d0823d3 Changes in code to allow double sided energy, but it's not possible
to activate it. Added comment in code how to enable it for those who
like to play (search for translu)

What doesnt work - according to me not satisfying - is fact that radiosity
hemicubes alias badly on short distances, so interior light doesn't spread
well.
2004-06-26 18:03:57 +00:00
Ton Roosendaal
f80809825e Fix for radio render.
Somewhere after 2.28c I fixed some thing in radio rendering that prevented
textures to be applied to radio energy.
Now it is a normal 'diffuse' energy again, and multiplied with actual
(textured) material color.

Small fix: the radiosity steps show up as numbers printed in time-cursor.
2004-04-21 15:44:37 +00:00
Ton Roosendaal
c0d1177ade bug fix #1127
Quads in radiositizer got normals calculated using 3 vertices only. this
can go wrong in occasions... and made blender hang.
Used CalcNormFloat4() instead!
2004-04-07 18:19:30 +00:00
Daniel Dunbar
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
Ton Roosendaal
b3911687ee - only cosmetic stuff; result of going over the output of mipspro cc
compile round. Wrong prototypes, unused variables, zealot const usage,
  and in action.c fixed insane & unreadable function call syntax.
2003-12-24 11:44:57 +00:00
Ton Roosendaal
99058defd8 - fixed type in printf (radiostity!) 2003-12-01 10:37:37 +00:00
Ton Roosendaal
3cf1cacd5d - Bug fixes for radio render (yes, releasing gives more reports!)
1. Rendering with material without radio flag sometimes caused scanline
   errors. The 'rad' value for rendercore loop wasn't reset in all cases
2. The color didn't truely match the color when using 'radio tool'.
   Cleaned up a few old lines in rendercore loop... accidentally one
   calculation was done double.
3. When adding new radiosity block, 'max iterations' is set at 120. this
   prevents noobies/experiment from going into radio-solving with a long
   itteration time (it exits at convergence < 0.1)
2003-09-27 09:38:09 +00:00
Ton Roosendaal
bdaa5eaad6 - fixed crash when you render a scene without emit Material and
new Radio render on.
  crash happened after redraw in 3d window.
2003-09-02 19:32:48 +00:00
Ton Roosendaal
470b5c0366 So, for the platform managers to check:
- the link order for Blender has changed, the libradiosity.a has to be moved after the librender.a (obviously for a new dependency!). Check blender/source/Makefile
- there's a new file: blender/source/radiosity/intern/source/radrender.c

Here's what the new code does:

Using the core routines of the Radiosity tool, each renderface with 'emit material' and each renderface with 'radio material flag' set will be used to itterate to a global illumination solution. Per face with high energy (emit) little images are rendered (hemicubes) which makes up lookup tables to 'shoot' its energy to other faces.
In the end this energy - color - then is directly added to the pixel colors while rendering, Gouraud shaded.
Since it's done with renderfaces, it works for all primitives in Blender.

What is doesn't do yet:
- take into account textured color of faces. Currently it uses the material RGB color for filtering distributed energy.
- do some smart pre-subdividing. I don't know yet if this is useful... Right now it means that you'll have to balance the models yourself, to deliver small faces where you want a high accuracy for shadowing.
- unified render (is at my todo list)

User notes:
- per Material you want to have included in radiosity render: set the 'radio' flag. For newly added Materials it is ON by default now.
- the Ambient slider in Material controls the amount of radiosity color.
- for enabling radiosity rendering, set the F10 "Radio" button.
- the Radiosity buttons now only show the relevant radiosity rendering options. Pressing "collect meshes" will show all buttons again.
- for meshes, the faces who use Radio material always call the 'autosmooth' routine, this to make sure sharp angles (like corners in a room) do not have shared vertices. For some smooth models (like the raptor example) you might increase the standard smoothing angle from 30 to 45 degree.

Technical notes:
- I had to expand the renderface and rendervertices for it... shame on me! Faces have one pointer extra, render vertices four floats...
- The size of the hemicubes is now based at the boundbox of the entire scene (0.002 of it). This should be more reliable... to be done
- I fixed a bug in radiosity render, where sometimes backfaces where lit

In general:
I'd like everyone to play a bit with this system. It's not easy to get good results with it. A simple "hit and go" isn't there... maybe some good suggestions?
2003-08-31 20:33:46 +00:00
Ton Roosendaal
502b672219 - translated the main radiosity structure comments 2003-07-20 15:52:25 +00:00
Ton Roosendaal
a31693cca4 * fixed code that tried to restore material links, after radiosity, and
when you want a new Mesh.
  Problem happened when over 16 materials are used for 'collect meshes'.
  Blender does not support (yet) more than 16. For clarity, I added a
  warning for the user when this occurs

  (was bug 370)
2003-07-11 12:45:04 +00:00
Ton Roosendaal
0b2b5dbfb9 More translations of c comments, now also include files! 2003-04-27 11:55:33 +00:00
Stefan Gartner
d35e081c08 (re)added path to render.h 2003-03-24 17:52:58 +00:00
Daniel Dunbar
de09cf7609 Remove references to obsolete misc lib 2003-03-24 17:34:43 +00:00
Daniel Dunbar
702880df55 Update things to use blender_test_break() vs MISC_test_break() and
remove use of blendertimer.h
2003-03-24 16:37:08 +00:00
Kent Mein
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