Search Home Members Contacts
About Us
Products
Downloads
Community
Support
Pages: [1] 2 3
  Print  
Author Topic: FreeTree - Procedural Tree Generator  (Read 8286 times)
WEst
Community Member
*
Posts: 805

Daniel Martinek


WWW
« on: September 24, 2007, 11:02:59 AM »


I'm currently developing a nature rendering system for my own RPG, and I'm willing to give it away for free when it is completed.

Its current features are:
  • Creation and placement of procedural trees using adjustable parameters and a seed value
  • Creation and placement of meadows
  • Rendering of the trees and grass

For generating the tree presets I wrote an application called FreeTree:


The system uses a procedural mesh as trunk and a minimesh system for the leaves. The system uses shaders to animate grass,leaves and the tree trunk, so it will only work with shader hardware.

It is coded in VB.NET 2005 and will come as a managed *.dll once finished, paired with the FreeTree Editor, a small sample project and some documentation.

If anyone has a good idea about what to add to the nature system, feel free to post in here or meet me in the TV IRC Channel or on MSN/ICQ/PM.
Logged

Greetings

Daniel Martinek
Lead Programmer
Roaming Nova Studios
Raine
Customers
Community Member
*****
Posts: 1141


« Reply #1 on: September 24, 2007, 11:09:17 AM »

Awesome! Can't wait to try it. Smiley
Logged

Zaknafein
Customers
Community Member
*****
Posts: 2624


WWW
« Reply #2 on: September 24, 2007, 11:37:52 AM »

Excellent stuff! Will the bundled textures be free as well?
Logged

zaknafein.
>> the instruction limit : my blog & samples repository! <<
GD
Customers
Community Member
*****
Posts: 360

Josip Basic


« Reply #3 on: September 24, 2007, 11:44:29 AM »

Really nice idea and implementation!
Logged

tvsm.co.cc - TVSceneManager
WEst
Community Member
*
Posts: 805

Daniel Martinek


WWW
« Reply #4 on: September 24, 2007, 11:47:53 AM »

Excellent stuff! Will the bundled textures be free as well?

At the moment I'm using some textures from other games, for testing, but I will try to get some nice looking free textures for the release (even when I have to draw them myself  Wink)
Logged

Greetings

Daniel Martinek
Lead Programmer
Roaming Nova Studios
Sarge
Customers
Community Member
*****
Posts: 32


« Reply #5 on: September 24, 2007, 12:05:08 PM »

Amazing work, keep it up !

Sarge.
Logged
Zaneiel32
Community Member
*
Posts: 27


« Reply #6 on: September 24, 2007, 12:41:14 PM »

Great work West!, hows the FPS hold up? i notice when my scenes start geting busy with stuff i take a prety good hit on my FPS.

Can't wait to try it out.
Logged
aspurgeon
Customers
Community Member
*****
Posts: 143


« Reply #7 on: September 24, 2007, 02:41:56 PM »

I think this is great!  Can't wait to try it out!
Logged
Rynus_Rein
Community Member
*
Posts: 1010


« Reply #8 on: September 25, 2007, 09:35:48 AM »

Looks good West! I remember you talking about it a while ago (was it in the IRC channel?)
Logged

Rynus Rein
Current Project: MapX Live, Society3D
bjennison
Customers
Community Member
*****
Posts: 97


« Reply #9 on: September 26, 2007, 04:42:09 PM »

Those screenshots look awesome.

How the heck do you create thick looking "meadows" of grass without a billion mini-meshes on screen at any one time??

Logged
HumanoidTyphoon
Customers
Community Member
*****
Posts: 38


« Reply #10 on: September 27, 2007, 02:32:21 AM »

Damn thats awesome!! Was just about to look into grass shaders specifically. You got a really nice effect there!
Logged

Ordo Ab Chao
WEst
Community Member
*
Posts: 805

Daniel Martinek


WWW
« Reply #11 on: September 29, 2007, 02:33:18 PM »

I recently worked on performance optimizing in two main regions of my library:
  • Generation Speed
  • and Rendering Speed

I was able to cut down the generation time of a tree from 140ms to about 40ms (depending on the tree ofcourse). And I also added a new Level of Detail System to the library. Now there are 4 different representation meshes of the tree, that are rendered depending on their SortingOrder (I will explain that some time later). The first 3 representations are the normal trunk as mesh / leaves as minimesh system, with different polycounts for the trunk and the the 4th is a simple billboard that is rendered at the generation of the tree.

