Planet Rendering Engine preview (released Jul/20/2009)

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
User avatar
Xavyiy
OGRE Expert User
OGRE Expert User
Posts: 847
Joined: Tue Apr 12, 2005 2:35 pm
Location: Albacete - Spain
x 87

Post by Xavyiy »

JohnJ, can you post a video in wireframe mode? It will be nice!
Awesome work ;)

Xavi
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

can you post a video in wireframe mode?
Here: PlanetEngine Wireframe Video (5.5 MB)

(BTW, you may notices stuttering in the videos as the camera moves. This is only present when FRAPS is recording. It runs extremely smooth normally, even without threading).
Maybe you're interested in releasing the source for this?
I probably will, although probably not for some time. It's really in the a very early stage - there's a lot to improve.
User avatar
CaseyB
OGRE Contributor
OGRE Contributor
Posts: 1335
Joined: Sun Nov 20, 2005 2:42 pm
Location: Columbus, Ohio
x 3

Post by CaseyB »

The seams look a little odd, like there is a ridge running under the terrain. Is that intentional?
Image
Image
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

The seams look a little odd, like there is a ridge running under the terrain. Is that intentional?
Yes, they're called "skirts" (by the author of the Chunked LOD technique, at least). It's a crack filling technique, and is much easier than decimating the side of a mesh to match up with lower detail chunks like HexiDave's system. It works so well and is so easy, I almost felt like I was cheating :). The only possible drawback is that it can cause a small area of texture stretching near where cracks would be, although as described in the paper the screen-space pixel error LOD system makes it virtually impossible to spot (which seems to be true even with very high-res textures, from what I tested).
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

JohnJ wrote:
The seams look a little odd, like there is a ridge running under the terrain. Is that intentional?
Yes, they're called "skirts" (by the author of the Chunked LOD technique, at least). It's a crack filling technique, and is much easier than decimating the side of a mesh to match up with lower detail chunks like HexiDave's system. It works so well and is so easy, I almost felt like I was cheating :). The only possible drawback is that it can cause a small area of texture stretching near where cracks would be, although as described in the paper the screen-space pixel error LOD system makes it virtually impossible to spot (which seems to be true even with very high-res textures, from what I tested).
Ya, that's true enough - the main reason I did the decimation at the edges was because it felt like cheating (OgrePlanet was to be only a learning exercise), but I left it in because it satisfied some things I wanted to care for later on.

Overall, though, if I wanted progress/results over trying to be technical, I'd absolutely have gone with skirts.
defiance
Gnoblar
Posts: 1
Joined: Wed Aug 03, 2005 8:52 pm

Terrain LOD and Generation

Post by defiance »

Looking very good. Glad to see even more planetary terrain projects coming to light. This is an area I am looking into and very interested in as well.

Are you currently limiting to your heightmap data source resolution when it comes to the amount of terrain detail shown? I havent looked into the various paging implementations found in other projects here as of yet, but having a good way of expanding the amount of detail when splitting through the terrain LODs is something I really want to work out as well. A hierarchy of paged loaders pulling and combining from different sources to create the resultant height data and hopefully still give reasonable control of location specfic details and the finer levels.

What are your plans for texturing? I was trying to come up with something similar to terragen's multilevel surfaces. With texture UVs mapped to height/slope, and the values either respresenting direct color representations or indexes into an atlas of similarly mapped textures. Haven't looked as deeply as I would like into the various other texture synthesis methods. Hoping to provide a bit more variety than the standard multitexture splatting, not sure if it will work out the way I see it in my head though.
JohnJ wrote:
The seams look a little odd, like there is a ridge running under the terrain. Is that intentional?
Yes, they're called "skirts" (by the author of the Chunked LOD technique, at least). It's a crack filling technique, and is much easier than decimating the side of a mesh to match up with lower detail chunks like HexiDave's system. It works so well and is so easy, I almost felt like I was cheating :). The only possible drawback is that it can cause a small area of texture stretching near where cracks would be, although as described in the paper the screen-space pixel error LOD system makes it virtually impossible to spot (which seems to be true even with very high-res textures, from what I tested).
I disliked the skirt methods. If you are keeping LOD levels within one level as it seems a lot of the implementations I have run across do/suggest, I prefer changing the patch layout and just skipping vertices instead. Makes it as simple as keeping around a static index buffer with each of the 16 possible layouts at differing LOD directions.

Code: Select all

// Patch Structure #1
// *--*--*--*--*
// |\ |\ |\ |\ |
// | \| \| \| \|
// *--*--*--*--*
// |\ |\ |\ |\ |
// | \| \| \| \|
// *--*--*--*--*
//
// Patch Structure #2
// *--*--*--*--*
// |\ | /|\ | /|
// | \|/ | \|/ |
// *--*--*--*--*
// | /|\ | /|\ |
// |/ | \|/ | \|
// *--*--*--*--*
Haven't looked into the Chunked LOD approach much though.

Would be interesting to learn more about your implementation. Always enjoy just kicking around intriguing possibilities and techniques.

Hope things progress well.
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

