- does proper edge detection with the crease angle given in the ac file
- the reader is much more verbose in case of broken files
- no more static variables
- std::stream based
- much faster, up to a factor of 50 for a polygonal test model
- if the file contains polygonal surfaces the loaded geometry is still
polygonal as long as the polygons are convex. Concave polygons are still
tesselated. Rationale: If the user needs triangular models he can throw away
that extra information with the osgUtil::Optimizer himself. But the read step
preserves as much extra information that is contained in the file as
possible. Also the polygonal models look a bit smoother than the triangular
ones.
- a huge cleanup
- the basic parsing logic from the original ac3d developer is untouched
- the writer part is untouched
The tarball contains a replacement for the src/osgPlugins/ac3d directory that
is based on the current CVS (2006-11-13).
I have tested that loader with a osgconv foo.ac /tmp/xx.ive on everyfoo. ac
file I could find (~200 from flightgear and the object database). I also run
my flightgear development with that loader -> here I see the models.
I run valgrind testcases on some selected models."
2 Getter/setter for _maxNumberOfParticlesToSkip that is used for filtering of particles during draw. This enables you to turn the filtering of by setting this value to zero.
3 Getter for retrieval of the first particle in the trail. This allows you to directly manipulate the trail from your application by walking from the start particle towards the end of the trail."
Submitted on Ben's behalf by Roland Smeenk.
"StateSetManipulator.cpp (rev 1.12, l. 85): cyclePolygonMode() is called but
no aa.requestRedraw() afterwards. Is this intended?
EventQueue.cpp (rev 1.8): in keyRelease & keyPressed KEY_Alt_R was mapped to
MODKEY_LEFT_ALT"
I've attached a small fix for this.
Cause: uncompressed mipmap handling was done only for RGB pixel format.
Fix: added condition for handling alpha and luminance formats too."
if continuous updating is set to false.
The problem was being caused by the camera update call never being made
if continuous updating was not set to true. This fix adds a flag that
is set when dirtyOverlayTexture() is called and checked in the update
visitor section of the traversal to determine if the camera should be
updated.
I tested the fix by making some changes to the osgAnimate example
program so it has continuous updating off and calls dirtyOverlayTexture
for each frame. The overlay texture now displays properly."
method may not take the node into consideration when computing its bound.
In this case of:
switch->insertChild(0, child, false);
switch->insertChild(1, child, true);
child will not be used in computeBound, but will be drawn.
Solution:
Changed compute bound to loop over children using an index instead of an
iterator. This behaviour matches that of the traverse method."
-----------------------------------------------
contained an 8-bit color map. The crash occured at line 545:
remap_row(currPtr, inbuf, w, red, green, blue);
Cause: The code was trying to write past the end of the buffer while
doing this remapping. The size of the buffer is determined based on the
value of 'format', which was 1 in this case since bitspersample is
8(indicating a 8-bit color map). The buffer should have been created 3
times as large since that 8-bit value is indexing a 24-bit color.
Fix: I've put in an if statement to set format to 3 if 'photometric'
indicates the tif contains a palette as the output data will always be
24-bit color data in this case."