3D engine and huge world
What are the best techniques to build a 3D engine dedicated to represent a huge world (like Earth for example) ? Could it be done with terrains generation, heightmaps .... ?
Thx
Well, earth.... first, get a *really* fat SGI box, write the software for it and here you are
-Lev
-Lev
I guess it could be done, if you split the world up into 1000''s? of seperate areas and as you move into a different area, load it from disk.
No reason why it shouldnt be possible, but the detail would suck, unless you want the world to occupie the whole harddrive, or if you where to use a system to randomly place details as you went through the world. (Like trees for a wood-terrain)
Building the whole world... pfff... in detail?
Theoretically possible, but not doable...
You want to view every spot on earth and rebuild it?
Well, if you want to be able to walk in first/3rd person through the world, saying from the eyes of a normal human, you could use heightmapping for the landscapes, and use fog so you don''t have to display the whole big stretched landscapes and make a system which loads only parts of the map.
Of course, the whole earth is impossible. Make is a lot smaller!
Theoretically possible, but not doable...
You want to view every spot on earth and rebuild it?
Well, if you want to be able to walk in first/3rd person through the world, saying from the eyes of a normal human, you could use heightmapping for the landscapes, and use fog so you don''t have to display the whole big stretched landscapes and make a system which loads only parts of the map.
Of course, the whole earth is impossible. Make is a lot smaller!
You can create an infinite universe, using
know konstant-randomization techniques.
Basicly you divide the "world sphere" into a
few areas, and you "real-time" generate the next
area based on this area. This way, your world
could even be called infinite!
A closer look at it:
First off, you need a Random function that will
allways produce the same output, based on the
parameters we give it.
Ex: int a=KRnd(3,4);
Know you generate your map. Imagine your
map is create by two layers:
The first layer creates the heighmap, the second
describes buidings and stuff.
Layer 1: for each x,y on the map, run KRnd
/ x-------->+
y 153479427
| 839272384
| 435353535 This is cell 1 of the map
| 684562476
| 345378833
V
+
Now, imagine the player moved off the map, from cell
1 onto cell 2.
You can generate each cell based on the previous cell,
using the KRnd function. Remember, its not a true "random"
function, for it will allways return the same value for
the same set of parameters.
So, how do i build this cell 2?
Imagine you pass onto the KRnd function the value
of the corners of the previous cell (1,7,3,3).
So, if you want to know what to put in X,Y of cell 2:
int value = KRnd(X, Y, 1, 7, 3, 3);
you KRnd function could slook something like this:
int KRnd (int a,b,c,d,e,f)
{ int res;
res=(a*a)+(b*b)+(c*d)+(e-f) mod 100;
return res;
};
Now, all of this means s*hit if you don''t have a
good enough graphical pipeline to render it, so
try to keep each world cell as small in polygon count
as your Render pipeline is capable of rendering in
real time.
I hope the message got thru to you. Learn more
about Infinite Universe Generation online.
Don''t forget that you''re responsible for creating a
KRnd function that will suit your needs...
know konstant-randomization techniques.
Basicly you divide the "world sphere" into a
few areas, and you "real-time" generate the next
area based on this area. This way, your world
could even be called infinite!
A closer look at it:
First off, you need a Random function that will
allways produce the same output, based on the
parameters we give it.
Ex: int a=KRnd(3,4);
Know you generate your map. Imagine your
map is create by two layers:
The first layer creates the heighmap, the second
describes buidings and stuff.
Layer 1: for each x,y on the map, run KRnd
/ x-------->+
y 153479427
| 839272384
| 435353535 This is cell 1 of the map
| 684562476
| 345378833
V
+
Now, imagine the player moved off the map, from cell
1 onto cell 2.
You can generate each cell based on the previous cell,
using the KRnd function. Remember, its not a true "random"
function, for it will allways return the same value for
the same set of parameters.
So, how do i build this cell 2?
Imagine you pass onto the KRnd function the value
of the corners of the previous cell (1,7,3,3).
So, if you want to know what to put in X,Y of cell 2:
int value = KRnd(X, Y, 1, 7, 3, 3);
you KRnd function could slook something like this:
int KRnd (int a,b,c,d,e,f)
{ int res;
res=(a*a)+(b*b)+(c*d)+(e-f) mod 100;
return res;
};
Now, all of this means s*hit if you don''t have a
good enough graphical pipeline to render it, so
try to keep each world cell as small in polygon count
as your Render pipeline is capable of rendering in
real time.
I hope the message got thru to you. Learn more
about Infinite Universe Generation online.
Don''t forget that you''re responsible for creating a
KRnd function that will suit your needs...
[Hugo Ferreira][Positronic Dreams][]
"Research is what I''m doing when I don''t know what I''m doing."
- Wernher Von Braun (1912-1977)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement