Jump to content

  • Log In with Google      Sign In   
  • Create Account


Moving mesh over terrain


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 03 June 2012 - 04:39 PM

If I have a mesh and I want to move it over a terrain, how can I do that?

I am using C++ and DirectX 9

Edited by Medo3337, 03 June 2012 - 11:56 PM.


Sponsor:

#2 kauna   Crossbones+   -  Reputation: 2285

Like
0Likes
Like

Posted 04 June 2012 - 05:21 AM

Depends greatly what you want exactly to do. Moving a player character is much simpler than a vehicle for example.

Otherwise, it is a good starting point to code functions to get the terrain height at certain x,y point. This allows you to place objects on the terrain and then move them in a way that they stay on the terrain.

If you a looking for some general collision detection solution, bullet physics for example could work for you. With bullet physics you may create a terrain body and a character controller / vehicle controller without much of troubles.

Cheers!

Edited by kauna, 04 June 2012 - 05:22 AM.


#3 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 04 June 2012 - 08:53 AM

>

it is a good starting point to code functions to get the terrain height at certain x,y point



That's what I thought about doing, I think I need to get the top vertex Y axis based on the character/

vehicle X and Y, however I am not sure about how to get the Y axis from the terrain vertex, any idea?



#4 DJTN   Members   -  Reputation: 207

Like
0Likes
Like

Posted 04 June 2012 - 05:28 PM

It depends on how you create your terrain too. If you create it from a height map you can store the vertex with the left and right normal in a collection and then quickly pull that cell up based off the mesh's X and Z location -to determin the Y (height) on the terrain with a DOT product (ray cast).

If you've created the terrain in a modeling pkg you can create bounding boxes (in most cases) and test for intersection.

#5 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 04 June 2012 - 05:50 PM

I have created the terrain in 3Ds Max, however, I dont find creating bounding box efficient since I could be having alot of heights and the character will be moving on the terrain (up and down).

#6 kauna   Crossbones+   -  Reputation: 2285

Like
0Likes
Like

Posted 05 June 2012 - 01:45 AM

Hi,

A problem with terrains generated with 3DS max is that it is quite hard to make assumptions about the way the data is stored. You can't be absolutely sure that the terrain is a regular grid for example. What you have is a called triangle soup.

It isn't impossible to work with such a terrain. Practically it is a question of ray-triangle intersection test. The problem is that your terrain probably has plenty of triangles and testing against each triangle will probably take too much CPU power. You will need some sort of spatial separation structure such as octree to narrow down the problem (ie. to minimize ray-triangle calculations).

Cheers!

#7 DJTN   Members   -  Reputation: 207

Like
0Likes
Like

Posted 05 June 2012 - 09:13 AM

I have created the terrain in 3Ds Max, however, I dont find creating bounding box efficient since I could be having alot of heights and the character will be moving on the terrain (up and down).



In that case, you’re going to have to create your own grid of cells that contain multiple triangles of your imported terrain. Each cell will have a world minimum and maximum x and z value and contain a list of triangles. At start up you’ll go through your terrain and allocate each triangle to one or more of these cells. It is 'one or more' because triangles will quite often overlap cell edges and in that case they should belong in both cells. When carrying out our collisions test you can now look up, in a similar way to using a regular grid, the correct cell. You can then loop through each triangle in the cell doing a point in polygon test until you find the correct triangle.



The point here is to limit the number of triangles to check each frame. Grouping them in buckets will acommplish this. Also you can save resources by only doing the collision test if the object you're checking is moving.


Good Luck!

Edited by DJTN, 05 June 2012 - 09:17 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS