By Eskil Steenberg and Emil Brink
Copyright © 1999-2001 Obsession Development and The Interactive Institute II AB
All trademarks mentioned on these pages are the acknowledged property of their respective owners.

If you don't know where you are, take the tour: Tour de Verse. In case you're in a hurry, here's a quick quote:

Verse is a network protocol, for three-dimensional, client/server graphic applications, designed to let anyone build and distribute a 3D "world" on the Internet (or any other TCP/IP network, of course).

This site is both for internal and external use, it will grow and change over time and therefore nothing in this document should be regarded as unchangeable design decisions - everything is subject to change. Also note that in some areas all ideas are not to be implemented at once, but can be seen as a roadmap to what kind of development will be required at a later stage. All info about future developments will be noted as such.

Below the line is an on-going "diary" of the project. To the right is a column of links to more static content, which is where you'll hopefully find much of the actual system documentation.

B A S E
Basic Architecture
Possible Uses
Motivation (Why?)
Node Types
Data Layers
Security

N O D E  T Y P E S
Object
Geometry
Bitmap
Material
Code
Emitter

P R O G R A M M I N G
VLL
VNF (File Format)

P R O J E C T
Contributing
Road Map

R A N D O M  T E X T
Versatile2 Demo
Material Example
"Man in a room"
Other systems
Subdivision surfaces

P I C T U R E S
Screenshot Page

D O W N L O A D
Download Verse!

M I S C .
FAQ
Contact
Links

O L D  N E W S
2000-08-28
1999-12-27
1999-08-09


Verse at
SourceForge


2001-05-04 (Friday)

Incredible. We actually had the second part of The Meeting, and it was short and sweet. We decided on:

  • Bones
Yup, we now have a fairly clear idea of how Verse will support bones, for hierarchical transform in animation. Soon, all your walk cycles... ;^) I have no idea about the timeframe for implementing these latest bursts of design, but we'll try to get around to it as soon as possible of course.

In other news, expect the Particle node to change its name to Effect soon. Of course, Eskil still calls it the "Physics" node, just to keep me confused.

/Emil

2001-05-03 (Thursday)

Yay, it's May! Um, er... Yeah. Anyway, today Eskil and I actually pulled off the first part of The Meeeting. For those of you who don't know the term (which might be a fairly large crowd, since I've never used it here before) that means that we spent three hours in a room with a whiteboard, talking about things as exciting as these:

  • A force-based translation system
  • A force-based, axis-oriented1 rotation system
  • A hysterically simple scaling "system"
  • Bézier curves for vertex morphing and animation
This represents issues that we've been waiting for/dreading/trying to fix for almost a year. It's (I think) the third attempt at handling the basic concept of object transformations, i.e. how to express movement, rotation and scale. It will replace the current system with something completely different. Hopefully, these new standards will appear in the code fairly soon. Usually with Verse, specifying something takes a lot longer than implementing it in protocol and server.

This is not all, however. We hope to continue tomorrow, to nail down the remaining parts. I'll refrain from listing them here, and hope to make an update tomorrow instead.

1Yeah, calling something "axis-oriented" is kind of ridiculous, I know. But it is.

/Emil

2001-04-27 (Friday)

We ordinarily don't use this page for things other than stuff of immediate interest, but I think I have to make sort of an exception for this patent. I'm not exactly worried (software patenting is still wobbly in Sweden), but it's annoying nevertheless...

/Emil

2001-04-26 (Thursday)

The long-neglected Win32 "port" of Verse has been given a much-needed overhaul these last few days. The main CVS "verse" module should now build without problems, more or less. Further, I installed GTK+ for Win32 too, and "ported" both Adamant and lve over. The (pleasingly minimal, code-wise) results have been checked into CVS.

The appearance of a Win32 build of Adamant (the material editor) allowed Eskil to do some testing of Enough, revealing plenty of cool and wonderful stuff, but also some bugs to squish. This is good.

/Emil

2001-04-18 (Wednesday)

I just enhanced the Download page with a bunch of links to various libraries that Verse depends on, more or less. Should make life simpler when trying to set up Verse to build and run on a machine. Enjoy.

/Emil

2001-04-11 (Wednesday)

We're still more or less alive over here, just not doing many updates to the old diary. Last week we had the pleasure (at least from our perspective) of visiting Linköpings University's Norrköping Campus. We held a couple of short lectures and observed a group of students try to use Verse. It was a lot of fun (against, at least for us) and also very instructive. Hopefully we'll have the time to actually apply what we learnt in software soon.

The task we set up for the students in Norrköping was to try and write a UV editor, for texture mapping. Since I wanted to try it out for myself before asking someone else to do it, I whipped up a small proof-of-concept program before we left. I've spent a few more days on it now, and here's what it looks like:


Click for original size (1290x512 PNG, 215 KB).

The screenshot shows my UV editing client on the left, and the simple renderer client on the right. One vertex in the corner of the mouth is selected (red) and has been moved a little bit. The resulting change in the texture mapping can be seen in the renderer in realtime, as the mouse moves (as always with Verse). The UV client has not yet been checked into CVS, but will be in the future.

Oh, and of course a big good-bye to Daniela and Ulrika who leave the Institute today... Be well! ;^) Happy Easter, everybody!

/Emil

2001-03-29 (Thursday)

Ahh. We're back from the Game Developers Conference in sunny San Jose, California. It was nice, although not quite as nice as last year. We're not sure if that's because we've gotten better, or if it's the conference that's gotten worse. Hopefully the former. ;^)

Work on Verse goes on. Eskil picked up a trick or two about how to implement shadow volume rendering, and has already done a test version of it. I'm busying myself with getting back in sync with the world, and also doing some minor hacking to fix the long-broken chat servlet.

In meta news, it seems as if the statistics page over on SourceForge is up and running again. It leads me to believe that close to 150 downloads of Verse have been done... Cool! Unfortunately, most of those downloaders either junked the file directly, or found Verse so intriguing that they can't take the time off it to send us feedback. ;^)

/Emil

2001-03-12 (Monday)

I just uploaded a new version of the old VLL User's Guide, this one covers the recently checked-in code for simplistic object light sources.

Oh, and there actually is a downloadable snapshot of the CVS tree available. It's already out of date, though, so I would still recommend checking the code out of CVS directly. The snapshot is here (934 KB, tar.gz source archive).

/Emil

2001-02-27 (Tuesday, later)

If you came here looking for code to download, please look into CVS, since that's where it's at. We do not have any prepackaged files to download that are not very much out of date. The "verse" subdirectory holds the core, the server, and the VLL access API library, along with a set of sample clients and some data. The other four directories ("adamant", "enough", "lve" and "vnc2verse") hold various client programs, all of which are very cool. ;^)

Questions are welcome on the verse-misc mailing list. Thanks for your interest.

/Emil

2001-02-27 (Tuesday)

Some plans:

I am currently working on Verse's upcoming physics/particle system, and it is coming along nicely. Anyone who has looked at the "emitter node" stuff that can be found in remote places of the source code, will know that it is a sad piece of code... The particle system doesn't really have that high priority but I found a hole in time, Emil is working on some much needed updates in the server (light sources, 8-bit layers, multiple materials per obj) and currently our rendering engine is in a working state and there have been no immediate things to fix. So I thought it was a good time to start researching and thinking about our future particle system. My initial guess was that the particle system would take 6 months, but it looks like its going to be a lot faster. So I changed my mind, and I now aiming to finish it before I start anything else.

So what else is there?

Well the two big things to come in Verse are the new transform system and the animation system, and we hope to start working on them in about two weeks or so.

