As far as exporting from Max->Xfile, the PandaXporter does work(providing it was skinned, rigged and animated correctly), you just need to be careful with the settings.
The problem with the Panda exporter is that when you export a biped, it actually exports the biped mesh. The skeleton biped is several thousand polygons, which is a total waste. Here's how you get rid of it:
To export a biped-animated mesh from 3ds max 8, first export to Alias (.fbx). Click the Reset button on the export dialog and leaving the default settings. If you get this message:
just click Yes and it'll go away.
Then go File->Reset (make sure you save normally first if you haven't already done so), then File->Import. Choose the Alias (.fbx) file you just exported, and again click Reset on the import dialog. This gives you the animated bone structure without the biped mesh.
Now go File->Export and choose Panda (.x). I use the following settings:
That's it. The .x mesh now works beautifully in Irrlicht, and doesn't include the many thousands of polygons that make up the biped. When I performed this export method on my meshes to clean out the biped, my framerate tripled.
There are a couple things to note. First off is that you don't actually need to perform the Alias export step for it to work; your framerate will just drop a lot. I just export directly to Panda while I'm building my animations, and when I like how they look in game, I do the Alias export step to clean out the biped. If you want to add animations later on, do them on the original max file, then redo this export procedure. You don't ever want to be editing the .fbx imported file directly; use it only to export to .x .
Secondly is the framerate. On the animation tab, you can choose either 3DS Max ticks or Key Frames. The difference is, if you choose Key Frames, every frame sampled gets set to one frame in the mesh, so you have exactly as many frames as keys you sample. This makes it easy to figure out the framerate, but can (probably will) look choppy depending on the sampling rate you use because Irrlicht won't blend between these frames. On the otherhand, if you choose 3DS Max ticks, the keys will be spaced about 4800 frames apart, giving you some nice blending. So you'll need to set some really high animation speeds and adjust your animation loops accordingly.
Third is the sampling rate. Panda does not use the keys you set; it instead samples the animation at the rate you specify. Right now I use 100 FPS in Max, use whatever the reset button does in the Alias exporter, and use a sampling rate of 60 in Panda. This 60 is really way too much (wastes too much memory), but it's because I didn't space out my animations properly. What you want to do is space out your animations fps divided by samplingrate apart in max, so that you won't get your animations blending together in game. Each of my animations (walking, running, dying etc) is 100 frames long, and I'm going to space them out 10 frames each, so I'll be using a sampling rate of 10 frames instead of 60. 10 keys per animation shouldn't use up too much memory.
Fourth is the materials. To apply a texture, I use the default everything in the materials window, only I apply the texture I want to the diffuse map. What you'll want to do is name the texture you're referencing appropriately, so that when Panda exports, you can choose Copy so that it copies and links your material from the .x file appropriately. Then you can skip the texture-loading altogether in your code; when you load the mesh, Irrlicht will load the texture automatically.
Fifth, the Panda exporter supports exporting your animation sequences in the Animation tab, however I am really not a fan of putting the sequences in the .x file itself. Instead I load my sequences separately from an xml file that looks like this:
http://rafb.net/paste/results/Ontruw15.html
This allows me to set up the animations entirely separately; that way if I screw up a sequence I don't need to re-export, and if I change the sampling rate I don't need to change anything but the multiplier in the XML file. I use the IrrXML contained in Irrlicht to parse this into a simple array and reference these myself instead of asking the node to play specific animations. You can use Panda to include the sequences directly, but I have no idea how it works or whether it works at all.
Sixth, I should mention that it doesn't seem to make a difference whether you choose Matrix or Position/Scale/Rotate key type; Irrlicht handles both. Matrix may however be faster because that way Irrlicht doesn't need to recompute these itself; perhaps someone with more knowledge on the internals of the engine could elaborate on this? (Also, if you're following this tutorial for Lightfeather instead of Irrlicht, you need to choose Matrix because it handles strictly quaternion rotations.)
Well, that's basically all I know about mesh exporting. You can see the results in my control system test here:
http://rapidshare.de/files/25815094/game.zip.html
That's a ~800 poly mesh with default skeletal biped exported in this fashion.
Hmm, I didn't intend for this to be this long. If people like it and it works for them too, I can repost it as a tutorial.