Jump to content
  • Advertisement
Sign in to follow this  
Medo Mex

Moving mesh over terrain

This topic is 2234 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
Advertisement
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

Share this post


Link to post
Share on other sites
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]>[/background]

[/font]

[background=rgb(250, 251, 252)] [/background]

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]it is a good starting point to code functions to get the terrain height at certain x,y point[/background]

[/font]

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]That's what I thought about doing, I think I need to get the top vertex Y axis based on the character/[/background]

[/font][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]vehicle X and Y, however I am not sure about how to get the Y axis from the terrain vertex, any idea?[/background]

[/font]

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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).

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!