Using 3dmax model as terrain


how can I use a 3dmax model or how to import it as a terrain? - I

in the update method in ur main game loop, u need to update the player's height according to the current height of the terrain.

do a collision detection to find the height and add that to the bouding of the player then set that as the player's y coordinate.

well, I did the collision test… but I did not find any class or method that return me the information I need.

my " Terrain " is a model that I load as a Node and the Player is another Node… - I can do what you said if I change to a TerrainPage or TerrainBlock class, but that way I cant import the model… (at least I couldnt make it work)

is there any piece of code that you could share to make things clearer to me?

theres no built in classes to do these kind stuff, u need to write ur own collision check.

heres the utility method i wrote b4, u can try to modify it to suit ur case

    * Find the intersection of the player's island and the ray passed in. The returned value
    * is in the player's current island's local coordinate system.
    * If the target cannot be found or the ray does not hit the target, return null.
    * @param ray The ray defines the direction of searching.
    * @param player The player that is looking for the intersection.
    * @return A Vector3f which defines the intersection point.
   public static Vector3f findIntersection(Ray ray, Player player) {
      Vector3f intersection = new Vector3f();
      PickResults results = new TrianglePickResults();
      // Use the ray to find all the models on the player's island which are hit by the ray.
      player.getIsland().findPick(ray, results);

      // Find the target model in the results.
      boolean found = false;
      boolean hit = false;
      for(int i = 0; i < results.getNumber() && found == false; i++)
         TriMesh model = (TriMesh)results.getPickData(i).getTargetMesh().getParentGeom();
            found = true;
            // Find the intersection where the ray hits the target's boundingBox in world
            // coordinate system.
            Vector3f[] vertices = new Vector3f[3];
            for(int j = 0; j < model.getTriangleCount() && hit == false; j++)
               model.getTriangle(j, vertices);
               hit = ray.intersectWhere(
                           vertices[2].addLocal(model.getWorldTranslation()), intersection);
      // If there is an intersection found, translate coordinate system.
      if(found == true && hit == true)
         // Translate the worldCoordinates into the player's island local coordinate system.
      // If the target cannot be found or the ray does not hit the target, return null.
      if(found == false || hit == false)
         return null;
      // Return the intersection.
      return intersection;

thx again Neakor, I will try that…

Reverendo said:

thx again Neakor, I will try that..

no problem, i wrote alot collision detection methods to help my game work with models. coz basically everything in my game is a 3d max model.