Below you will see one new screenshot of a test scene I created for performance testing inside my editor. As you maybe see the billboards aren't perfect yet, but I'm working on it (you will not see an obvious transition between the 3 normal representations, but there is a small change with the billboard as I can't render a billboard for every camera position ).

There is still a lot to do, but it is progressing very well.
Logged

Greetings

Daniel Martinek
Lead Programmer
Roaming Nova Studios
vbCrLf
Community Member
*
Posts: 312


WWW
« Reply #12 on: September 30, 2007, 03:40:05 AM »

Its really nice WEst! Can't wait to try it...
About the grass, in the far part of the landscape there is no grass. I think its will be much better if you see a low detail level grass instead of nothing.
Logged

TVProjects
newborn
Customers
Community Member
*****
Posts: 2434


WWW
« Reply #13 on: September 30, 2007, 10:01:35 AM »

you will not see an obvious transition between the 3 normal representations, but there is a small change with the billboard as I can't render a billboard for every camera position

To counter this, what I did was to create billboards at runtime and update them every second. Which means: the first time the tree is rendered, a billboard is created (using render surface) and then updated every second (if the player moves around, the tree doesn't look too weird).

From what I understand, you want to use pre-gen billboards. So what I would suggest you would be to create 8 billboards (camera at angle 0, 45, 90, 125...) It works, this is how most MMORPG games on the market do it for their models: trees, houses, etc. You will still see a transition between the 2D and 3D version, but at least, if you're behind your model, the 2D version rendered is not showing the front of it.
Logged

Eric
Customers
Community Member
*****
Posts: 754


« Reply #14 on: September 30, 2007, 10:23:12 AM »

Looks awesome WEst, and sounds like you're getting a bunch of good features in there.  Keep us posted on your progress
Logged
Hypnotron
Customers
Community Member
*****
Posts: 793


« Reply #15 on: September 30, 2007, 11:44:48 AM »

To counter this, what I did was to create billboards at runtime and update them every second. Which means: the first time the tree is rendered, a billboard is created (using render surface) and then updated every second (if the player moves around, the tree doesn't look too weird).

From what I understand, you want to use pre-gen billboards. So what I would suggest you would be to create 8 billboards (camera at angle 0, 45, 90, 125...) It works, this is how most MMORPG games on the market do it for their models: trees, houses, etc. You will still see a transition between the 2D and 3D version, but at least, if you're behind your model, the 2D version rendered is not showing the front of it.

newborn has the right idea here.  generate your billboards on the fly and update them at a low frequency in a round robin sort of scheduling system, but with priority to the closer ones and ones in the frustum (e.g. if its close and in frustum and its age + aspect angle has changed > epsilon, move it to the top of the list)

generating billboards at runtime is easier than you think and it saves your artists allot of needless work.
Logged
WEst
Community Member
*
Posts: 805

Daniel Martinek


WWW
« Reply #16 on: September 30, 2007, 12:20:04 PM »

Yeah I think you are right with the updating, I will try that idea. It shouldn't be much of a problem because I already create the billboards at runtime, so it's only a small code change.
Logged

Greetings

Daniel Martinek
Lead Programmer
Roaming Nova Studios
WEst
Community Member
*
Posts: 805

Daniel Martinek


WWW
« Reply #17 on: October 06, 2007, 07:23:53 AM »

It's time for the weekly dev report Grin :

Finally I found a bug that was bothering me the whole week and caused terrible problems with the LOD system, but now it is fixed.

I also did some further performance testing, I currently tried 450 trees within an area of 256x256 meters and it runs with quite smooth 60 FPS on my PC (Athlon X2 4600+, R1800 XL) the LoD system does a good job in reducing the polycount, but I have still to work on some things with the billboard system and implement the system proposed by newborn and Hypnotron.

Another thing I will do before release is to change the generation of the tree to a faster and better method (I already have some nice ideas about it), as at the moment it is possible that some branches won't be attached to the trunk in a nice way.

I also added support for random coloring of the tree leaves to have a more realistic result (will be added to the grass too). Examples for the coloring can be seen in the screenshots attached to the post.

Finally there is a small youTube video with poor quality that shows the tree system with 450 trees (don't mind the FPS as the video capturing is very slow):
http://www.youtube.com/watch?v=IGZ77AOiD0Y
Logged

Greetings

Daniel Martinek
Lead Programmer
Roaming Nova Studios
Rynus_Rein
Community Member
*
Posts: 1010


« Reply #18 on: October 06, 2007, 07:52:23 AM »

Looks good! Can't wait for the release.
Logged

Rynus Rein
Current Project: MapX Live, Society3D
Zaknafein
Customers
Community Member
*****
Posts: 2624


WWW
« Reply #19 on: October 06, 2007, 11:00:01 AM »

Very nice!
Are there normals on the leaf billboards and the trunk? It kinda looks flat-shaded...
Logged

zaknafein.
>> the instruction limit : my blog & samples repository! <<
Pages: [1] 2 3
  Print  
 
Jump to:  

Powered by SMF 1.1.3 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks