Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 


Submitted by cgk, posted on August 14, 2001




Image Description, by cgk



This is a screenshot of the editor to my gfx engine "Vision3". There is still a lot to be done, but the engine already features: -sector/portal visibillity using sectors and portals generated with a CSG based algorithm. I've never seen such an approach in any app, but i think this is a very innovative technique, as it generates really good portalization with nearly no processing time and not too much to care for by the artist.
  • an advanced high lvl CSG algorithm, which leads to damn fast rebuild times
  • damn fast rebuild times :)
  • a geometry optimizer caple of removing practically all unnecessary geometry splits introduced by CSG
  • collision detection using per sector BSPs and portals
  • lightmaps and vertexlighting
  • rendering using DirectX8
  • the nemesis of every MFC programmer: an editor with an UI which can actually handle resizing windows and dialogs! ("bla.Anchors := [ akLeft, akRight, akTop ]" ...) ;))
  • the next things i want to do are:
  • add support for external objects (like decoration, done in 3ds or something)
  • add more material features (or better: implement them :) )
  • improve the lighting system by adding more light types. (i'm very optimistic that you can fake equal or better looking results than most radiosity implementations feature with simple stuff like normal raytraced pointlights, ambient pointlights, "ambient directional pointlights (:))" and stuff like that ... and still have an acceptable rebuild time^^)
  • I'm kinda proud of the project, mainly because i've done it on my own. The ideas and algorithms for the CSG, geometry optimizing and portalizing were all 100% generated in my mind :) (although that doesnt necessarily have to mean that no one generated them before *g*). I've come farer than i expected...

    I just released the first "public" preview of my Editor to show off my tek a bit ;).

    The project homepage is at http://pc.exit.de/vision3. There you can find more infos, screenshots and - of course - the editor download (although the demo "level" still suffers from "programmers art" quite a bit... so if anyone would make something cool with it, i'd like to see^^).

    Gerald "cgk" Knizia


    [prev]
    Image of the Day Gallery
    www.flipcode.com

    [next]

     
    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
     
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
     
    ClockWork

    August 14, 2001, 02:06 PM

    For some reason that map reminds me of Ultima...

     
    Ezra

    August 14, 2001, 02:07 PM

    That is seriously sweet. How long have you been working on this? Is it a project that you plan to turn into something else along the way? Very nice work.

    -Ezra

     
    Rectilinear Cat

    August 14, 2001, 02:24 PM

    That is disgustingly cool. How long have you been working on it? And is the light solver implmented in-engine or as a standalone utility (like light.exe for Quake/HL maps),

     
    lycium

    August 14, 2001, 02:30 PM

    you can't compare local and global illumination models... they're worlds apart. radiosity (or any global illumation method) is a must for realistic lighting, the "ambient term" simply doesn't exist...

     
    psykotic

    August 14, 2001, 02:30 PM

    Nice work. I remember you showed me an earlier version of the editor but it seems it has gone a long way since then. Do you mind discussing the algorithms for CSG and portalization you are using?

     
    Buster

    August 14, 2001, 02:33 PM

    That looks really cool. What type of game is it? Team based or single player?

     
    psykotic

    August 14, 2001, 02:34 PM

    you can't compare local and global illumination models... they're worlds apart. radiosity (or any global illumation method) is a must for realistic lighting, the "ambient term" simply doesn't exist...

    I agree with the fact that local and global reflection models are like apples and oranges in some respects. But I hope you realize that the majority of games out there are not specifically going for a "realistic" look but for something more stylized. This is why Carmack chose to go with direct lighting for Quake 3 and why relatively few games use radiosity even though every competent programmer can write a radiosity processor.

     
    lycium

    August 14, 2001, 02:40 PM

    oh, forgot to say: really nice work!

    how much time do you put into this thing every day/week/month? how old are you?

    got kinda carried away by my fixation with global illumination ;)

     
    Mateo

    August 14, 2001, 02:40 PM

    Man, that looks really great thus far. What makes it all the better is that you're implementing ideas not from a book but from your head.

     
    kewldude

    August 14, 2001, 02:47 PM

    How do you create ambient point lights? Arent they just like diffuse point lights just dimmer? What are you talking about, damn it?

     
    Kanda

    August 14, 2001, 02:54 PM

    How do u deal with lightmap shadows ?

     
    cgk

    August 14, 2001, 03:20 PM

    >> how much time do you put into this thing every day/week/month? how old are you?

    To be honest... i'm not sure :). i've started this thing about two years ago. But i had some productive and some very unproductive phases. The editor development suffered from serveral (complete) breaks >2 months... Well... i code when i feel like coding :).
    I'm 18 years old.

    >> What type of game is it? Team based or single player?

    Its not a game yet. I'm not sure if it will ever become one. I doubt that i have to time (and enthusiasm) to develop a serious game :/.

    >> How do you create ambient point lights? Arent they just like diffuse point lights just dimmer? What are you talking about, damn it?

    Well.. i just meant that i want to fake some "ambient" light (ie: not shadowed). That "point light" aspect would be only to control where the ambient lights shine and where they dont (ie: more flexible than a level ambient light).

    >> Do you mind discussing the algorithms for CSG and portalization you are using?

    Nop, but it's a bit late now and i'm not really able to explain it anymore :). The portalization is rather simple: a (non detail) subtractive brush forms a sector, so if two subtractive brushes intersect portals have to be created. Usually this results in taking eighter the parts of brush one which are inside brush two, or the ones of brush two to the inside of brush one. After further CSGing (portals are threated like every other polygons too), geometry simplification (ie: split removing, uniting everything coplanar) and taking the convex hull of the portal polygons this usually results in pretty good portals. You can see how exactly this looks if you run the program on the test level and hit "View/3DView -> portals" from the menu. This may not be new but i've never seen it in any app.

     
    danthalas

    August 14, 2001, 03:30 PM

    Very good looking editor.
    And nice Windows color scheme too :-)

    Taluego

     
    =[Scarab]=

    August 14, 2001, 03:52 PM

    Those screenshots look awesome and you're useing a very creative method on the level rebuilding.

    I definately wanted to try it out, but the zip file on your site seems broken. It gave me a CRC error on data/TexBase.vpk. I first assumed it was due to a download error but it happened again after redownloading. Also, the notes file says there's a doc file but it's not included.

    Still though, it seems like a very interesting project, keep up the good work!

     
    infurn

    August 14, 2001, 04:38 PM

    I can't exactly run the program (windows machine being formatted) so I can only imagine how the program works ;) but one question, is that 3d view generated dynamically? like the lightmaps and everything?

     
    cgk

    August 14, 2001, 05:06 PM

    >> I definately wanted to try it out, but the zip file on your site seems broken. It gave me a CRC error on data/TexBase.vpk. I first assumed it was due to a download error but it happened again after redownloading. Also, the notes file says there's a doc file but it's not included.

    sorry, i'm not sure what's wrong. there was definitaly no crc error in the file i've uploaded and the "pseudo doc file" (:)) is named "functions.htm" in some doc directory. perhaps geocities messed up something (it was the only file hosting free provider i've found...). i'm reuploading the file now.

    >> Still though, it seems like a very interesting project, keep up the good work!.
    thx :). perhaps the reupload fixes the problem and you could try downloading it again.

    >> is that 3d view generated dynamically? like the lightmaps and everything?

    yep. everything is generated dynamically. the lightmaps are static tho (ie: no dynamic lights yet).

     
    Rectilinear Cat

    August 14, 2001, 05:23 PM

    I guess that means I'm an incompetent programmer :) Or partially at least...

     
    psykotic

    August 14, 2001, 05:29 PM

    Nop, but it's a bit late now and i'm not really able to explain it anymore :). The portalization is rather simple: a (non detail) subtractive brush forms a sector, so if two subtractive brushes intersect portals have to be created. Usually this results in taking eighter the parts of brush one which are inside brush two, or the ones of brush two to the inside of brush one.

    I can see how e.g. two axis-aligned box brushes with two faces touching defines a portal polygon. What if the brushes interpenetrate however? I can see how you might handle this in the case of the axis-aligned boxes; find the CSG intersection of the two brushes. The portal polygon will be the face of the brush which is shared with either of the involved brushes. The other problem with having interpenetrating brushes of course is that geometry can be located in more than one sector (represented as a brush) simultaneously. This ambiguity can be resolved by following certain conventions though, I guess. I have another question. Brushes are by convention convex polyhedra; does this mean that you only allow convex sectors or do you allow multiple brushes combined with CSG operations to define a sector? Thanks.

     
    psykotic

    August 14, 2001, 05:32 PM

    I guess that means I'm an incompetent programmer :) Or partially at least...

    Sorry, I meant "competent" relative to the average professional game programmer. I can see how my statement could be misinterpreted; I hope I didn't offend too many people. If taken in context, I still think my point is valid. You can buy books or read a number of papers that describe a number of radiosity algorithms in detail. I would expect most professional game programmers to be able to implement a radiosity processor from this information.

     
    Hiro Protagonist

    August 14, 2001, 06:20 PM

    I hate to correct you, but I think you meant "most competent graphics programmers".

    Thanks.

     
    Hiro Protagonist

    August 14, 2001, 06:22 PM

    I see you already corrected this post. Sorry.

     
    Rectilinear Cat

    August 14, 2001, 06:32 PM

    In that case I'm really screwed :) Actually, I've got fake radiosity working. Now to get real radiosity working...

     
    Steve 'Sly' Williams

    August 14, 2001, 06:42 PM

    bla.Anchors := [ akLeft, akRight, akTop ]

    So it's written in Delphi? Fantastic! Now with Delphi 6 Personal Edition available for free download from Borland, everyone will be able to experience the delight that is Delphi.

     
    Prince

    August 14, 2001, 06:52 PM

    Since you seem so hyped about Delphi and I have no idea what it is, can you tell me?

     
    =[Scarab]=

    August 14, 2001, 06:59 PM

    >>perhaps the reupload fixes the problem and you could try downloading it again.

    Yes it fixed the problem. And trying out your program with the actual level from the screenshot is awesome!! It looked good on paper but it's even better in real life. I reckon with some more work it could rival Worldcraft! ;)

     
    freakyboy

    August 14, 2001, 07:44 PM

    delphi is just another programming language, more precisely en enhanced version of the pascal programming language. delphi adds things like object's, overloaded functions, (all) the nice things you have in c++ (compared to c). delphi is a very powerful tool, when it comes to debugging and the like (compile times are a lot faster, because of the clear syntax). i'm personally very impressed by delphi, and working with it since version 1.0. if you would check out an "advanced" example, of what delphi is able to do, check ou my project page (atmosphere.stt-clan.ch *under heavy construction*). now that delphi comes to live on other platforms than windows (kylix for linux as the first step), and borlands goes into offensive with "open editions" i think we will see more people developing on delphi in the near future :))

    freakyboy

     
    psykotic

    August 14, 2001, 08:10 PM

    I got some more ideas on the portal detection problem. It's really an extention of what I mentioned earlier. To find the portals connecting a pair of brushes A and B, we first find their intersection int(A,B). In general, this will be a set of faces (possibly empty). For each of these faces, we see if they fall inside a face of either A and B or is identical to one. The faces that fulfill this will be stored in a list of portals. We can have concave sectors by brushes by CSG union. This setup will handle a lot of tricky cases e.g. a box brush contained inside a larger box brush. One thing we need to do is to define an inside/outside relation between a point and a sector. In the concentric boxes case, a point inside the small, inner box is in fact within both boxes; there is ambiguity. If we construct a brush hierarchy (i.e. the small box is contained within the larger box) then we can deal with this case by simply pushing points down this forest of brushes. One tricky case is when two brushes interpenetrate without one being fully within the other. I guess we could just explicitly disallow such case or introduce e.g. volume-based heuristics for determining the parent/child relationship between the interpenetrating brushes. Is this at all anything like your setup, cjk?

     
    Ben Dilts

    August 14, 2001, 08:55 PM

    18 years old? Nice, nice indeed... I just turned 17 and I've been programming for about 10 years (Oh, my good ol' C128) but I've just been doing serious direct3d/C++ stuff for about 2 1/2 years. It's nice to know there's some other serious computer nerds out there :-) Keep up the good work, man!



    ~BenDilts( void );

     
    SLUDGE

    August 14, 2001, 09:04 PM

    When you say damn fast, do you mean capable of having a godlike creature in the engine creating architecture as the map gets played?

    How much segmentation is done? Would it be possible with your algo to build a part of the level but leave the rest intact? (Think rooms that only connect through teleporters and have no straight lines between the two of them, then work your way into messier situations.)

     
    Serapth

    August 14, 2001, 11:12 PM

    You too eh? First thing I though when looking at the SS, is ULTIMA!


    Cheers,
    Serapth

     
    This thread contains 48 messages.
    First Previous ( To view more messages, select a page: 0 1 ... out of 1) Next Last
     
     
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.