Drawing game area

Started by
5 comments, last by DmitryNik 11 years, 5 months ago
Hello.

I'm wondering, if there is a special technique for drawing a games' fields (like in Age of Empires or Heroes IV etc.). But I don't know what I should search for. I know, I can draw one with primitives and "dress" it up with texture. But would be it really the same as in the games mentioned above? And if there is a special technique for drawing such fields, could anybody give me any hints, what I should search for?

Thank you in advancesmile.png
Advertisement
You need to google for "terrain rendering" and you will find many different algorithms with various tradeoffs and specialized for various implementations. They generally get the needed data from a heightmap and build a triangulated mesh which can also account for LoD, etc... although there are other implementations such as the voxel terrain system in the C4 engine.
Thank you. I was searching for those 2 words pretty long time.unsure.png
With the answer on my question I was able to draw using LOD my own terrain(it's awesome, guys smile.png ). But I got another problem, and to avoid creating a new topic(since the question still relates somehow to the game area(terrain) drawing) I'll describe the problem and will ask the question here. I got stuck with lightning. I'm using XNA and I just tried to make some nice(I believe it's possible) lightning with BasicEffect class. I used directionalLight0 for this purpose and... it doesn't work. I've tried to rotate the terrain, then camera, but there is no any visible objects on the screen at all, there is only dark screen. Here is my code for the lightning and for the world matrix:
[source lang="csharp"] this.basicEffect.LightingEnabled = true;
this.basicEffect.DirectionalLight0.Direction = new Vector3(0,0,1);
this.basicEffect.DirectionalLight0.DiffuseColor = new Vector3(1f, 1f, 1f);[/source]

Only transformation done on the world matrix:
[source lang="csharp"]this.world = Matrix.CreateTranslation(new Vector3(-this.terrainTexture.Width / 2.0f, 0, this.terrainTexture.Height / 2.0f));[/source]

Where could be the problem?
Your Directional Light vector seems to be parallel to the ground, try changing it to Vector3(0,-1,0)

Your Directional Light vector seems to be parallel to the ground, try changing it to Vector3(0,-1,0)


To be honest, I've tried every possible value. But it still doesn't work.
Normal vectors are not zero. I've checked it. Also even custom point lightning doesn't work. And this is very strange. Since I take the light position and the Vertex position, then the "ray" is created. After that the dot product is calculated(DOT(ray, normal)). Moreover the ray is normalized. I've tried this effect on the small mesh and it worked.



ADDED:

Yeees! Problem solved!!! biggrin.png

The only reason WHY lighting doesn't work was in the order in which statements were written! Before putting vertices into the buffer we have to calculate the normal component of the each vertex. And ONLY after that we can put it in the buffer.unsure.png

This topic is closed to new replies.

Advertisement