Alright guys, now it's time to show you something really cool. I don't have a demo, but instead I have a screen shot and some real RGSS code to do with it.
And here is the magical RGSS code that does it. (Normally, you would put this in a scene, but you guys know how to make scenes so I didn't bother)
#First, let's move the 2D window out of the way:
DF_GameWindow.set_dimensions(0,0,0,0)
#next, let's create out device. The parameters are:
#Driver type, screen size (in an array), bits per pixel, and fullscreen
#This device is the central point of the 3D engine. Absolutely everything
#can be accessed through this device.
device = DF3DDevice.new(Video::EDT_DIRECT3D9, [800,600], 32, false)
#Now, let's get our scene manager. The scene manager does stuff like adding nodes
#and cameras
smgr = device.scene_manager
#Now, let's get our driver. The driver handles actually rendering.
driver = device.video_driver
#Let's get our mesh! (Note that you should probably add error handling here.
#smgr.get_mesh will return nil if it can't find the file so make sure you
#always check that the mesh was actually created. I didn't do any error handling
#but a simple check for nil would suffice)
mesh = smgr.get_mesh("sydney.md2")
#Let's create an animated scene node from the mesh. Again, normally you
#want to check for errors.
node = smgr.add_animated_mesh_scene_node(mesh)
#now, let's add a camera to the scene node! Camera are how you view everything
#in the scene. Note that it is possible to have more than one camera and
#you can switch between them, or even have them render to different parts
#of the screen.
camera = smgr.add_camera_scene_node
#move our camera, since both the camera and scene node are at the same, default
#position right now. (Which is (0,0,0)) Note that the parameters here are x, y, z.
#when your camera is at (0,0,0) and has no rotation, x is sideways, y is up,
#and z is forwards/backwards
camera.set_position(100,100,100)
#Rememeber how I said that the default position is 0,0,0? Well, since we never moved
#our node, it is at 0,0,0 right now. So, Let's tell the camera to look there:
camera.set_target(0,0,0)
lasttime = Time.now
while device.run #check if our device is still running
#begin rendering the scene. I will not explain what these parameters are yet
#it's not important right now, and it's kind of complicated XD
driver.begin_scene(true, true, [255, 160, 160, 255])
smgr.draw_all #draw all of the scene nodes
driver.end_scene #finish rendering the scene
#this junk is just so Graphics doesn't whine.
time = Time.now
if time - lasttime > 5
Graphics.update
end
end
#Now, alway always always remember to drop your device when you are done.
#The device is something you should only drop at the end of your game, after
#the device no longer runs.
device.drop