I've never used DarkGDK so the API is foreign to me, but let me explain how I would do this. First your character must have a rotation and position like Alex mentioned. The position should be the position of the bottom of the model. This is important for keeping him above ground. The rotation would be controlled by your input so that's up to your API and shouldn't be too challenging. Just get the game pad or mouse or keyboard input and translate that into a rotation for your character.
To keep your character on the terrain what you generally do is "raycast" from the character down. I generally perform raycasts from the head even though the position is at the feet. The reason for this is because gravity may pull your character's feet through the ground so casting a ray down from there will not return a result. Casting down from the head will almost always give you a point on the ground.
To do the ray casting, you'll need to do some trigonometry depending on the API. For instance, in the XNA framework there is a Ray structure which can detect intersections with basic bounding volumes. Then the team released a sample doing Ray-to-polygon collision sample which allows us to quickly find intersection points between a ray and a model. So it's not too bad because the XNA framework provides these methods. In DarkGDK you may have to see if the API provides such functionality otherwise you'll have to do it yourself.
Here are a few links that might help you out if you have to do the grunt work on your own:
http://en.wikipedia.org/wiki/Raycastinghttp://www.flipcode.com/archives/Basic_Collision_Detection.shtml