QuatMulVecf Multiplies vector (3-float) by quaternion (rotation). Assumes it recieves a unit quaternion
QuatConj Quaternion conjugate
QuatInv Quaternion inverse (does not assume a unit quat)
QuatMulf Quaternion multiplication with scalar
QuatDot Quaternion dot product
printquat debug print function
Important notes:
- Full compatibility with old text objects not fully restored
(word spacing will be 0.0, need to set it manually to 1.0), will
either need version upgrade to 238 or a hack. Will check.
- lorem.c (about to be committed) contains BF copyright notice, but as
BF did not exist a few hundred years ago, probably best to remove it :)
- If you notice any cross-platform issues (especially beloved windows),
please report
- A few tiny warnings left, I will fix those issues still.
The rest has been said already - so have fun testing. And please do!
=== Reminder:
=== Documentation at http://blender.instinctive.de/docs/textobject.txt ===
alone with the following flags :
-Wall -Wno-char-subscripts -Wno-missing-braces.
the only one still worrying me is in rand.c line 57 :
rand.c:57: integer constant is too large for "long" type
but i have no clue about how correct cross-compiler and 32/64 bits friendly
see also my mail to commiter list for signed/unsigned issues
1:
* when a blendfile gets loaded, paths are corrected with OS specific slashes (see blender.c)
* made available BLI_char_switch(char *string, char from, char to)
* made available BLI_clean(char *string);. This function should be called whenever you're doing path stuff, so paths are correctly saved, and thus avoiding other path functions stopping to work
2:
* relative paths work now in sequencer too (due to slash mess that didn't work all too well).
still was using int for calculus... made it using 64 bits ints.
- The "disk free" indicator in the header didn't work for OSX, due to
a missing #ifdef __APPLE_
With a few tests I have discovered that when quitting Blender the filelist
in SpaceFile doesn't get free'd.
storage.c:
I have replaced strdup for the relname member in BLI_builddir with BLI_strdup.
and malloc with MEM_mallocN for the string member in BLI_addstrings().
filesel.c:
Of course also had to replace free with MEM_freeN in freefilelist().
In freespacelist (space.c) I added call to freefilelist for the SPACE_FILE
space type.
- removed displistmesh_from_{mesh,editmesh}
- removed EditVert.ssco
- removed unused functions for DispListMesh DerivedMesh
Still need lots more testing for this stuff.
- added G.editMesh->derived pointer... idea is to use this
for mesh derived from editmesh instead of Mesh->derived (as the
derived mesh tends to vary depending on what it came from).
This part could be cleaner, also there may problems with it not
being invalidated correctly.
- And most importantly: In case people were beginning to worry all
these edits were just crazy zr stuff, the big point comes about:
Incremental subsurf calculation is now enabled. This gives massive
speed improvements when editing a large mesh.
For the eye-candy happy: try setting G.rt==52 before entering editmode
and the edges and vertices (in optimal mode) will switch to displaying
visually the age since a region has last been calculated. Lots of
fun!
- removed DL_MESH displist type!!!! Now store a DerivedMesh directly.
- May still be some issues left having to do with releasing this
at the right time (old code just splashed free_displist all
over the place).
- cancelled previous commit to add RE_findTFAce, instead just added
a MemArena to render struct... free'd at end of render, can be used
to store other data as well
- switch rendering to using DerivedMesh API... this is slightly more
inefficient now because it is doing some unnecessary copying. Can
be fixed by defining a DerivedMesh function to convert the object
into a render object (on todo list)
- Added icons for the Widgets to blenderbuttons pic
- Added in header - if widget in use - three buttons to choose widget type
(hold shift for combo widgets)
- Hotkey CTRL+space now switches widgets on/off
I also noticed negative scaling doesn't work satisfying yet;
- for scale widget, using center didn't work correct anymore (fixed)
- negative scaling didn't even get applied! (fixed)
- but; scaling somethig negative now flips back to positive... ????
Last one i need Martin P for! Note that I had to change Mat3ToSize....
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)
- removed reference in render.h (really bad, shouldn't include a platform
specific header so widely unless really necessary)
- added M_PI, M_PI_2, M_SQRT, M_SQRT_2 defines to BLI_arithb.h... this is
a better place as it is more the "standard" blender math header. left
in winstuff.h as well for the moment for simplicity
- other changes are patches to code so everything works ok with this
shuffling.
In user terms: the motion on screen of the selection follows the motion of the mouse pointer.
Gives some errors when the constraint plane is nearly perpendicular to the view port though.
Added a debug print function for 4D vectors to arithb.c
Optimised the 3D -> view projection functions in view.c (a bit).
It used to be a simple hack, scaling lens with 100, and moving the camera
to the back with an equivalent amount.
Because of the hack, making it 100% compatible with older files I could not
achieve (yet?). To help reminding users, I've added a print when reading
old files with Ortho cameras.
Full description of how it works can be found here;
http://www.blender3d.com/cms/Render_changes.515.0.html
Cleaned code somewhat (half the size!) and applied some changes:
- made it compatible with selection flags for new mesh editing (edge/face)
- renamed 'face angles' to 'edge angles' and made it display angles for
2 selected edges too
- removed the confusing convention that always drawed the info if one
of the vertices of edge/face/angle was selected. now it only displays on
minimum of 1 full edge or face selected.
- made it react to "zbuf occluded selection" option (for zbuffered text)
- made it also colorize text for white theme color (TH_TEXT)
On larger meshes this info still draws very confusing. The idea of displaying
the info on 1 vertex selected was probably to show values while grabbing,
although that didnt really work for angles. One idea could be, for transform,
that it draws all lenghts/angles/areas that get changed during transform
All in all, still useful addition tho!
added a casts to:
blender/blenlib/intern/BLI_memarena.c
gameengine/Rasterizer/RAS_TexVert.cpp
Removed unused vars from:
blender/python/api2_2x/vector.c
gameengine/Ketsji/KX_PyMath.cpp gameengine/Ketsji/KX_Scene.cpp
gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp
gameengine/Rasterizer/RAS_FramingManager.cpp
gameengine/Rasterizer/RAS_Polygon.cpp
gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
Kent
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!
When the render output directory doesn't exist (on windows) the BLI_recurdir_fileops() function
tries to create a directory with no name. Added check if a name is specified..
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
- The function "convex()" in editmesh_lib() actually did not deliver
a proper test for convex at all. It was checking only if a quad could
be subdivided into 2 trias. Code for adding face (FKEY) used this
call in total confusing manner. That code was there in 1.40 already,
cannot find any clue what it was supposed todo... :)
Recoded convex() to deliver a proper test. FKEY will give warning on
attempt to make convex faces now.
- Added undo-free for editmode undo on file load
(well, not on OSX to be noticed :). Discovered thanks to adding filling
of curves in Solid display, and bugreport of intrr that ESC in grabbing
curve gives weird corruption.
actually, adding vertices and edges to displist.
Now the subsurfer gives editvertices a pointer to the subsurfed vertex
location; allowing not only vertices in 'optimal' draw to show correct, but
also gives proper handling of borderselect and lasso for edges. :)
Just select a bunch of faces (selection should be valid flat poly) and
press FKEY. Works in fact as selection-group optimizing. Nice in solid
drawmode!
Further some small additional fixes in the whole debugging process.
Found old error in loopselect for triangles, subdivision code, and
selection still.
NOTE: subdivide still works on vertex level only.
- hide flags now save correctly in mesh, to restore after going in/out
editmode
- after an extrude, faces/edges could have wrong select flags
(only in vertex select mode)
- new rule for addfacelist(); this now copies edges too, if an example
is provided. That prevents a lot of awkward code, still testing if it
goes as desired though...