Archives
Oct-Dec 2002
|
March 28, 2003
Getting the renderer exports to support UV mapping better. It's complicated since each renderer has its own way of specifying meshes and textures. Turns out I had the world space coordinate mapping screwed up for POV-Ray, but it's fixed now. The VRML export supports UV mapping as well now. POV-Ray 3.5 supports UV texture mapping, which is great, but it took a while to nail it down. Here's a flat half-cone mesh exported from Leveller 2.3 with a tiled texture image that's been scaled down and rotated forty-five degrees.
Unlike some other renderers, POV-Ray doesn't just map UV (or ST) coordinates directly into a texture bitmap. Instead, it takes the XY plane (at Z=0) slice of whatever the object's texture happens to be. This is powerful stuff because it is very flexible, but in turn it requires more understanding to get everything to come together correctly. Looked into physical media distribution (CDs, printed manuals, product boxes) for Leveller 3.0. The costs aren't too bad, but they're not trivial either. Leveller's not expensive enough to absorb them, so the program needs the extra value provided by 3.0 to make it worthwhile. And that version has to be stable long enough to sell out before the next version happens; otherwise it becomes obsolete inventory. With physical media, the pressure to switch to an annual update model goes up, to give the boxes time to move.
March 22, 2003
The 2.3 beta goes on. The signup response, like it was for 2.2, was very good, indicating either great faith in the beta's quality or that a large proportion of Leveller users don't mind using betas. Well, the more eyes, the more bugs we'll squash. In response to a customer request, selections can be moved instead of just copied. Unlike a paint program, there's no obvious "background" elevation with which to clear the originally selected area, so the document maintains a "selection float method" parameter. One can configure the original area, when floated, to flatten to the water level, to the heightfield's min or max elevation, the selection's min or max, the Flatten tool's elevation, or to a specific elevation. Got transformed box reference shapes to properly draw on the overhead map view. The most frequent such transform is for buildings, to rotate them around the vertical axis. Before, they would appear unrotated.
March 19, 2003
Vectre 1.0 is finally out; it's no longer beta. The differences since the beta are small but useful: arrow key object nudging, and the document open/save dialogs show the customizable folder buttons. You can get your free copy by clicking here.
March 16, 2003
Well, the Leveller 2.3 beta programme has officially begun. Be interesting to see, as always, what comes from it. When Leveller was small, I could keep a handle on its entire feature list, but today it's like running a small country. I don't know where I'd be without users helping me test the code.
I guess there's a first time for everything. Vectre managed to surpass the Leveller Demo as the most popular program download. Probably a combination of people replacing older expired versions or trying it in response to the newsletter mailout, but still, it was weird to see something other than the demo on top of the download stats.
March 14, 2003
Added a Move tool for the selection marquee:
It lets normal selections be relocated without modifying the heightfield. A standard feature on paint programs but missing from Leveller. Until now, anyway. In terms of applications, it makes manual step-and-repeat tasks much easier.
March 12, 2003
Even if Vectre never hits the bigtime, making it was worth it because it helped me find a longstanding but subtle flaw in Leveller. For some reason, zooming out by clicking the right mouse button was never as smooth as zooming in (left-clicking). Turns out I was accidentally doing a both-buttons-down safety check wrong in the right button's mouseUp handler. 2.3 has the fix, and what a difference. Both Lev and Vectre are smooth as silk now.
I was trying to reconcile monism with string theory, and hit upon several interesting and elegant ideas concerning the possible true nature of substantival space. The details are available in Monism and String Theory
March 10, 2003
I've updated the ASC plug-in to version 2.1. You can make it attempt pointcloud-to-surface conversion and level connection to smooth in the gaps my algorithm currently leaves behind. You can also try just level connecting the pointcloud alone, which in some cases works okay but is many times faster. Or you can import the pointcloud alone.
March 7, 2003
Turns out ASC format DEMs aren't always based on a regular grid sampling -- the groundpoint locations can be anywhere, so I had to change the ASC import plug-in to use a general-purpose pointcloud-to-surface conversion. My algorithm currently leaves numerous unfilled holes in the surface, but I noticed that selecting them and then using the Level Connector plug-in comes very close to a solution.
March 4, 2003
Turns out Leveller 2.0 and higher weren't forwarding right mousebutton nor modifier key events to brush tool plug-ins. It's been fixed in 2.3, fortunately. A classic case of two C++ abuses: an overridden method in a brush class and a default method argument that allowed the modifier key events to be reported as nonexistant. Well, live and learn. At least the plug-in API doesn't need to be changed. If you get a GPF in Daylon Life, try downloading the latest version. Turns out the edge display filter in the first release was accessing one scanline past the end of an internal bitmap buffer; this is fine in debug builds but not in release builds. The problem is intermittent because it depends on how the bitmap is aligned within allocated memory pages. Version 1.0.0.1 has the fix. Seems Daylon Vectre is quite popular. It's almost eclipsing the Leveller demo as the most popular download. My first reaction was to think that maybe there's a significant percentage of people who will download anything that's free, but on the other hand, Vectre's been out for a while, as has the Internet, and people are fairly discriminating. Daylon XaoS, unfortunately, has been a bust. Hard to say if it's because it's open source or because fractals have been done to death. It's going to join Vectre and Life as freeware. Kind of a blow for my commercial open source graphics app experiment, but then again, XaoS wasn't popular as a pure open source play either. And experimental data is valuable regardless of outcome. You gotta give the people what they want, and find out what they want. :)
February 28, 2003
Finally got the Life program to a releasable state. Here's what it looks like:
Static pictures don't do it justice since the fun is watching the image vary over time, but it shows the idea. I was going to make it a Leveller plug-in but then thought, like Vectre, it has a certain charm as a standalone app. You can also copy the generated image as elevation data directly to Leveller using its binary clipboard format. From the When Worlds Collide Dept.: I'm continuing explorations into open sourcing Leveller, and at the same time hearing out server-based copy protection vendors. Naturally, I'm exercising a great deal of caution. I wouldn't mind less piracy, but not at the expense of unduly inconveniencing users. If surveys support a lump-sum public buyout of open source, then I'm inclined to do that.
February 25, 2003
Boy, yesterday and today turned out very philosophical. After the previous log entry, so many other things came to mind that they just sort of wrote themselves. For those interested in that sort of thing, you can see what resulted at these links:
Relativism-Compatible Cosmic Inflation I'm neither a professional physicist nor philosopher, I know. But in the incredibly rare event that something I bring up helps move the world even a little bit forward, there's nothing to lose by writing stuff down. :) And maybe the more important thing is, even ordinary people need to understand the world and make peace with existence. No matter how much the geniuses of our time explain things to us, it is still with our own minds that we must interpret their words and try to grow. Life without introspection is meaningless, and each of us must ultimately examine ourselves by ourselves.
I was apparently credited for my Gems III filter.c module modifications (filter_rcg.c) work by the Linux transcode project. But (as I mentioned to them) they should credit Dale Schumacher too, since he did the real core work and my changes were just optimizations.
February 22, 2003
It being Saturday, I thought I'd contemplate cosmology. This is actually a continuation of something that occurred to me last week, but more ideas have come along that might be worth writing down. I thought about Alan Guth's theory about cosmic inflation. He came up with it to explain how the cosmic background radiation is so smooth. If the early universe expanded normally, there wouldn't have been enough time for its parts to mix, and thus the background should be far lumpier than it is. But since there was time, the universe must have expanded much faster. Since the required expansion rate is supraluminal, my reaction was that the early universe's matter must have (according to Special Relativity) travelled backwards in time and collided with itself, raising the already considerable temperature and density of space even higher. But Brian Greene (the author of The Elegant Universe, who graciously wrote back to me after I asked him about it) explained that it was only space itself that expanded, not the matter within it, so there were no temporal consequences. One interpretation of the smooth background radiation is that it represents a snapshot of the universe at the very moment of creation, in a zero-dimensional spatial point, and thus all matter was energetically equivalent (plus or minus some tiny quantum variations) and would inherently have similar temperature. The later expansion of the universe was apparently highly symmetrical and had little or no amplification of these initial states. Thus, no need for mixing to reach thermal equilibrium. When we look at the cosmic background, we are looking at the thermal signature of the universe's original explosion point, and that's that. If we're not satisfied with that theory, then inflation is appreciated. But if it was only space that was expanding, then it means space by itself is a real entity (what philosophers call substantivalism. As opposed to relativism, which holds that the space is merely the distance relationship between real things. Since the Michelson-Morley experiment failed to discover an all-pervasive aether, relativism has been fashionable, although there are strong arguments for substantivalism). Inflation, then, makes a strong case for substantivalism, but substantivalism is hard to prove because our known laws of physics only work on real things like matter and energy. How can we possibly observe changes in space itself? What would those changes be relative to? Against what frame of reference could we observe such changes? It makes as much sense to say that space expanded greatly in the early universe as it does to say that all the matter within it suddenly shrank by a great amount. To support relativism, I thought that maybe the universe's matter expanded supraluminally right from the get-go. Considering that energy at that point in time is infinite, it's reasonable to assume (thanks to the Uncertainty Principle) that some significant percentage of matter would have been propelled past the speed of light. This helps explain at least five things:
Given the warping, there would also be regions of the early universe where matter would not be anymore travelling perfectly away from the center of the Big Bang. This would make some regions clump together and others to have their density lowered. Well, it's a theory. If you've read this far and are wondering why I pursue such things, I'm afraid I don't have an answer for that. :)
February 19, 2003
Updated the SHPDUMP utility to process the .shx (shape index) and .dbf (database table) parts of ESRI shapefile sets. Shape index files are trivial, but the program will verify that the index data is correct, which is a useful test. Here's some sample output:
February 18, 2003
Added a missing UV map type (horizontal cone) and finally got around to adding the UV map archiving code so that when you save a view, upon loading the current UV map changes correctly. Persistence (storing object states on disk for later retrieval) is such a hassle. The moment you save to disk, the data can now live unchanged while the program that wrote the data continues to change, thus causing an interpretation mismatch. Of course, we use file version IDs and keep careful records of old file formats, but still. It's especially rankling when you see the characters on Star Trek flawlessly interface their computers in less than a minute to whatever alien data they come across. :) The scene pane now has an overlay panel similar to the map pane's. With a simple click you can change various 3D render settings, show/hide water and textures and their transparency, etc.
February 17, 2003
Updated the Raw Binary plug-in to support pixel gapping and scanline padding. Most heightfield formats don't have interleaved data, but may as well play it safe.
February 15, 2003
My feelings of nostalgia and my awareness that I have tons of old Leveller-related images lying around collided forcefully today. After going over them, I created a gallery subsection and placed them there. The main gallery was updated to include some old movies and even a Web article I wrote that (for reasons no one can recall) didn't get published. The material is excellent if you're new to Leveller and what to know what it's about. Oddly enough, I failed to locate any promo material for Leveller 2.0. Turns out (courtesy of the Wayback Machine, an Internet archive) I was working at Electronic Arts at the time and settled for a mere what's-new announcement with the 2.0 splash screen as the graphic. It rings true, I guess... I remember being dead tired all the time. Unless you have a terrific urge to crank out video games or related stuff, or regularly drop caffeine or speed, don't work at a game company. :) Still, I can't believe it. A major version number release, and no promo. History is going to judge my harshly on that one. Well, I won't make the same mistake with 3.0 -- it'll have an introduction we'll all be proud of. :)
February 12, 2003
Since Leveller 2.3 is nearing betaness, I've been documenting its new features. Which (despite what others may say) is a pleasant diversion from programming. Instead of a constant edit-compile-link-run-test-debug cycle, you just have editing and a snapping of the occasional screenshot.
It's also a great way to assert code conditions. When documentation sounds fuzzy, it sticks out and demands clarification. Clarification, however, demands verification that the program actually does what the documentation says. If it doesn't, the documentation now acts as a spec (damn handy, that). I've always found writing documentation towards the end of an update cycle to be of considerable help in finishing the program code. I also write fiction on a semi-regular basis, and documentation is a whole other world. It's neutral. It's formal. It's dry. It's succint. It's businesslike. The editorial standards are different. The target audience is different. I can see why nearly everyone would sooner rack their brains developing difficult algorithms than write this stuff. At least the former involves some creativity. And you don't even have to be a real writer -- as long as the code compiles and you can debug whatever fails, you've got it made. Until source code gets critically panned the way movies do, writing it will always be preferable to writing docs. I suppose in some strange parallel dimension there are societies where programs are to them what books are to us: works of art in addition to containers of information. There'd be a Roger Ebert type person regularly reviewing source code, giving it the thumbs up or down, and that would significantly affect sales. "AcmeSoft's implementation of quadtrees is uninspired." he'd say. "But that's how sequels always seem to go. I don't think anyone really expected them to surpass the perfection of PolyView 1.0. Why they even bothered is beyond me -- 1.0 made the perfect statement about the geometric condition already. It revealed the essential truths that needed to be revealed, in certainly the best possible way, even if it was limited to two dimensions. Any great work leaves room for its users to ponder higher possibilities; that's what makes a great work entertaining. It was a definitive, conclusive work that stood on its own and expressed its core goals beautifully. "Just look at this part where the editing is clearly not tight enough. Huge blocks of code that essentially add nothing to the program. And the sections that are of some use don't mesh with the overall theme. Why three extra types of container templates that don't materially improve upon STL? If the director was trying to tell us something else, surely it would have been better to put those pieces into another program. Subplots can work, but it takes real skill to integrate them properly. If I had to guess, it looks like the producer was running out of time and decided to just hack something in or copy/paste code from somewhere else. It does the job, I guess, but it's not art. "I did, I admit, like the part where all the application preferences were consolidated into a single tabbed dialog using a well organized set of C++ classes. Defining a base CPrefs class and consistently inheriting from it was a wonderful performance from Thomas Krews. He's a true professional, and he carries the whole program with the sheer strength of his coding, but I'm not sure if it will be enough for most users. You can see how his mere presence fires up the other developers to do their best, but in the end, they can't save a project with a fundamentally flawed architecture. All the pieces have to come together."
February 10, 2003
Added a view navigator dialog to Vectre, similar to Leveller's map navigator.
February 8, 2003
Some of those ESRI shapefiles have unbelievable amounts of fine detail, so I updated Vectre to allow zooming in to 128x. That and some more shape/point intersection speedups. Here's an example magnification, from 1x, 6x, 32x, up to 128x:
Apparently Leveller 2.2 wasn't spanning selected regions properly. It's been fixed, but it breaks my heart because I could have sworn that had been put to rest. As near as I can tell, it looked like a case of breaking one thing while fixing another. If you develop software (or want to) I can't stress enough the importance of keeping good work records; they will save your butt someday and make it all worth it. Which is why I don't feel too bad when bugs crop up; just think how many more there would be. The ratio of bugs to code is what matters.
February 7, 2003
Added a "sphere section" UV map type to Leveller. It lets you map a heightfield to an area bounded by latitude/longitude, thus curving DEMs in a more realistic manner. It's also good for showing more of a heightfield's foreground while still keeping the background visible, since the camera doesn't have to be pointed downwards as much.
The effect is exaggerated for the above screenshot, of course; normally a 30-degree arc covers most of a continent. The simpler sphere map now supports arc ranging. This is handy in still views because one can make all of the heightfield pixels face the viewer instead of wasting half of them on the planet's unseen far side.
February 5, 2003
Added per-spline bounding boxes to the Vectre scenegraph, and now it pans large documents swiftly. Editing is still sluggish at low zoom levels, but I have some ideas on how to fix that. The Vectre download also includes documentation now. As a test, I loaded a 4000 x 4000 color JPEG image into a Vectre document as a template. On a Win32 box with only 64 MB of RAM, the template virtualized, but since the template renderer has been fully optimized, zooming and panning were okay. You could see the hard drive access light flicker during scrolling, but if you didn't look at it, you wouldn't know Vectre was pulling the image's scanlines from disk. But memory is memory, which is why the next update will support grayscale template conversion. It will let the Vectre document use an image one-third as bulky.
February 2, 2003
I was experimenting with the upcoming cellular automata plug-in and tried wrapping a particularly organic-looking heightfield around a lit cylinder:
The scene pane now has a panel bar above it the same way the map pane does. Makes toggling various scene features a snap, and simplifies the menus since the commands don't have to be there.
January 31, 2003
One of the longstanding annoyances in Leveller has finally been put to rest: the way the text tool works. Instead of directly modifying the heightfield, it now creates a floating selection out of the specified text. It also supports optional antialiasing. The Adobe Illustrator plug-in also supports antialiasing of imported path shapes. All around, things are getting smooth. :)
January 29, 2003
Couple of updates that happened over the last few days: Vectre displays zoomed-in templates better, and lets you simplify imported ESRI shapefiles (because some of them can be quite large, and Vectre is not designed to render large scenegraphs quickly). The BT (Binary Terrain) plug-in had a UTM coordinate export bug fixed. The AI (Adobe Illustrator) import plug-in now handles any version Illustrator file, as promised. Got my cellular automata program to render shaded heightfields of its evolution grid in realtime. There's some images below. I should be able to make a Leveller plug-in out of it pretty easily.
January 27, 2003
One of my sample ESRI shapefiles is a Mercator projection of the world's political boundaries, so I opened it in Vectre, exported it to Illustrator, saved it as a Targa bitmap, and then applied it as a texture over my existing earth heightfield and rendered the result as a sphere with OpenGL lighting.
If you've noticed that Leveller's toolbars are now the flat "modern" kind, you're right. The GUI got a revamp, including switching the dialog font to Tahoma. It looks weird for fifteen seconds, but then it grows on you. This is the current 2.3 splash screen. I'm probably going to keep working on it. My original plan was to have an asteroid field with a planet in the background.
![]()
January 26, 2003
Vectre now imports ESRI shapefiles directly. It scales the shapefile to proportionally fit within the document's current artboard.
January 24, 2003
Improved Vectre a bit and added a template tracing feature, as this picture shows:
January 22, 2003
Wrote an ESRI shapefile dump utility, which can also export to Daylon Vectre format. Part of an ongoing effort to help make shapefile data available in Leveller.
January 21, 2003
It had to happen: philosophy meets development. :) Playing around with some cellular automata algorithms, and after a while I found one that mimics bacterial growth pretty well. Letting it munch on an initial noise pattern and then mapping the results to a heightfield gave this picture:
January 19, 2003
The UV mesh export now uses POV-Ray 3.5's 'mesh2' keyword, taking a 128 x 128 heightfield mesh down to 1.45 MB. It was enough of a reduction to let me try untextured 256 x 256, which made for a smooth wave pattern on this sphere:
On a 600 Mhz PC, the meshes take 16 seconds to parse, about 40 seconds to render with antialiasing, and peak memory usage is 25 MB.
January 18, 2003
Started working on exporting Leveller's UV meshes, with POV-Ray format being the first. Here's some sample POV renders:
Texture/colormap support will make the file sizes go back through the roof, because either the color or a UV texturemap coord has to be specified with each mesh vertex. Oh well, that's what today's PCs with their copious RAM chips are for. :) The export process is friendly. You just configure the active view with the desired UV map, aim the camera and arrange the light, and export as before. The exporter automatically switches to mesh output by querying the UV map.
January 16, 2003
In my never-ending quest to make Leveller more modular, I swept through the code reducing dependencies on the project's leveller.h file. DevStudio has this unfortunate tendency, whenever you create a dialog box with MFC, to embed an '#include "myapp.h"' line in the resulting .cpp files instead of '#include "resource.h"' which is what the #include is for. Had a good talk with Oshyan Greene (of the Terragen animation project) about the future of Leveller, discussing features and whether to open source it or not. Now that so much is known about open source business models, I've decided to seriously revisit the idea.
January 10, 2003
Fixed some bugs in Vectre, the main one being that deleting an endpoint on a closed path deleted too much of the path. Same download as before. Also got Leveller reading Vectre's .vec format for the lathe UV mapper, but there are still some scaling issues that need to be adjusted.
Read Cory Doctorow's Down and Out in the Magic Kingdom. An interesting and entertaining read (and a free one, too!), but I found his premise that people would easily restore earlier versions of themselves into clones (in the case of death, accidental or otherwise) questionable. Orson Scott Card described the process excellently in his 1980s short story "The Thousand Deaths", but you get the idea. When you die, you really die, standby clones notwithstanding. Think of it like this: imagine doing a restore without dying. Now there'd be two of you. Or, more correctly, there's two distinct people, each with their own sense of self. They only just happen to have most of their memories in common. Now let's see how willing you'd be to meet the maker. Obviously, when you die and have a clone, you don't find yourself waking up in a new body. The Arnold movie The Sixth Day demonstrated the dilemma even better: one of the bad guys clones himself, and his clone then proceeds to kill him. The original person, needless to say, doesn't find having a clone a great comfort against death. The only other failing (if I may nitpick) is that DOMK's characters refer to each other's public Net folders as... public directories. They slang everything else, and given how common info transfers must be, what are the odds that anyone would use such a long phrase? Restoring from clones really makes you think about the sense of self problem (e.g., why are you who you are? Why aren't you someone in the 18th century or the 22nd? If you had never been born, where would you be?). I feel I've made progress in figuring it out, but it's a toughie. I've treated the issue by thinking of people in terms of the worldlines they carve out through spacetime, and also working on better definitions of the word 'person' and 'being', and I think I have a chance of getting an answer. It also ties in to the observer/reality phenomenon in physics. One could argue that a restored clone would work in this situation: you become unconscious (by taking a heavy sedative or something), the restore is done with your very latest memories, and then your original body is disposed of. When the clone wakes up, his sense of self is identical to the one you would have had. Since there's no memory of death, death never happened. In all the ways that matter, the clone is you. I don't know. There's something important being left out of the process, but I can't quite name it. I think I have an idea. The problem is with a person's worldline. What are the odds that your clone's future will unfold the way that yours would have? The sense of self is a complete static worldline description extending into the future as well as the past. The clone isn't you because his future isn't yours. What you were going to be, he can never be. To be fair to the pro camp, I would revise the working situation by adding that the original person have the restore and his disposal done without his knowledge. Maybe that's why observers (and what they know and don't know) matter in quantum physics. At some deep level, ignorance makes all the difference. If you don't know that you're going to be disposed of, then... it doesn't happen to you. Nuts. I'm still not sure. But I definitely think some progress was made. :)
January 8, 2003
You asked for it, you got it. Transparent water will be available in 3D scene views.
January 7, 2003
A downloadable alpha version of Daylon Vectre is now available. Try it out, and if there's something about it that ticks you off, let me know before it goes final. Finally. I didn't get to squeeze everything into it that I wanted, but for an alpha, it's certainly ready. I thought I'd have it done sooner but there were infrastructural things, like Preference dialogs. But Illustrator export was added, which is good in the sense that Vectre can round-trip that format. I also added Leveller shape file format (LSL) exporting, which Leveller 2.3 will be able to use (Leveller 2.2 and earlier cannot, because Vectre uses the 'polyline' shape type, which those versions don't support). Vectre will be freeware. If it was a full-blown illustration program, it would merit some kind of price, but for now it's in the utility category.
Older Notes
|