My rendering engine "Enough" is currently working OK, but there is a lot of future plans for it, first of all it needs to start to support a lot of new functionality in the Verse server, but that won't be too much work I guess. There is nothing wrong with the material system, but it needs to support more of Verse's new capabilities, and this leads me to start working seriously with NGL, mainly starting to support a lot of OpenGL extensions and making some optimizations. I hope to take some time just to clean up some of the code, and optimize some really dumb stuff. (There's lots of stuff that is supposed to work, but just isn't finished). I have seriously started thinking about shadow volumes as well. (And of course I'm always eager to re-write the geometry pipeline... Again... And again! ;-)

Another side of Enough that has been lagging behind, is documentation. I am planning to set up a separate site dedicated to just Enough, but since I'm planning to re-write the UI for it, it feels kind of silly to document the current one...

Now to the goodies! As you can see we have re-designed some of the site, and here are some art for your desktops:


Small (1280*1024) (289 KB PNG)
Large (1600*1200) (389 KB PNG)
Original (3000*1200) (994 KB PNG)

If you happen to run Win32 you can download this preview of the particle stuff I'm working on. Binary only; it's not in CVS yet, but if you desperately want the source mail me, but I must warn you it isn't always pretty... ;)


physic_test.zip (203 KB ZIP archive)
Another tip is to head over to Discreet, and download their demo of Combustion, finally something more addictive than CS!.

And finally a special thanks to the great people at ATI for sponsoring us with a Radeon DDR card!

/Eskil

2001-02-12 (Monday, later)

Hi everyone! (I like to use the word "everyone", it helps me imagine lots of users...;-))

I'm currently working on the forthcoming particle system. We were supposed to design and implement the animation system first, but until Emil with the minor changes that need to be fixed in the server (material look-up tables, 8-bit layers, light sources, and some other stuff) I have some "free time" to spend on the particle system.

The "Enough" rendering engine is working fine, and is fairly stable; I was surprised it worked so well in Vegas... I should fix a page with an easy-to-download executable soon.

GTS was really cool, lots of nice people, and San Francisco is a really nice place too (better then Vegas...). I found Björk's "All is full of love" on DVD; Cunningham rules...

Also join the mailing list and fire away all your Verse questions at: http://lists.sourceforge.net/lists/listinfo/verse-misc

/Eskil

2001-02-12 (Monday)

OK, the User's Guide as well as the little VNF description have both been updated to cover the changes checked-in on Saturday, i.e. support for 8-bit integer-per-face polygon layers. Enjoy.

/Emil

2001-02-10 (Saturday)

I just checked in a change that is rather minor in theory, but large in practice, into CVS. Verse geometry nodes now support an "8-bit unsigned integer per polygon face" layer type. This change, while sounding simple, required the entire layer naming scheme to be updated, which in turn required the VNF data format to change, and along with that the tools that generate and read said format... It all piled up, and in the end I think the change touched about 40 files. Anyway, an initial version is up now, with more to come. Specifically, the VLL guide has changed but not been uploaded, and the VNF mini-manual page needs to be updated, too. But I think I'll leave those things for Monday.

/Emil

2001-02-06 (Tuesday)

OK, Eskil's back from the Game Technology Seminars, and we're trying to get back to business over here. Hacking Verse, that is.