Are you currently limiting to your heightmap data source resolution when it comes to the amount of terrain detail shown?
Yes, but my current "ChunkLoader" implementation is a placeholder at best. I'm still thinking about heightmap data loading/generation methods. I'd like to combine a procedural technique with a medium-res heightmap, but I don't know how well dynamic procedural generation is going to work with my plans for dynamic lighting with normal maps and ambient occlusion maps.

Right now the only practical solution I can think of is to pre-generate the heightfield and texture/lighting maps.
What are your plans for texturing?
I'm not sure yet, but my requirements are that an entire planet doesn't take too much memory (<10MB maybe) since I want lots of them, and obviously I don't want to sacrifice too much visual quality or performance. I haven't done much research here yet, but any info I can get will help.
I disliked the skirt methods. If you are keeping LOD levels within one level as it seems a lot of the implementations I have run across suggest, I prefer changing the patch layout and just skipping vertices instead. Makes it as simple as keeping around a static index buffer with each of the 16 possible layouts at differing LOD directions.
If I used the GeoMipMapping technique, I would definitely have used 16 static index buffers, but with Chunked LOD it's just not possible. Chunked LOD, unlike GeoMipMapping, does not have a constant batch size - at a distance the planet can be rendered with only 3 batches (with horizon culling), when close up the subdivision process increases that to about a hundred. This means that a very large "chunk" can be neighbor to many assorted sizes of chunks, and as you can see in screenshots from HexiDave's implementation, indexing these in real-time wouldn't be trivial.

Before I tried skirts I was a little skeptical, but once you try them and see how fast they can be I think you'll grow to like them as I did :)

Considering that the engine now runs at >1000 FPS at ground level and 1500 FPS from space, I'd say skirts have very good potential. If I added a mesh decimation system, I don't think the performance would be half as good since the pipeline could be overloaded with constantly changing index buffers.
Would be interesting to learn more about your implementation. Always enjoy just kicking around intriguing possibilities and techniques.
Yeah, it's fun experimenting with techniques. The heightmap/texture generation / loading system will probably be the next technical hurdle, but I'm sure I'll solve it with enough research and experimentation.
User avatar
trilobite
Silver Sponsor
Silver Sponsor
Posts: 135
Joined: Thu Jul 13, 2006 9:16 pm
Location: San Juan Capistrano, CA, USA
x 1

Post by trilobite »

I want it.
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36

Post by Nauk »

totally amazing work :) JohnJ, looking forward to try it out!
Damiensturdy
Kobold
Posts: 28
Joined: Mon Apr 17, 2006 12:46 pm

Post by Damiensturdy »

Heyhey! This looks AWESOME! Very very very nice work JohnJ :-)

(I would so love to play with this in blitmax with flow. There's an old space game that Evak and I intend on completing in a few years probably, and having planets like this would solve one heck of a large problem we would face.)

Does this allow you to have more than one planet?

[edit]

OK, I have a video request that should really show some cool stuff off, maybe it's something for in the future, but!

Start on the ground, "take off", go into orbit, outer space, then make a reentry finally coming to rest at near ground level.

I think that would make an awesome video showcase.

(No there doesnt need to be stars, just focus on the planet X-) )

Haha, can you tell you have my interest? :D
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

Yeah, planet engines open a lot of opportunities in game design :). Don't expect anything soon though, since the engine has a way to go until completed. Also, this is actually going into a game project that may be sold, so we probably won't open-source it until the game is done. However, this does mean that when it is released, it will be very polished and ready for use in a real game.
OK, I have a video request that should really show some cool stuff off, maybe it's something for in the future, but!

Start on the ground, "take off", go into orbit, outer space, then make a reentry finally coming to rest at near ground level.

I think that would make an awesome video showcase.
Yeah, definitely, although I'll probably improve the graphics before I do that video (I'm currently researching procedural generation of terrains which I can use to expand a 512x512 height/property map to 4096x4096 or 8192x8192 in real-time. The engine runs at almost the same speed no matter how large planets are, so it would be a waste to only use it for tiny planets :)
Does this allow you to have more than one planet?
Yeah, Planet is derived from MovableObject, which means you attach it to a SceneNode just like an Entity, so you can create as many as you want, and rotate/position/etc. as you like.
mr. iknoweverything
Halfling
Posts: 72
Joined: Thu Jul 12, 2007 5:39 pm
Location: berlin

Post by mr. iknoweverything »

JohnJ wrote:Yeah, planet engines open a lot of opportunities in game design :). Don't expect anything soon though, since the engine has a way to go until completed. Also, this is actually going into a game project that may be sold, so we probably won't open-source it until the game is done.
so, when is the game gonna be done? :D
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

mr. iknoweverything wrote:so, when is the game gonna be done? :D
The game's barely out of the design phase, so it's a little too early to be able to tell now, unfortunately.
User avatar
GlobalExplorer
Halfling
Posts: 82
Joined: Sat Oct 14, 2006 12:39 pm
Location: Berlin
x 1

Post by GlobalExplorer »

Lord Alexion wrote:Seems like I'm not the only one with the idea of making the next ELITE-like space sim huh?
Me too ;)

Image Image

Space scenes with Ogre look sooo nice .. but it's also so much work to create a game with spaceships etc ..

Maybe in the future there should be an initiative to get all the Elite fans here together under one project.
User avatar
Lord Alexion
Kobold
Posts: 29
Joined: Wed Oct 19, 2005 2:46 pm
Location: São Paulo, Brazil

Post by Lord Alexion »

@GlobalExplorer: whoa, NICE!!!

Well, in fact, what I'm aiming for is a NOCTIS-like space sim. The idea is to explore a gigantic universe comprised of galaxies that altough are procedurally-generated, then are hard-coded into a file, so it is consistent. I have most of the basic systems and the generation code done by now, but I'm stuck at this planetary-rendering thing...

Since the idea of my project is to have a sandbox simulation model, to be able to freely explore those galaxies with not many limitations, I need to implement a solution that allows me to land and take off from planets without loading maps... (after all, one of the main aspects of this game is gonna be sharing screenshots of your explorations in the game's community website, and orbital shots are just so damn nice that would be a shame to leave that possibility out =D)

But unfortunately I ave a long way to go to understand this kind of low-level rendering code...
Brainshack
Greenskin
Posts: 118
Joined: Tue Feb 19, 2008 1:01 pm

Post by Brainshack »

Maybe JohnJ will make his source free to use like he did with the paged geometry stuff? Would be great though :) Not only for you
User avatar
paddy
Greenskin
Posts: 136
Joined: Sun Aug 01, 2004 7:07 pm

Post by paddy »

Brainshack wrote:Maybe JohnJ will make his source free to use like he did with the paged geometry stuff? Would be great though :) Not only for you
JohnJ wrote: Also, this is actually going into a game project that may be sold, so we probably won't open-source it until the game is done.
User avatar
GlobalExplorer
Halfling
Posts: 82
Joined: Sat Oct 14, 2006 12:39 pm
Location: Berlin
x 1

Post by GlobalExplorer »

@Lord Alexion: We'd better not hijack this thread. I will put you on the to-inform list once I have a demo ready.
User avatar
gugus
Halfling
Posts: 96
Joined: Mon Feb 05, 2007 6:35 pm
Location: France Mulhouse

Post by gugus »

I know it's a little off-topic,but I made some search on Elite,and i was wondering of wich Elite you are talking about.

Screns are greate!
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

GlobalExplorer: Nice, those are some nice looking orbital views :)

Brainshack: Yeah I do plan to open-source this eventually, it's just a matter of when.
Brainshack
Greenskin
Posts: 118
Joined: Tue Feb 19, 2008 1:01 pm

Post by Brainshack »

Nice to hear! Can't wait to see this in action in a game.
posix337
Gnoblar
Posts: 3
Joined: Fri Feb 22, 2008 5:01 pm

JohnJ have you seen this?

Post by posix337 »

I was researching this topic recently and stumbled across this very useful site (I'm sure you've already seen it...) http://www.vterrain.org/LOD/Papers/index.html

However, an implementation that caught my eye, was the "Planet-Sized Batched Dynamic Adaptive Meshes (P-BDAM)" article

http://www.crs4.it/vic/data/papers/ieeeviz03-pbdam.pdf

It certainly looks like it combines some of the best techniques.

Edited for spelling, and a bad url.
freegamerblog
Kobold
Posts: 36
Joined: Sun Feb 24, 2008 2:39 pm

Post by freegamerblog »

This looks great.

I'd like to bring your attention to an open source game called Vega Strike. They have a lot already - ships, planet screens, dynamic universe, lots of contributors (some amazing models / artwork).

There are two things that the project wants but hasn't been able to achieve yet because of lack of key developer time and direct knowledge:

1. A port to Ogre3D (they have started implementing it but it's far from complete)
2. This

Perhaps you would like to look at the possibility to merge your techniques / rending with their gameplay engine. If it's at all feasible, it would be an incredibly powerful combination.
freegamerblog
Kobold
Posts: 36
Joined: Sun Feb 24, 2008 2:39 pm

Post by freegamerblog »

Lord Alexion wrote:But unfortunately I ave a long way to go to understand this kind of low-level rendering code...
Like I say, perhaps you might be better to join forces with an existing project (there's a few good open source ones: SFZ, Vega Strike) so you can concentrate on your universe generation ideas.
User avatar
JohnJ
OGRE Expert User
OGRE Expert User
Posts: 975
Joined: Thu Aug 04, 2005 4:14 am
Location: Santa Clara, California
x 4

Post by JohnJ »

Perhaps you would like to look at the possibility to merge your techniques / rending with their gameplay engine. If it's at all feasible, it would be an incredibly powerful combination.
I'm sure this engine would be a great combination, and I'll be glad to open-source it when the time comes :). Unfortunately, now just isn't the time for me to open-source it for various reasons (incompleteness, many technical difficulties yet to be overcome, lack of tools, in addition to the reasons mentioned previously).