in the spirit of the holidays, i present to you the fruits of my master's thesis labor...
The jit-ogre project
This project is a jitter external which embeds the functionality of the open source Ogre3D rendering engine, and exposes it to the max environment. What this basically means is you can export models from several 3D modeling applications, with textures/materials and animations, and render them and control them in jitter using hardware buffer acceleration.
this is ogre, get to know him:
SAD TECHNICAL NOTE: This is currently intel-mac only. i apologize. porting to win and ppc is first priority and will hopefully happen before i take my holiday vacation, but please be patient if it doesn't.
First, the proof.
The link below is a recording of a patch, which utilizes the great jit.boids3D to control 250 animated fish. The fish mesh comes with the ogre3d distribution to use in their samples.
The second link is a silly short movie demonstrating many of the features of the jit-ogre external (and dedicated to josh goldberg). The ninja mesh is also part of the ogre3d distribution. The music is Tomahawk.
Now, the question. "How do I take my awesome models I created in [insert your modeler of choice] and animate them with this external?"
The answer is, you don't. Just kidding. But seriously, it's not a simple process. I want to emphasize this without sounding condescending, but real time 3D modeling is a highly technical craft that people spend years honing their skills at and make lots of money doing. The reason being, there's a lot of voodoo involved, and its something i know very little about. So it will take you some time to get your model satisfactorily exported if real-time rendering is something you're new at. That being said, it's a relatively straight forward process. And there is only one place where you are going to learn much, the ogre3d artists and content creators forum.
Please notice the first four topics are all stickys that will be very useful for you to look at.
In addition, you will want to go here to find the proper exporter for your modeler of choice.
PLEASE NOTE: The maya 8.5 exporter for the mac is broken. I have fixed it and you can download it here:
Lastly, if you really want to know what you're doing with your textures and shaders and such, you will want to familiarize yourself with the ogre material scripts, by reading the manual:
So on to the external. I have created some tutorial videos which will hopefully make learning this thing less painful. This is my first project for public consumption, and I have no idea if I have created this in a way that will make sense to others. I hope I have, but you'll see for yourself. here are the links to the vids in the order you should watch them:
Below is the link to the files you need to install to use this. Please see the above videos and look at the README file for installation instructions.
(mac-intel only for now)
PLEASE NOTE: In case you don't actually want to listen to my raspy voice for 30 mins to learn how to use this, you MUST do the following steps to get this to work:
1. Bang the render context (or just turn on the metro). the window will go black.
2. Send the window to fullscreen (press escape). the ninja should appear.
3. You can now restore the screen size and do whatever you want.
you must do these steps every time you initialize the gl context.
Also, if you get a message in the max window complaining about "View Matrix not affine" or some such nonsense, reset the jit.gl.handle.
RoadMap (aka things that are broke)
capture: i have a strategy for this, but i didn't have time to implement it. hopefully it won't be too long to get capture working. this is first priority.
multiple texture units: currently, applying a jit.gl.texture to a jit-ogre object, requires a single texture unit. hope to get that fixed to allow for multi-texturing
jit.gl.shader: it's possible that this will never work correctly, but if enough people want it...
All the bugs that you find and report to me at support _at_ jitogre.org
Python / Lua script bindings.
Additional SceneManagers and environment rendering (skyboxes, particle systems, paging landscape, terrain, portal zone)
My last note. ogre is a beast. he is an incredibly well written, well documented and well supported beast, but he is a beast. also, this is just the tip of the iceberg. I will be open sourcing the entire project (still waiting on my SourceForge project approval) and my hope is that other developers will jump in and add functionality and fix bugs and do things i never thought of.
Also, Ogre likes good cards (ATI, NVIDIA). Ogre doesn't like dumb cards (Intel GMA aka the macbook card). he will do his best, but don't expect miracles.
Real-time rendering is voodoo, and dealing with different card vendors and drivers and vram and all this stuff tends to be a headache. so much patience is required.
This project was made possible with the help of several people.
Carl Skelton - director of the IDMI program at Brooklyn Polytechnic University.
Wes Smith (aka the advisor)
Josh Goldberg (aka the instructor)
Anton Marini (aka vade)
Josh's Advanced Interactive class: Marius, Dan, Jeremy, Meng, David
Sen-I (aka the wife)
Lastly, the great Ogre3D project, it's creator Steve Streeting, and the entire Ogre community.