I just finished (as in designed, implemented, ported, and documented) a new interface for creating and describing nodes. This is a semi-major change, in that it affects almost all clients. Gone is the old vll_send_describe_nodes() VLL function, and also gone is vll_send_o_node_create(). The latter has been replaced by a system command (vll_send_s_node_create(), no less) and the former has had a change of name (it's now vll_send_s_node_list()) and callback prototype.

All in all, I'm rather happy with the way node creation and descriptions work now. The old interface was smeared between being system and object commands; now it's all done as system commands. The new code is in CVS, and the VLL User's Guide has been updated. Ah.

/Emil

2001-02-01 (Thursday)

OK, we (um, or at least I, Eskil found something else to occupy him for a few more days in the US) are back! NATPE was probably a success, although you could have fooled me to think otherwise pretty much anytime during the event. It was fairly chaotic. I also took the time to catch the flu, with lots of fever, coughing and associated general misery. But that seems to be receeding now, for which I'm happy.

My focus now shifts to general fixing of parts that I noticed needed fixing while doing the NATPE thing, and preparation for the scientific evaluation of the Institute that takes place around the end of this month.

/Emil

2001-01-16 (Tuesday)

In celebration of us going to the much-talked about NATPE expo tomorrow, I just checked in a new nifty tool currently called lve into the good old CVS over at SourceForge. Nice to know it's there, if nothing else.

Soon time to go home and start packing, I guess.

/Emil

2001-01-08 (Monday)

We're currently working our collective behinds off preparing for the upcoming NATPE 2001 (Flashy site) expo over in Las Vegas, USA, where we will be showcasing some of the Verse technology together with SVT (Swedish National television) and Ericsson (the telecom giant). This is of course incredibly exciting, but also somewhat stressful. More information on this later on, hopefully.

/Emil

2001-01-02 (Tuesday)

From all of us to all of you, a one day late Happy New Year!!

/Emil

2000-12-19 (Tuesday)

I just uploaded a freshly created stand-alone version of the VLL User's Guide to our downloads page. This should come in handy if you want to work with VLL without being connected to the 'Net (and you're too lazy to just use wget). ;^)

/Emil

2000-12-16 (Saturday)

Ha, I compensate for the lack of updates lately by doing one on a Saturday. How's that? ;^) I just checked in some code that enhances the Verse server with the ability to not only detect when a client seems to have dropped its network connection, but also to kick that client out and notify all other clients about it. It's a first shot at doing this, and will likely be improved later on, with tweaked parameters and stuff. Basically, what it does is measure the number of sent but non-acknowledged packets, and kick out clients above a certain threshold. Very simple, yet it should be effective enough I hope.

Also, we got an old and funky SGI Indy on loan from a good friend. Hopefully, we'll be able to use that to get some hands-on experience with running Verse under Irix... And I might just sneak in during some after-hours time and attempt to port some other application of mine, too. ;^)

Oh, and Eskil just blew >15,000 SEK on a new PC for himself. Merry Christmas, or something.

/Emil

2000-12-14 (Thursday)

Today, a minimum of two good things happened in the world, at least seen from my perspective. One was that I picked up final, printed copies of my thesis report and also did the presentation of the work required. The other was that I picked up my machine which has been getting some seriously needed repairs for the last three weeks. It seems to be fine now, though (I did 20 full recompiles of Verse and they all went smoothly). Good.

Tomorrow it's time for the traditional Christmas lunch here at the Institute, which will probably make me forget all about food for at least a couple of days (hm, I wonder if the Swedish word "julbord" will ever make it into English the way smorgasbord has done -- probably not). ;)

/Emil

2000-12-13 (Wednesday)

Oh, we're being silent again, aren't we? Sorry about that. We're in a kind of slow-down period when it comes to core Verse (server) development right now, it seems... Eskil is making good progress with the subdivision code in Enough, though. Also, there are some rather interesting things going on regarding actual uses of Verse, but I don't think now is a good time to talk about that, since nothing is finalized.

Anyway, if you read this page and are interested in Verse, please consider joining our verse-misc mailing list (hosted by SourceForge, of course). It now features seven members, only one of which is a bot! ;^)

/Emil

2000-11-27 (Monday)

I just cleaned up the code for the vnc2verse gateway mentioned in last Friday's update, and checked it into CVS. Another ~1,500 lines of GPL:ed code reaches the world. Always a nice feeling. ;^)

/Emil

2000-11-24 (Friday)

Another week, another update it seems. Anyway, I just wanted to blare my own horn a little here. ;^) I saw a few nifty screenshots on the competition's web page, and got struck by a rare (um, or among us hacker types, actually not so rare) combination of inspiration and jealousy: I wanted support for VNC in Verse, too! So, I downloaded the supremely short and nice RFB protocol specs (PDF) and started coding. Here's a picture of the result:

The shot (click it to show full-size version) shows the standard simple Verse renderer, looking into a server containing a single object called "screen". The screen is textured with an image which is being continuously updated by a dedicated "VNC to Verse" gateway client, and shows part of a VNC desktop running under X. On the desktop, Netscape is displaying the troll heaven. Oh, and I just had to check what OS I was running, too. ;^)

