Wednesday, November 25, 2009

Decal on terrain

Today I added decals on terrain.
They are nice and you can rotate decals on terrain and use them for selecting effects also I have an idea to use decals for add dynamic lights on terrain.


Monday, November 23, 2009

Ray-Triangle intersection test code

I noticed that most of the blog visitors come here for Ray-Triangle intersection test so I decide to put the code here.

I hope it is useful for you.

//! Checks if the ray and triangle intersects and store the intersection point in the Out parameter.
CollisionType IntersectRay(Ray* pRay, kge::math::Vector& Out)
{
Edge1 = Point2 - Point1;
Edge2 = Point3 - Point1;
Normal.Cross(Edge1, Edge2);
float fGama = -(pRay->Direction * Normal);

if (fGama < fEpsilon)
return ECT_NotIntersect;

Vector b = pRay->Position - Point1;
float fLanda = (b * Normal) / fGama;

if (fLanda >= 0.0f && fLanda <= 1.0f)
{
Vector u;
u.Cross(b, pRay->Direction);
float u1, u2;
u1 = (Edge2 * u) / fGama;
u2 = (-(Edge1 * u)) / fGama;
if (u1 + u2 <= 1.0f && u1 >= 0.0f && u2 >= 0.0f)
{
Out = pRay->Position + (pRay->Direction * fLanda);
return ECT_Intersect;
}
}

return ECT_NotIntersect;

} // IntersectRay

Sunday, November 15, 2009

Refraction

I added refraction to the terrain.
Just want show a screen shot.
If I had a under water texture the result was better :D

click image for bigger view

Saturday, November 14, 2009

RTT(Render To Texture) With Anti Aliasing added

I added Anti Aliasing for rederable textures but It seems there is no way to use it with MRT.

Thursday, November 12, 2009

Attach nodes to bones

Now you can attach objects to the bones and they will be updated automatically.


The terrain is now divided to smaller sections and the ray picking speed is very good now.
I also write a simple shader that represent the water effect that color the terrain depend on height.
You can see the terrain AABB in the picture that get updated during the edit.

Sunday, November 8, 2009

Blend Tiles, AABB & Ray Intersections

The tiles can be blended with each other now. This way there is no hard edge anymore.

You have to use an alpha map for blending so you have more options for blending. I use this alpha map for test. It is not a good one :D



And here is a screen shot.


I also added AABB and ray intersection to the engine, so I can optimize my terrain more and partitioning it.

If anyone has a question about everything I implemented in my engine please ask me and leave a comment for me I try to answer it :D

Sunday, November 1, 2009

Edit terrain

Hi all

After coding for triangle-ray intersection I start to create a class for getting the clicked triangle. I called this class DynamicTriangleMesh.

DynamicTriangleMesh works slow for now and I need to partition the terrain and add AABB(Axis Aligned Bounding Box) to it then I check the ray collision with AABB if it collide then check for triangle intersection.

I added some functions for editing the tiles and height of the terrain.

I also added a flood fill algorithm to fill the tiles and finding the tiles borders for blending them.

I test my idea about blending and tiling it works good and soon the first version of terrain will be ready.

I also added a screen shot for showing the fill and finding the tile borders with flood fill algorithm.

you can get the latest codes from SVN.
https://kge.svn.sourceforge.net/svnroot/kge