Need-to-do resulting from Qt2/RH6.1/BMRT2.5/Papi
upgrades:
Finish up color widget (deal with colors outside
normal range)
Deal with 'frozen' mouse problem (anim window
refreshes GL, but particles aren't simulated and mouse doesn't respond
- replicate by loading lava scene)
Clean up layout stuff to reflect new Qt layouts.
Focus throwing is not the same.
Redo preferences panel to reflect changes.
implement new Papi features.
find out why R and B are reversed when loading
images in Qt2
General flow stuff:
mouse movement in an ortho window w/ automatic
GL refresh prevents QTimer events from occuring. Create a GL render object
that controls the updating of GL windows.
infinite light may not be display listed.
kill shader preview PIDs
polish save/load, add autosave.
rework polygon input
deal with unfound shaders
fix particle shader to copy/paste
completely rewrite camera class and camera
animation
don't give every primitive its own GL material.
Allow create/delete like RM shaders. Not having a hierarchy for push/pop
is going to be a hassle, tho.
organize GL drawing
write network client & add server code
for distributed rendering.
design and implement keyframe animation -
how best to do this?
b u g s where's
the damn raid?
there's something wrong with GL lighting.
system sometimes gets confused when actions
are deleted - particles aren't drawn and screen refresh slows way down.
This is rare, and has been around for a while, but I can't figure out what
could be causing it.
window placement is screwy. I'm not getting
good values from Qt, and the kludge is inconsistent.
my NumInput widget is causing X selection
problems because of auto-select on focus entry. This needs to be fixed
or at least kludged. I like the auto-select.
color sometimes gets normalized when switched
in surface shader widget.
n o t e s keep
in mind...
RiPolygon wasn't a very good choice for polygon
input. 'Professional' RIB exporters (Polytrans, Maya) output PointsGeneral,
so RiPolygon is only really useful for Font3D and AC3D. Find some code
somewhere for a standard file format loader. Don't want to write my own.
i d e a s hmmm...
Make shader list jump to desired shader by
keystrokes. How would this work with all the focus throwing I do?
Should I allow particles to use displacements?
d o n e one
step closer to never being finished...
12/14/99
Got some very strange behavior with the new
QString type in Qt2 that should not have been possible (value of
a const char* string passed into a function was changed to garbage
after setting a QString to its value). I don't trust the new QString, so
I'm going to use the old QCString as much as possible.
12/13/99
UPHEAVAL! CHAOS!
Upgraded to RedHat6.1
Upgraded to BMRT 2.5beta
Upgraded to new ParticleAPI
Ported flow to Qt 2.0.1
Everything is really flakey. Crash. Curse.
Repeat.
11/10/99
Just for kicks, I tried using libslcargs instead
of the more general piping 'slctell' to check shader type at startup. It's
a lot faster. Given that
probably everyone who uses flow will be using it with BMRT, maybe I should
just go ahead and use slcargs throughout.
11/09/99
Made an ugly hack to defer action hilighting
from an ortho window hit to mouse release. It seems to work just fine,
and interaction is much improved.
11/07/99
Been playing around with a homegrown subdivision
curve that I think I'll use for flow's animation. It will be different
to a keyframe curve - based on acceleration along the curve. Think rollercoaster
- it rigidly follows a specific curve (track), but it has acceleration,
braking, and is affected by gravity as it moves along the track.
10/24/99
Fixed minor bug in preferences
Made an 'about' box.
made it so particles are ignored in radiosity
calculations. This should be a switch so it can be turned on if need be.
decided to made development versions available
for download.
10/14/99
Changed the XY and ZY grids to only draw for
positive Y - makes things more intuitive for the ortho views, IMO.
10/13/99
Well, that certainly sucked. Just spent
the last two days tracking down why glGenLists() kept returning 0 and all
display lists weren't working. I came to the conclusion that it had to
do with GL context init - the ortho views share the same display lists
as the perspective view, but they are created before the context is initialized.
Theoretically, it was Qt's fault. I've got to organize the GL stuff, though.
10/07/99
Added image preview to the shader string file
dialog to browse TIFF files for textures.
10/03/99
Orthographic views are coming along quite
nicely, especially given that it's a total hack. Lights and actions can
be interactively moved and manipulated
started on some grid snap stuff
added icons and captions to temporary dialogs
and ortho views.
09/17/99
started playing around with orthographic views
for interactive manipulation
the GIG mailing list is active again. Cool.
I hope GIG's new owners do something worthwhile with it.
09/12/99
added render name option in perferences.
fixed a bug with rendering lines as spheres
based on velocity.
08/27/99
No updates in a while.
Added camera-facing disks as a particle primitive.
These render faster than spheres and are good for things like sparkles.
Added save/load of FOV in scene file.
Finally made an icon for 'Clear'. It was a
quickie, but at least the text is gone.
Disabled renderman command line options for
shader previews. -radio was making for some funky shader previews.
07/24/99
Fixed a problem w/ declaring RiColor and RiOpactiy
added some more documentation
07/21/99
created MLineEdit - simply a QLineEdit that
emits returnPressed() on focus out events.
added 'save base.scene on exit' option to
preferences
tweaked the preferences panel a bit
07/18/99
revamped polygon GL drawing and translations.
changed all external executables to be absolute
pathnames. This makes error checking easier and more robust.
changed execlp to execv to allow calling rendrib
w/ options (such as -radio, etc)
NOTE: options are saved in scene file, not
init file
Unfound shaders are dealt with, but I think
there's an issue w/ pasting an unfound shader.
07/10/99
shader rescan now works, but shader not found
needs to be dealt with.
GL now updates when parameters are changed
and animation is off.
action disabled status is now saved to file
parenthesis around disabled actions is now
fixed
fixed Vortex add bug
scene background color widget partial update
(only on show)
camera FOV widget partial update (only on
show)
more documentation
07/04/99
Still havn't heard back from Dave McAllister
about the Particle API.
Mostly cleanup and documentation.
Going to start converting all the function
names beginning w/ a capital to lower case.
06/30/99
Fixed a bug which only showed up under IRIX.
06/26/99
Got a lot of boring stuff done today. Most
of the config stuff is done now, as is the geometry stuff (the winManAdd
stuff still needs to be done)
started the documentation
06/25/99
Finished the toolbar stuff.
06/21/99
Not much work on flow recently. Did a lot
of work on devrep, which I renamed nerd but think will call snide (Simple
Nedit IDE). Also installed VMWare, which is very cool indeed. A bit slow,
but that's to be expected.
Added a mouse speed edit box to mainFlow.
06/12/99
Decided not to make the render progress dialog
modal, so number of processes, end frame, and other parameters can be changed
during a render. Won't be idiot proof, though...
Fixed up lights some. Mostly working now,
I think, but still needs to be rewritten.
06/09/99
Light groups are totally gefloogled. Need
to go over this carefully.
06/06/99
Changed shader string edit dialog because
of changes to Qt2.0 dialog semantics.
Moved more RIB rendering stuff to the new
class.
06/05/99
Started moving the RIB rendering stuff that
was in RenderPanelRIB into a new class, so the widget is only used for
setting parameters.
Added a progress dialog when directly setting
frame number.
06/04/99
Began porting to the Qt 2.0beta, but decided
not to continue. A number of things have changed quite a bit, and I don't
want to delay release because of this. Qt 2.0 doesn't really offer anything
that would be greatly beneficial to flow anyway.
Redid the toolbar location stuff. Safer and
easier now. Mostly complete.
06/03/99 3D-Day
So...the NVidia rumor was true! I figured
they would have annouced this at Linux Expo - guess I was wrong. My dual
333 w/ a TNT edges out an SGI R5K O2 for performance, but there are some
issues:
16 bit only. Very disappointing, especially
since the TNT is capable of nice 32 bit rendering. I hate running 16 bit
on my desktop. BMRT previews look like crap.
multiple vertices between glBegin(GL_POINTS)/glEnd()
has problems. Easily kludged, though.
points/lines are emulated w/ quads. For flow,
this is bad - I use lots of points and lines, and the emulation is a significant
performance hit.
Other than that, THIS ROCKS! 3D on Linux is
happening
finally. The Matrox G400 will be very interesting, as will the TNT2 when
the driver has 32 bit rendering. Hopefully 3DLabs will get in the game
as well. Full source from NVidia, Matrox being cooperative...things are
looking sunny indeed.
05/29/99
Shader pipe stuff is mostly complete. Sorting
the shaders is really slow on startup (popen() on each shader, read slctell
output, and sort to surface, displacement, etc.) popen seems kind of flakey,
too. Doesn't seem to return a useful error code if it can't exec the command.
Cleanup of some names and ugly stuff.
Got Cygnus's GNUpro and SourceNavigator the
other day. What a disappointment. All gui stuff is TCL(slow), and the install
scripts for SourceNavigator were totally broken. Decided to work on devrep
to give it search features (thinking of changing the name to 'dert'
(Development Environment for Reptile Thingies)). Very handy now.
Tooled w/ the Particle API to try out hair-like
particle systems. Looks like it would need a bunch of changes to do it
right.
05/22/99
Implemented turbulence for particle movement
based on Perlin noise. It's pretty slow compared to many of the other particle
actions, but the effect is cool. Very nice for smoke effects.
05/16/99
Created RglCone, RglDisk and RglCylinder analogs
to their Ri counterparts. Appears to be consistent, but with the right
vs. left handed coord system, I think I'm getting confused w/ double negatives.
Seems to work, tho.
Havn't finished the geometry stuff (closing
quadrics is not complete), but I think I should try to concentrate on getting
flow ready for release.
05/15/99
Began adding PGeometry (quadrics only for
now). Stuffing everything into a PolygonAction works, but isn't very pretty
or efficient. But it does work.
Rewrote RglSphere, now uses quad strips and
has consistent behavior w/ RiSphere. I got a NaN seg fault a couple of
times, but couldn't track it down. Keep trying.
05/10/99
Added a nice, large widget for editing shader
string value - also has a file dialog, so it will be easy to enter texture
filenames.
05/09/99
Completed shader string stuff at long last.
Havn't tested it much though, and a lot of that code is pretty old and
dangerous (lots of void* casts...)
Changed shader preview widget so that it doesn't
default to hilighting cell 0, 0. This was a quick patch, so I should check
it more thoroughly at some point in the future...
05/08/99
Init file stuff is mostly complete. Kind of
nice. Controls GUI config, external executables, toolbar positions, etc.
05/07/99
Added a whole bunch of stuff for customization
via the init file.
05/05/99
Added some error checks/init stuff for startup.
Got to start thinking about getting flow ready
for release. Want it to be out when hardware 3D support is ready for Linux,
and that may be getting close. Thinking about getting a G200, but will
wait and see about the TNT2 rumor first.
RedHat6.0 is slick, but AC3D won't run. Got
to hand it to the GNOME boys, they did some nice work. It's fun to watch
GNOME/KDE trying to outdo each other...I'm amazed at what they've both
been able to accomplish.
05/03/99
Added global toggle for shadows and true displacements
for preview purposes. I should isolate all the BMRT non-standard options.
Spent some time fiddling with making the button
icons.
Got a couple of SCSI drives on cobra - man,
what a difference. Now I need more memory...
04/25/99
Worked on lights a bit - spotlights are mostly
complete now.
Changed all the toolbuttons to use IconSets,
and added a flag to turn tooltips off.
04/17/99
Mostly tinkering for the last few days. Hacked
a thing to have polygon objects emit their own polygons - unreliable(synchronization),
but cool when it works.
Trying to be a bit more memory-friendly. Having
256MB spoiled me...
Got AC3D working again by installing the RH5.1
TCL RPMs.
04/06/99
Spent the last few days doing a bit of cleaning
up - there's still a lot of junk in a lot of corners, though (NOTE: clean
up NumInput!!!). Made a 'triple num input' widget that allowed a few of
the widgets to be smaller.
Moved over to the dual 333 as my main machine
- the extra speed is nice, but I miss the SCSI drives and extra memory.
03/30/99
Started some stuff to transform domains interactively.
Geez my math is bad.
03/29/99
Fixed some minor bugs and did a little optimization
w/ GL - this stuff is a mess, and needs to be better organized.
AC3D doesn't appear to work w/ Redhat 5.2
or SuSE 6.0. Bummer. I guess I'll have to write something that can accept
polygon output from Amapi.
03/26/99
Added a splash widget that prints startup
progress and creates global widgets. This should help me organize the global
widgets and sort out the dependencies between them, and it makes a nice
place to do error initial checks. Looks cool too. NOTE: AT some point,
go back and free pixmap memory when it's not needed.
03/24/99
Added the ability to switch active particle
group from the ParticleControlWidget, using a writable combo box. I like
the capability, but not the mechanism. It seems like it could possibly
cause strange behavior later on. Verify safety, and possibly reimplement.
03/18/99
Worked on structure for animation.
Now can create multiple particle systems.
I think I'll need some higher level construct later on to deal with actions
that may be common between the multiple groups.
03/15/99
Fixed the multiple rendering of frame 0 when
beginning animation render. Geez that was a stupid bug.
Started a widget that creates a tree of the
scene, with PFloats at the leaves. This will be used to assign a curve
to a float.
Cleaned up PDomainWidget a bit; moved float
title names into PDomain so that info can be obtained by other classes.
Began working on keyframed animation yesterday.
It's going to be a hack and won't be all that intuitive, but I think it
will be safe.
Installed SuSE 6.0 on the Windows machine
last weekend, and got rsh working from dragon. I'll probably do the full
server/client thing eventually, but first, I'll do a quick hack that uses
rsh for distributed rendering.
Wow. Haven't done anything in a while. Needed
a break.
02/28/99
made some modifications/additions to the Polygon
Tweaker.
added a default icon for the window manager.
02/26/99
Modified the GL grid so the center lines are
slightly colored to more easily distinguish X, Y, Z without having to look
at the labels.
02/25/99
Camera movement can now be done without animation
being turned on, so one can navigate around a 'frozen' particle system.
Cool with blend on.
02/23/99
Modified the 'rate' of individual source domains
in a polygon object to be scaled by the area of the largest polygon so
particles are emitted roughly equally over object surface.
02/13/99
Polygon objects can now emit particles normal
to the polygon surface.
02/12/99
Moved all the widgets except glPort in glWidget
to toolbars in mainFlow. Time to start cleaning up some of the GL stuff.
Default dir strings now correctly set $HOME
instead of being hard coded. On a related note, I need to reduce the amount
of global variables. They're getting out of control.
02/07/99
Finally started on client/server stuff. Sockets
suck. It'll probably take a fair while before I have things working reliably.
Think I'll use CygWin for the Windows client rather than write it natively,
mostly because of fork().
02/05/99
Poly can import RIBs from AC3D, but
the 'PolyTweak' widget has to be used to invert handedness of polygons
and sometimes normals. No big deal. Don't think I'll do much more on polygons
- seems OK for sources, but w/ hundreds/thousands of Bounce domains, things
get very, very slow.
Fixed crash deleting last action in list.
My stupid mistake.
02/01/99
Ahhh. I'm not crazy. Font3D was outputting
bad geometry. Had a look at the source and fixed it for RIB. Fix should
work for the other exports as well - I'll have to contact Font3D's author.
Import now behaves as I think it should, but I'll have to try importing
stuff other than Font3D.
01/31/99
Worked on lights a little bit. Added copy/delete,
and started on spotlights. This code needs to be cleared up - it's a bit
confusing as to what happens w/ copying and operator= for the light objects
in relation to GL_LIGHT_#.
What the hell is going on w/ polygon import?
Am I screwing up or is Font3D's RIB export to blame?
01/30/99
Got basic polygon import working (RiPolygon
triangles w/ normals only). Works well enough for Font3D, which was the
intention. Font3D doesn't seem to be outputting all the triangles w/ a
consistent orientation, but as long as GL_CULL_FACE is disabled and RiSides(2),
everything looks ok, except for the back of the objects, which I think
are just screwed up anyway.
X-selection kludge didn't work 100%. Going
to increase timer value. This sucks.
01/29/99
Hacked a kludge for the X-selection/autoselect
problem using QTimer. It's not pretty, but it works.
Can now load displacements from scene file.
01/25/99
Began work on ParticleControlWidget to allow
swaping ParticleControl* object.
'flow' will probably be entering a highly
unstable state for a while while I move from the current global object
stubs to a reasonable scene format.
01/24/99
Added 'combined' preview button to SurfaceTabDialog
so user can preview surface & displacement together.
Whipped up a displacement shader to compliment
the enhanced MBALava shader from Larry and re-rendered the lava/fire animation.
Wicked. Shaders are awesome. Need to implement the distributed rendering
soon. Complex scenes w/ complex shaders are getting s...l...o...w...
01/23/99
Woohoo! Displacements! Some holes, but mostly
complete.
Added enable/disable to shaders for previews.
Useful for comparing surface, displacement. Should I save this info in
scene file? Probably not.
Changed addParticleAction to a tab dialog.
Looks better, is smaller.
01/22/99
Got rid of zombies resulting from fork()ing
shader previews.
Got rid of hard coded strings in shader manipulation
widget. Should be able to implement displacement shaders soon.
Added displacement shader tab in mbaSurfaceTabDialog.
Doesn't work yet.
01/20/99
Got rid of zombies resulting from fork()ing
scene previews. Shader previews still need to be fixed.
Slowed down mouse movement. This should be
a user-controlled variable.
Put a catch before RiBegin() for scene and
shaders if filename can't be opened for write.
All temp RIB files are now written to ./RIB.
Make this dir a variable (tmpRIBdir).