The interaction is currently one-way; no information can flow from Verse back to the VNC desktop. In the future I might use Verse's object method system to let the gateway client's avatar support things like moving the mouse pointer and sending keypresses back to the VNC server. Even without that kind of control, the possibilites opened up by this rather simple piece of client code are staggering.

The total code size for the VNC gateway client is currently roughly 1,600 lines of C, which I don't consider much. The client has not yet been checked into CVS yet, but I expect to do that sometime next week.

/Emil

2000-11-15 (Wednesday)

Tomorrow, we're going to Umeå to demo Verse while participating in a "replacement workshop" (replacing FDIVE, which was cancelled due to too few submissions). Exciting. The arrangement is being done largely by the Tools for Creativity studio in the Institute, which has its home in Umeå.

/Emil

2000-11-03 (Friday, later)

Hey, two updates on the same day, how's that for being current? :) I just checked in version 1.0 of Adamant; it is now functionally complete, I think. The major addition compared to the last checked in version is that Ramp fragments can now be edited.

/Emil

2000-11-03 (Friday)

We just moved the entire Verse site to SourceForge, this will be its new home... Please expect broken links (mainly with images) in the pages for the next few timeunits, as I curse my barely-existing web site management skills for leaving me in this mess... I wish this site was database driven, or used all that fancy style sheet stuff. Hm, that'd mean I'd have to learn all that, of course. Ouch. Back to hand-editing hundreds of HTML files, then. ;^)

Eskil is finally looking like he's gotten somewhere with Enough, and has even checked in a new version that handles creases and everything. Excitement. I'm struggling to "finish" the material editor, feature-wise. Should be done before the week is over...

/Emil

2000-10-27 (Friday)

I just updated the Material node page a bit, adding the "new" fragments to it and updating the descriptions on some of the older ones. I should probably replace the examples with screenshots from Adamant too, but not right now.

/Emil

2000-10-17 (Tuesday)

Something wonderful has happened--we've moved offices. After a loong wait, the new office space here at the Interactive Institute Stockholm is finally almost ready. It's way cool, and will only get cooler as more coworkers move in, and the various interesting facilities (like the big stage/expo room, the audio room, and the various labs and workshops) get up and running.

In other, more Verse-related news, I've been playing around with "swarm movements" the last couple of days, as a way of simulating many simulatenous users navigating a world. While there are several weird things left to investigate, initial results seem promising. With thirty clients connected to a server, each client sending a "set speed"-command every 150 ms, the server seems to get by on roughly 3% of my AMD Athlon's 550 MHz... Feels promising.

Eskil is busy retargeting Enough for the new subdivision library, and stuff.

/Emil

2000-10-13 (Friday)

It seems our updates are back down to their old, slow, tempo again, huh? Sorry about that. Anyway, just wanted to note that two new pages have been added: they discuss how to contribute to the Verse project, and what we have planned for the future. Enjoy!

We have created a mailing list for Verse discussion, go here to subscribe. I altered history somewhat, by rewriting the blurb about Adamant below (2000-09-29), since it made this page very wide in its previous incarnation.

/Emil

2000-10-03 (Tuesday)

Just because we love doing web updates so much, I'm here again. This time just to say that a new and very much improved version of the Adamant material editor has been committed into the expected CVS repository. It adds just above 250 lines of code, but restructures the existing a great deal, so the end result is a much more pleasant thing to work on. Now it's possible to really start adding features. I think I will. ;^)

/Emil

2000-10-02 (Monday)

Sorry yet again for the lack of update, but it seems like I'm in a state of starting - everything - finishing - nothing at the moment. Everyone is asking about when we will do a "release", and I just don't know. The VLL API is more or less frozen in an initial feature-complete state, and we should be set to start promoting it. I have reworked some of the subdivision code and added parts of the crease handling, but there are still some more stuff to solve. I have also joined the OpenGL ARB and am currently working on some new ideas for OpenGL, in the form of an experimental API called NGL, that I will be porting Enough to soon. I have also rewritten parts of the UI, only to come to the conclusion that I will need to do a larger rewrite of it as soon as I can... Multithreading is currently up and running, but isn't performing very well in NT due to too few task switches. The subdivision code has turned out to be so complex that I will break it out from Enough into a new library, to help other applications cope with the complexities of geometry handling. So a lot is happening, but it seems like few things are getting done. I'm currently also doing some more research into lighting and particles for some upcoming papers.

Here are some fun "bloopers" from my subdivision development:

/Eskil

2000-09-29 (Friday)

Finally, the material editor has been given a name, and hence uploaded to CVS at SourceForge. The name of the program is Adamant, if you're curious. I'm sure you can figure out why, it's not a really obscure name (unlike the third-level Madonna references we where discussing for a while). Here are a couple of screenshots, showing Adamant in action editing the simple texture map used by the "standard" girl object:
This shots shows Adamant's main window. The colored boxes represent material fragments; each is labeled with the type it represents. The color is also an indication of the fragment type. The display can be zoomed and panned by dragging with the mouse.
Here, a Blender fragment has been selected, and zoomed into view. The fragment has been expanded, by clicking the little arrow in the title bar, causing its link sources (data_a, data_b and control) to be displayed. The user can now create and destroy links by direct manipulation. The GTK+ GUI to the right of the fragment view shows the properties of the selected fragment, allowing them to be edited there, too.

I'm pretty satisfied with how this little editor turned out; I began writing it last Thursday (that's 2000-09-21), and one week and 3,014 lines of sparkling new C code later, the program is not only useable: it's even rather nice to use! ;^) And, thanks to a touch of design provided by Eskil, it looks real neat, too! The code might not look all that neat at the moment, but give me a couple of days and I'll see what I can do. Of course, it's not feature-complete, either, so... Back to hacking.

/Emil

2000-09-28 (Thursday)

Archived all stuff up to and including 2000-08-28, since I tired of the large front page, and much of the content was starting to feel dated. With a couple of spare neurons, I'm trying to come up with a name for the material editor, so I can check it into CVS...

/Emil

2000-09-26 (Tuesday)

I just got a mail informing me that this year's FDIVE workshop on VR has been cancelled, due to too few submissions from the VR researchers in Sweden. Since we actually have submitted an abstract about Verse, we can feel sorry without having to feel guilty at the same time. Still, we're sorry to hear about this, since we had actually been looking forward to presenting our stuff there. Hm. We'll see what happens next.

A brief status update: I'm making (hopefully) good use of our server and protocol feature-freeze, by doing some tool development. Since last Thursday, I've been hacking away at a graphical material editor. If it comes out the way we intend it, it will resemble the one in Softimage XSI quite a bit... It has not yet been checked into CVS, but I hope to do so before the week ends.

Eskil is working with his favorite thing in the world, namely the subdivision surface implementation in Enough, which he is trying to get to do creasing. Judging from the moaning and groaning from behind his giant monitor, it's not very easy. ;^)

/Emil

2000-09-16 (Saturday)

Added some documentation about the kinematic transform system to the old VLL guide. It's simple enough at that level. Speaking about transform, I also found the time the other day to break out the implementation I did from the simple render client, letting it end up as a separate module instead. Pretty nice.

/Emil

2000-09-08 (Friday)

Ack. I guess we really do suck at doing timely updates to this page, these days. Anyway, today is kind of a cool day, since it's the first time we have support for constant-acceleration kinematics (for objects) in Verse implemented. This has been sort of the last "big thing" we wanted to implement before starting to think about various forms of releases more seriously.

The code, as always, is in CVS. Note that this really is very early code, in both server and clients, so if you intend to jump on it, please don't jump too hard. Also, it has not been fully implemented in the various clients yet, either. Still it's a great feeling, knowing it's in there now.

On a different note, the summer is now officially over, and Patrick has gone back to KTH... That more or less means it's back to just me and Eskil, at least for 60% of the time. ;)

Oh, yesterday I sent in an abstract to the FDIVE virtual reality workshop to be held in Umeå in November. If they accept it, we'll be demoing Verse in front of a live audience of VR-people for the first time. Exciting.

/Emil

Site ver 3.0