Ogre3D for BlitzMax
BlitzMax Forums/BlitzMax Programming/Ogre3D for BlitzMax
| ||
![]() >> Demo 0.48 with Bullet and Shadows << the changelog 05-19-2010 // v0.48 changed : Overlay methods does not longer need the parameter "ogre:TOgre" added : TOgre.SetShadowTechnique(technique:Int) added : TMesh.CastShadows(enable:Byte) added : TOverlayImage added : TOverlayImage.showByMaterial(material:String) removed : TBullet.setTimeStep() ' is now be calculated internally removed : TBullet.setFixedTimeStep() ' is now be calculated internally 05-18-2010 // v0.47 added : TPhysicsObject added : TPhysicsObject.getCollisionShapePtr:Byte Ptr() added : TPhysicsObject.getRigidBodyPtr:Byte Ptr() added : TPhysicsObject.getMotionStatePtr:Byte Ptr() added : TOgreObject._hasPhysics:TPhysicsObject added : TMesh.isPhysicsObject:Byte() added : TMesh.UpdateTransformation() added : TMesh.Width:Float() added : TMesh.Height:Float() added : TMesh.Depth:Float() added : TMesh.Radius:Float() added : Vec3:TVec3(x:Float, y:Float, z:Float) added : Quaternion:TQuaternion(x:Float, y:Float, z:Float, w:Float) added : TMesh.getScaleX:Float() added : TMesh.getScaleY:Float() added : TMesh.getScaleZ:Float() added : TBullet.CreateDynamic(mesh:TMesh, colShapeType:Int, mass:Float, centerOfMass:TVec3) fixed : TMesh.Width(), TMesh.Height() and TMesh.Depth() now return the correct scaling 05-17-2010 // v0.46 changed : redesign of the class-tree added : TVec3 added : TVec3.Set:TVec3(x:Float, y:Float, z:Float) added : TQuaternion added : TQuaternion.Set(x:Float, y:Float, z:Float, w:Float) added : TCollisionShape added : TCollisionShape.CreatePlane(planeNormal:TVec3, scalar:Float) added : TCollisionShape.CreateBox(halfExtends:TVec3) added : TCollisionShape.CreateSphere(radius:Float) added : TCollisionShape.CreateCylinder(halfExtends:TVec3) added : TCollisionShape.CreateCapsule(radius:Float, height:Float) added : TCollisionShape.CreateCone(radius:Float, height:Float) added : TCollisionShape.Destroy() added : TBullet added : TBullet.Init(gravity:TVec3) added : TBullet.Destroy() added : TBullet.CreatePlane:TCollisionShape(planeNormal:TVec3, scalar:Float) added : TBullet.CreateBox:TCollisionShape(halfExtends:TVec3) added : TBullet.CreateSphere:TCollisionShape(radius:Float) added : TBullet.CreateCylinder:TCollisionShape(halfExtends:TVec3) added : TBullet.CreateCapsule:TCollisionShape(radius:Float, height:Float) added : TBullet.CreateCone:TCollisionShape(radius:Float, height:Float) added : TOgre.InitBulletPhysics:TBullet(gravity:TVec3) added : TOgre.DestroyBulletPhysics(bullet:TBullet) added : TMotionState added : TMotionState.Create(q:TQuaternion, v:TVec3) added : TMotionState.Destroy() added : TBullet.CreateMotionState:TMotionState(q:TQuaternion, v:TVec3) added : TRigidBody added : TRigidBody.Create(shape:TCollisionShape, motionState:TMotionState, mass:Float, centerOfMass:TVec3) added : TRigidBody.Destroy() added : TBullet.CreateDefaultMotionState:TMotionState(q:TQuaternion, v:TVec3) added : TBullet.CreateRigidBody:TRigidBody(shape:TCollisionShape, motionstate:TMotionState, mass:Float, centerOfMass:TVec3) added : TRigidBody.add() added : TRigidBody.remove() added : TBullet.setTimeStep(timeStep:Float) added : TBullet.setMaxSubSteps(maxSubSteps:Int) added : TBullet.setFixedTimeStep(fixedTimeStep:Float) added : TOgre.UpdateWorld() added : TCompositor added : TCompositor.Create:TCompositor() added : HardwareBuffers added : TexturePixelFormats added : TTexture added : TTexture.Create:TTexture(width:Int, Height:Int, texture_name:String, texture_type:Int, num_mips:Int, pixelformat:Int, use_as:Int) added : TTexture.Free() in this pakage is just the demo, module and source follow if the Blitz3D version is also on 0.48. |
| ||
Whoohoo! |
| ||
very good, very good |
| ||
How much of Blitz3D's command set are you planning to replicate? Also, what are the chances of cross platform modules? looks fantastic though :) Cheers Charlie |
| ||
does it have gamma commands? its a bit dark on my monitor |
| ||
Certainly looks very impressive. |
| ||
Would be sad if this was going to be Windows only. BlitzMax would miss a chance to go all "look we have a fancy cross-platform 3D engine now". :) Anyway, keep going. |
| ||
I wouldn't mind an engine only for Windows if it's in a complete state. I can't see myself completing one game for one OS... but of couse it would be great. Hopefully we can see some great games starting to be made now. [rant]People need to stop asking for 10 different 3D engines and start coding (this is not directed to any post in this topic).[/rant] There's plenty for Blitzmax. :) Progress is being made very quickly. Thank you for this great contribution, bruZard. |
| ||
Multi-platform is pretty important for me though, as a great deal of my customers use Mac and Linux. Plus, as both Ogre and Bullet are cross platform, and the source is being released, i guess it's possible :) Really looking forward to seeing what this becomes, it already looks like it's going to be a great module! Cheers Charlie |
| ||
Very fast and promising developmentt, well done. I was wondering, what are your intentions with it. Are you going to develop it to a full-blown regularly updated 3d engine? Is this going to be a commercial project? |
| ||
I try to take my whole English together to provide some answers... @slenkar: Yes, i implement methods to change gamma in the near future @jkrankie: Multiplatform is a far far away target. I think that i can do that for Linux. BlitzOgre3D is open source. If you think that you can create a MacOS port: Do it, I will soon publish all sources. @Grafos: my intention is to provide a real good 3D Engine for BlitzMAX, BlitzPlus and Blitz3D. This is not a commercial project ... as long it makes fun i do it. incidentally: in the german forums you can read the daily update (if you can ;) )... http://www.blitzforum.de/worklogs/226/ |
| ||
i will read the worklog then thanks |
| ||
This is great. I absolutely need a quality 3D engine for BlitzMax. Leadwerks is awesome but OpenGl only is a killer for some important projects that I have coming up. |
| ||
today i have uploaded version 0.49 (as demo, without sources) ... you will need 0.48 for this (just overwrite 0.48 with 0.49) the changelog: 05-20-2010 // v0.49 changed : clean up some things added : TCamera.getX:Float() added : TCamera.getY:Float() added : TCamera.getZ:Float() added : TCamera.getPitch:Float() added : TCamera.getYaw:Float() added : TCamera.getRoll:Float() added : TMesh.getPitch:Float() added : TMesh.getYaw:Float() added : TMesh.getRoll:Float() added : TLight.getX:Float() added : TLight.getY:Float() added : TLight.getZ:Float() added : TLight.getPitch:Float() added : TLight.getYaw:Float() added : TLight.getRoll:Float() added : TOgre.setFog(fogMode:Int, red:Float, green:Float, blue:Float, alpha:Float, expDensity:Float, linearStart:Float, linearEnd:Float) added : TOgre.showBoundingBoxes(enable:Byte) added : TOgreObject.getType:String() ![]() >> BlitzOgre3D 0.49 << have fun ... |
| ||
0.49.5 is available, you need 0.48 + 0.49 for this update. Changelog: 05-21-2010 // v0.49.5 added : TVec3.toC:Byte Ptr() added : TQuaternion.toC:Byte Ptr() added : TPanel.setMaterial(material:String) added : TPanel.Position(x:Float, y:Float) added : TPanel.Align(horizontalAlign:Int, verticalAlign:Int) added : Keycodes OKEY_W, OKEY_A, OKEY_S, OKEY_D added : TLight.setSpotAngles(innerAngle:Float, outerAngle:Float) added : TLight.setSpotFalloff(falloff:Float) added : TLight.setSpotRange(range:Float) added : TLight.lookAt(x:Float, y:Float, z:Float) removed : TOverlayImage ![]() >> Download BlitzOgre3D v0.49.5 Demo (ca. 235kb) << >> Download BlitzOgre3D v0.49.5 Win32 Module (ca. 870kb) << The Module includes the BMax Source, the C++ Source will be released later. |
| ||
bruzard, Thanks for your work on this. Would you be able to post the source for the demo scene? |
| ||
Awesome! Nice work. =] |
| ||
@wmaass: example.bmx: http://bo3d.sedm.de/downloads/example.bmx |
| ||
This is very nice work! |
| ||
Thanks bruZard! Just got back from a Rugby tournament, will sit down and play with this now. Keep up the great work. |
| ||
at the moment i wrap the original ogre3d functions ... stay tuned the example with the "direct wrapper": SuperStrict Framework sedm.bo3d Local r:Root = Root.Create() If r.showConfigDialog() Local win:RenderWindow = r.initialise(True, "BlitzOgre3D") Local scene:SceneManager = r.createSceneManager() Local res:ResourceGroupManager = New ResourceGroupManager Local cam:Camera = scene.createCamera() Local vport:Viewport = win.addViewPort(cam) Local inp:OIS = OIS.Init(win) vport.setBackgroundColour(0.3, 0.5, 0.9) vport.setCamera(cam) Local w:Int = vport.getActualWidth() Local h:Int = vport.getActualHeight() cam.setAspectRatio(w / h) cam.SetPosition(0.0, 0.0, 5.0) res.addResourceLocation("media", "FileSystem", "myFiles") res.initialiseResourceGroup("myFiles") Local box:Entity = scene.createEntity("", "box.mesh", "myFiles") Local rsn:SceneNode = scene.getRootSceneNode() Local cs:SceneNode = rsn.createChildSceneNode() cs.attachObject(box) Repeat r.messagePump() inp.captureKeyboard() inp.captureMouse() If inp.isKeyDown(KC_ESCAPE) Then Exit If inp.isMouseDown(MB_LEFT) Then Exit r.renderOneFrame() Forever r.Shutdown() End If End Now I respect the fact that BlitzOgre3D also can be ported to Linux and MacOS ;) |
| ||
Excellent! Cheers Charlie |
| ||
now you can get the source from GoogleCode SVN: http://code.google.com/p/bo3d/ |
| ||
So there's no high level API for Blitzmax yet? or have i missed something? Cheers Charlie |
| ||
the high level api is'nt ready yet. take a look at example_hlapi.bmax and /include/b3d/ |
| ||
Ok, thanks. i'll take a look :) Cheers Charlie |
| ||
Looks interesting, Bruzard. What is your opinion of Flow3D? |
| ||
i think Flow3D is really good, but ... ... it's closed source ... it's not free ... only for BlitzMax ... only for Windows BlitzOgre3D ... ... is open source (c/c++ sources too) ... is free ... is for Blitz3D, BlitzPlus and BlitzMax ... crossplatform (BMax only) |
| ||
today i've started the procedual API...Framework sedm.bo3d Graphics3D(800, 600) Local cam = createCamera() CameraClsColor(cam, 0.3, 0.4, 0.6) RenderWorld() Delay(1000) EndGraphics() End more details on google code --> http://code.google.com/p/bo3d |
| ||
Wow :) Really looking forward to the procedural stuff! Not because i couldn't write a game using plain ogre commands, but because It'll mean i can hopefully add Directx9 rendering to a MiniB3D project! Cheers Charlie |
| ||
step by step ... uh babiiiieeeee....Framework sedm.bo3d Graphics3D(800, 600) cam = createCamera() player = CreatePivot() CameraClsColor(cam, 0.3, 0.4, 0.6) CameraRange(cam, 0.1, 1000) EntityParent(cam, player) PositionEntity(player, 0.0, 0.0, -40.0) box = LoadMesh("media/box.mesh") ground = LoadMesh("media/ground.mesh") PositionEntity(ground, 0.0, -5.0, 0.0) Repeat mx = MouseXSpeed() my = MouseYSpeed() If KeyDown(KC_W) Then MoveEntity(player, 0.0, 0.0, 0.01) If KeyDown(KC_A) Then MoveEntity(player, -0.01, 0.0, 0.0) If KeyDown(KC_S) Then MoveEntity(player, 0.0, 0.0, -0.01) If KeyDown(KC_D) Then MoveEntity(player, 0.01, 0.0, 0.0) If MouseDown(2) TurnEntity(player, 0.0, -mx * 0.01, 0.0) TurnEntity(cam, -my * 0.01, 0.0, 0.0) EndIf RenderWorld() Until KeyDown(KC_ESCAPE) EndGraphics() End updates are available via http://code.google.com/p/bo3d/ |
| ||
Wow! Blitz3D... in Blitzmax... with a powerful up to date renderer and nice support for a wide range of hardware! It might just be what most of us have been wanting all along and never really got (Max3D, Flow3D, Ninfa3D), if it gets the support it deserves (frequent updates, proper documentation). |
| ||
..this is very interesting..I hope it will end up as some finished and supported/upgraded product...really nice so far..this will be first(?) renderer plugged in to BMax that goes on all platforms Bmax goes? great.. |
| ||
Wow! you got my attention to say the least! Good job man! |
| ||
Naughty, Gman's Irrlicht mod has done it for years. Hopefully this thing receives more attention from blitzers, though I wouldn't hold my breath - many spend ages talking about 3D engines yet don't use the ones that are available. It's almost like we are here to talk about them, instead of using them. |
| ||
Wouldn't it be better to think up a new name for this? (much more likely gain interest on the forum that way!) |
| ||
Wouldn't it be better to think up a new name for this? (much more likely gain interest on the forum that way!) Something like Bmx2Appleistoocontrollingipadrulesflashdoesntsuck3DThose seem the most popular topics of interest right now, lol. |
| ||
Gman's Irrlicht mod has done it for years. Hopefully this thing receives more attention from blitzers, though I wouldn't hold my breath - many spend ages talking about 3D engines yet don't use the ones that are available. It's almost like we are here to talk about them, instead of using them. It's not like that at all. See, it's one thing seeing a nice engine and another having proof that the development is fully committed to it. If you are serious about game development, you can't commit to an engine unless you know for sure the developer is here to stay. That is why we have all been crying for a 3d engine with the official blitz stamp. If you want to see what is like to commit to an unsupported engine, just check some of the recent comments on the Flow3d forum. This is also why both I and Naughty Alien spoke a supported upgraded product. |
| ||
Gman's Irrlicht mod has been available & constantly updated for more than four years. MiniB3D has been here for years as well. Both run on Win, Linux & Mac. So yeah, let's get excited when we see a mod that has been developed for, what, 1-2 months, so that we finally get a 3D engine for Win+Lin+Mac. I have nothing against this Ogre module. On the contrary I really hope it will get running good and live long & prosper. I'm just cynical about the user base because of the track record. Flow3D is a good example of that track record and there are countless others like TV3D mod. There are probably more 3D mods for BlitzMax than there are Max users of the 3D mods. |
| ||
(Doubleclick) |
| ||
There are probably more 3D mods for BlitzMax than there are Max users of the 3D mods. I can believe that, funnily enough. |
| ||
what a discussion, no matter .... today i have tried to remove OIS from bo3d, because you can now takeover the BlitzMax Graphics() Window and use BlitzMax Input. Take a look at Ogre3D in a MaxGUI Canvas: ![]() OIS (Open Input System) is now implemented as an own Module Example: SuperStrict Import sedm.OIS Import brl.d3d7max2d Graphics 800, 600 Local hwnd:Int = GetForegroundWindow() Local inp:TOIS = TOIS.Init(hwnd, GraphicsWidth(), GraphicsHeight()) SetColor(255, 255, 255) Repeat Cls inp.Update() Local m:String = "" m:+ "MouseX(): " + String(inp.MouseX()) + " " m:+ "MouseY(): " + String(inp.MouseY()) + " " m:+ "MouseXSpeed(): " + String(inp.MouseXSpeed()) + " " m:+ "MouseYSpeed(): " + String(inp.MouseYSpeed()) DrawText(m, 10, 10) Flip() Until inp.KeyDown(1) End |
| ||
Gman's Irrlicht mod has been available & constantly updated for more than four years. MiniB3D has been here for years as well. Both run on Win, Linux & Mac. This is great and the Blitz community should be thankful to Gman for his time and effort. Unfortunately, there is no guarantee that he will continue for the next four years, so I'd consider kind of risky to start something big using the said wrapper. MiniB3D has been here for years as well. Both run on Win, Linux & Mac. MiniB3D is a fine example of what I'm trying to say. I hear people complain about its performance, lack of features and other issues, and as far as I know its development has pretty much stopped. A very promising extended version got our hopes up and then stopped as well. I don't want to sound ungrateful, I do appreciate the effort of all the people involved on all the engines and wrappers, but if I had chosen miniB3d extended, Ninfa 3d or Flow3d for a big project, I'd have to migrate the whole thing to another engine now. I could easily see myself committing to Leadwerks Engine, as Josh has proven he is dedicated, works full-time on it and it's his bread and butter, but unfortunately my target group includes casual gamers with underpowered lappies, and LE doesn't play well with those. If one of the wrappers\engines got the official endorsement and support of BRL, it would give the piece of mind required to start a serious project on it. |
| ||
Nice Bruzard that's definately something i need to do as well. will those be set as separate modules in your next SVN update? |
| ||
OIS is already a part of the BlitzOgre3D SVN. |
| ||
yea i noticed that, i was having trouble getting 2d operations to work though when using blitz's native graphics. probably because i am not using the max2d driver. i was just wondering if you had the OIS split into a separate module since i last checked it out on the svn. |
| ||
does ogre have a 2d renderer? or are you using max2d over it? |
| ||
for the hell of it i tried putting max 2d commands over it since it was using the same graphics context. if i flip i get 2d but lose the 3d. so i was looking to see if there was a way to render max2d on top of the ogre render without losing the rendering. |
| ||
If you're using openGL you *might* be able to use the beginmax2d() and endmax2d() functions from MiniB3D to mix ogre and max 2d. Cheers Charlie |
| ||
OH LORDY! well i may wait to see what bruzard is doing, from his canvas demo up there it looks like he was attempting to get max2d commands to show... so i don't wanna start writing something if he already has something in the works. |
| ||
there is no guarantee that he will continue for the next four years, so I'd consider kind of risky to start something big using the said wrapper. I'm not sure if Mark will keep his support for BMax for another 4 years either, seriously. |
| ||
I'm not sure if Mark will keep his support for BMax for another 4 years either, seriously. And since it's a one guy team support always comes expectedly scarse. It's nonsense to be afraid of starting using a DVD player because in the future there will be no repairers for the device. If it's not broken use it. Many of those who complain are yet to show something... even a demo to prove that their "masterpieces" cannot be built with the current tools available. It's a subject for another thread. Sorry for the rant. And bruZard, keep up the excellent work. You have some skills, man. :) |
| ||
I don't want to sound ungrateful, I do appreciate the effort of all the people involved on all the engines and wrappers, Being ungrateful is not what I am talking about. I am talking about people just not using the mods that are out there. I am sorry for this off-topic discussion, but I personally believe that the single biggest weakness of BlitzMax community is the poor conversion ratio between mods and the use of those mods. There are great mods, but the feeling I get is that there are only few users. I don't know how it could be changed. Perhaps if this site would give users a blog style space where to post tutorials with linked images and vids, the mods might receive more use. but if I had chosen miniB3d extended, Ninfa 3d or Flow3d for a big project, I'd have to migrate the whole thing to another engine now. It goes in circles. If the future of a project seems uncertain, there are no users. If there are no users, most projects die. I really hope this project survives. |
| ||
I'm pretty happy with MiniB3d, and i've used it in 2 games now. I think that there's more scope for modules and wrappers to succeed IF they're open source like MiniB3D, Brucey's various things and hopefully this too :) Cheers Charlie |
| ||
my biggest issue with minib3d is that It forces me and anyone willing to add content to use Ult.unwrap just to get the bones to load properly. I have never been able to get minib3d weighted meshes to load bones properly using the normal pipeline exporters. usually they are scrambled pretty badly. Outside of that it is a good engine. |
| ||
Ah, well none of my meshes are animated, so i haven't encountered that problem! I can imagine it's a bit of a show stopper. Cheers Charlie |
| ||
yes to some degree, and frankly as far as the above discussion goes, ultimately the best 3d engine to use is the one you make yourself. But obviously not many people want to spend the time to build one (I myself included) IMO when it comes to choosing an engine i typically look at what my project needs, then i look over the engines. Even if the production has stopped more than likely it should stay viable for a longtime unless changes to DX or OpenGL become so depreciated on new cards that it wont work, however i don't see that likely to happen. Your best bet is to choose what engine has what you need and is stable. That is my best advice on the subject. |
| ||
the SVN gives you now three modules. sedm.bo3d (lowlevel api), sedm.blitz3dogre (highlevel api) and sedm.ois (open input system). I've added some functions and optimized some things. you can read more details in the svn. |
| ||
An unsupported engine might include show-stopping bugs (which you may find in the end), lack a critical future (which you may find in the end) and generally is prone to many nasty surprises, hence why most of us are reluctant to commit to something we are uncertain of its future. I do hope this one take off, it's one of the most exciting projects I've seen in the Blitz world in a long time. |
| ||
Awesome bruZard. @Grafos, yeah like when i bought b3dsdk :( i lurned meh lessens fo sho yo. |
| ||
The Day of Light... today i've reorganized the svn tree, so you get sedm.mod -> bo3d.mod, blitz3dogre.mod, ois.mod, bo3d_source i've round 40 Methods added to the class "Light" and a few functions added to the procedual wrapper. Ogre3D is a really fat monster and i think it took many of time to port it completly, but i am stronger than this monster! ;) r21 + r22: changed: reorganize the svn trunk added: C-Source added: Light.setDiffuseColour(red:Float, green:Float, blue:Float) added: Light.setSpecularColour(red:Float, green:Float, blue:Float) added: (procedual) LightColor(light:Int, red:Float, green:Float, blue:Float) added: (procedual) LightSpecColor(light:Int, red:Float, green:Float, blue:Float) added: axisalignedbox.bmx added: Type AxisAlignedBox added: Light.getDiffuseColour:ColourValue() added: Light.getSpecularColour:ColourValue() added: Light.setAttenuation(range:Float, constant:Float, linear:Float, quadratic:Float) added: Light.getAttenuationRange:Float() added: Light.getAttenuationQuadric:Float() added: Light.getAttenuationLinear:Float() added: Light.getAttenuationConstant:Float() added: Light.getPosition:Vector3() added: Light.setDirection(x:Float, y:Float, z:Float) added: Light.getDirection:Vector3() added: Light.setSpotlightRange(innerAngle:Float, outerAngle:Float, falloff:Float) added: Light.setSpotlightInnerAngle(angle:Float) added: Light.setSpotlightOuterAngle(angle:Float) added: Light.setSpotlightFalloff(falloff:Float) added: Light.getSpotlightInnerAngle:Float() added: Light.getSpotlightOuterAngle:Float() added: Light.getSpotlightFalloff:Float() added: Light.setPowerScale(power:Float) added: Light.getPowerScale:Float() added: Light.getMovableType:String() added: Light.setVisible(visible:Byte) added: Light.setShadowFarDistance(distance:Float) added: Light.setShadowFarClipDistance(farClip:Float) added: Light.resetShadowFarDistance() added: Light.setShadowNearClipDistance(nearClip:Float) added: Light.getShadowFarDistance:Float() added: Light.getShadowNearClipDistance:Float() added: Light.getShadowFarClipDistance:Float() added: Light.getName:String() added: Light.getParentNode:SceneNode() added: Light.getParentSceneNode:SceneNode() added: Camera.getPosition:Vector3() added: (procedual) LightRange(light:Int, range:Float) added: (procedual) LightConeAngles(light:Int, innerAngler:Float, outerAngle:Float) added: (procedual) EntityX:Float(entity:Int) added: (procedual) EntityY:Float(entity:Int) added: (procedual) EntityZ:Float(entity:Int) added: (procedual) PointEntity(entity:int, target:Int) |
| ||
you gain lots of experience points for defeating this monster |
| ||
..i like idea to see Ogre nailed on to Bmax..is this going to work on Mac/Linux too? |
| ||
May the force be with you bruzard. yea i saw the ogre api earlier today, my first reaction was "EGAD WHAT THE FUUUU" |
| ||
yea i saw the ogre api earlier today, my first reaction was "EGAD WHAT THE FUUUU" Narf! (sorry, couldn't resist) |
| ||
@Naughty Alien later it will be work on MacOS and Linux too... Today i've implemented Shadows and some other things, take a look on the SVN to read more about the changes. Now you can load load resources from Zip Archives... box = LoadMesh("media.zip/box.mesh") ... and simply create a skybox: LoadSkyBox("media.zip/SkyBox.material", 500) the second parameter describes the distance of the skybox from the camera. is your CameraRange = 100 and the skybox-distance is 500, you will never see the sky ;) another thing i've implemented is the access to the lowlevel api from the high level api. at the moment there is just the function "GetSceneManager()" available, but i'll implement this for all components of the Ogre3D API (GetRoot(), GetResourceGroupManager() etc.) For Example: with "GetSceneManager().setSkyBox()" you have full access to the Ogre3D SkyBox Method. ![]() stay a while an listen.... |
| ||
This is starting to look very nice. |
| ||
Revision 25![]() The red box is dyed by BrushColor(box2_mat, 255, 0, 0) Here's the complete Source for the Example Framework sedm.blitz3dogre Import brl.polledinput AppTitle = "BlitzOgre3D / Blitz3D-like API" Graphics3D(800, 600) AmbientLight(0.1, 0.1, 0.1) SetShadowTechnique() LoadSkyBox("media.zip/SkyBox.material") cam = createCamera() player = CreatePivot() CameraRange(cam, 0.1, 1000) EntityParent(cam, player) PositionEntity(player, 0.0, 10.0, -40.0) l = CreateLight(LT_POINT) PositionEntity(l, -100.0, 100.0, -100.0) box = LoadMesh("media.zip/box.mesh") ground = LoadMesh("media.zip/ground.mesh") PositionEntity(ground, 0.0, -5.0, 0.0) box2 = CopyEntity(box) PositionEntity(box2, -10.0, 0.0, 7.0) box_brush = CopyEntityBrush(box2) BrushColor(box_brush, 255, 0, 0) BrushShininess(box_brush, 1.0) PaintEntity(box2, box_brush) EntityShadows(ground, False) Repeat mx = MouseXSpeed() my = MouseYSpeed() If KeyDown(KEY_W) Then MoveEntity(player, 0.0, 0.0, 0.01) If KeyDown(KEY_A) Then MoveEntity(player, -0.01, 0.0, 0.0) If KeyDown(KEY_S) Then MoveEntity(player, 0.0, 0.0, -0.01) If KeyDown(KEY_D) Then MoveEntity(player, 0.01, 0.0, 0.0) If MouseDown(2) TurnEntity(player, 0.0, -mx * 0.01, 0.0) TurnEntity(cam, -my * 0.01, 0.0, 0.0) EndIf RenderWorld() Until KeyDown(KEY_ESCAPE) End the changlelog for r25: added : BaseObject.getFromHandle:BaseObject(hnd:Int) added : Entity.getFromHandle:Entity(hnd:Int) added : materialmanager.bmx added : Type Material added : Type MaterialManager added : Material.clone(newName:String, changeGroup:Byte, newGroup:String) added : Material.setDiffuse(r:Float, g:Float, b:Float, a:Float) added : Material.setShininess(shininess:Float) added : Entity.setMaterialName(matName:String, resGroup:String) added : Entity.getMaterial:Material(subEntity:Int) added : (procedual) GetEntityBrush:Int(entity:Int) added : (procedual) CopyEntityBrush:Int(entity:Int) added : (procedual) PaintEntity(entity:Int, brush:Int) added : (procedual) BrushColor(brush:Int, r:Float, g:Float, b:Float) added : (procedual) BrushShininess(brush:Int, shininess:Float) take a look at the svn repository to see all changes |
| ||
Hey BruZard, is there anyway to set Ogre3d to render to the Backbuffer? I noticed that when you render a frame it immediately gets pushed onto the front buffer. Or at least that is how it seems. I decided to run your example by removing the Backbuffer from the graphics call so that all operations went to the front buffer. I managed to get the Drawtext to show up but perhaps it could be more than just the buffer it is rendering to. |
| ||
Ok i got it, it is the frontbuffer that's the issue after changing it to GLMax2DDriver the 2d renderer seemed to work great but there is some flickering since it is not being double buffered. looks much better now ![]() |
| ||
i've less than 1% of the Ogre3D Engine ported. Step by step you can use more and more parts of the engine and have also access to various render targets. |
| ||
i've less than 1% of the Ogre3D Engine ported... Would you allow help from the community with the port, while you remain Project Leader/Code Maintainer? I ask this not because I'd like to help (I lack the knowledge to be useful in this process) but because this appears to be a project that can be of great usefulness to the BlitzMax community. I personally would very much enjoy seeing this wrapper mature and expand. It is BlitzMax's greatest setback that BRL has never officially endorsed or supported a 3rd party 3D Engine. Ogre certainly appears to be a strong contender for this role. |
| ||
Would you allow help from the community with the port, while you remain Project Leader/Code Maintainer? I ask this not because I'd like to help (I lack the knowledge to be useful in this process) but because this appears to be a project that can be of great usefulness to the BlitzMax community. I personally would very much enjoy seeing this wrapper mature and expand. It is BlitzMax's greatest setback that BRL has never officially endorsed or supported a 3rd party 3D Engine. Ogre certainly appears to be a strong contender for this role. +1 |
| ||
@Tachyon: the biggest problem in a team would be my bad english :-/ But the source is free, everyone can take it. |
| ||
new release available via SVN![]() Worklog for r26 and r27 added : Material.setAmbient(red:Float, green:Float, blue:Float) added : Material.setSpecular(red:Float, green:Float, blue:Float, alpha:Float) added : Material.setSelfIllumination(red:Float, green:Float, blue:Float) added : Material.setPointSize(ps:Float) added : Material.setReceiveShadows(enabled:Byte) added : Material.compile(autoManageTextureUnits:Byte) added : Material.setDepthCheckEnabled(enabled:Byte) added : Material.setDepthWriteEnabled(enabled:Byte) added : Material.setColourWriteEnabled(enabled:Byte) added : Material.setCullingMode(mode:Int) added : Material.setManualCullingMode(mode:Int) added : Material.setLightingEnabled(enable:Int) added : Material.setShadingMode(mode:Int) added : Material.setFog(overrideScene:Byte, mode:Int, colour:ColourValue, expDensity:Float, linearStart:Float, linearEnd:Float) added : Material.setDepthBias(constantBias:Float, slopeScaleBias:Float) added : Material.setTextureFiltering(filterType:Int) added : Material.setTextureAnisotropy(maxAniso:Int) added : Material.setSceneBlending(sbt:Int) added : ColourValue.WHITE:ColourValue() added : texture.bmx added : Type Texture added : technique.bmx added : Type Technique added : Material.getTechnique:Technique(index:Int) added : Material.isTransparent:Byte() added : Material.getReceiveShadows:Byte() added : Material.setTransparencyCastsShadows(enabled:Byte) added : Material.getTransparencyCastsShadows:Byte() added : Material.createTechnique:Technique() added : Material.getNumTechniques:Int() added : Material.removeTechnique(index:Int) added : Material.removeAllTechniques() added : Material.getSupportedTechnique:Technique(index:Int) added : Material.getNumSupportedTechniques:Int() added : Material.getUnsupportedTechniquesExplanation:String() added : Material.getNumLodLevels:Int(schemeIndex:Int) added : (procedual) SetShadowFarDistance(distance:Float) added : (procedual) BrushAlpha(brush:Int, alpha:Float) added : (procedual) BrushBlend(brush:Int, blend:Int) added : (procedual) BrushFX(brush:Int, flags:Int) added : (procedual) GetSurfaceBrush(entity:Int, surface:Int) added : (procedual) BrushName:String(brush:Int) added : (procedual) BrushFX-Flag: BFX_TRANSPARENCY_CASTS_SHADOWS:Int= 32 added : SEDM.Bullet.mod added : (bullet.mod) Type btDefaultCollisionConfiguration added : (bullet.mod) Type btCollisionDispatcher added : (bullet.mod) btDefaultCollisionConfiguration.new_btDefaultCollisionConfiguration() added : (bullet.mod) btCollisionDispatcher.Create:btCollisionDispatcher(defaultCollisionConfiguration:btDefaultCollisionConfiguration) fixed : Material.getName:String() fixed : (procedual) CreateLight() sets then specular color of the new light to 1.0, 1.0, 1.0 changed : (procedual) b3d_global.bmx: "_blitzogre3D._scenemanager." to "GetSceneManager()." changed : (procedual) Parameter "alpha" removed from BrushColor() documented : extra blendmodes for BrushBlend() |
| ||
Looking good. And only 1%?? That is a big sucker... |
| ||
yea i would imagine, i saw the API, makes Jmonkey engine seem like childs play. |
| ||
@wmaass: face the "big sucker": http://www.ogre3d.org/docs/api/html/ ;) |
| ||
TOO MUCH CODE!![]() |
| ||
just a small teaser for the next revision:![]() executable example: http://bo3d.sedm.de/downloads/bo3d_r28.zip |
| ||
I get an error trying to run this latest example: 09:14:33: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library plugins\Plugin_CgProgramManager. System Error: The specified module could not be found. in DynLib::load at ..\..\..\..\OgreMain\src\OgreDynLib.cpp (line 91) |
| ||
Looks great Bruzard. |
| ||
..error here too..but screen looks nice.. where i can actually download some usable stable mod for irrlicht?? |
| ||
http://www.gprogs.com/ GMan's Irrlicht mod is very complete. |
| ||
I downloaded it and it worked for me, My gfx card doesnt support shaders but the program still worked,(It was the same but with no blur) pretty cool. |
| ||
I've uploaded a patch, maybe this will help. http://bo3d.sedm.de/downloads/bo3d_r28_patch01.zip [EDIT] for cg errors also download this patch: http://bo3d.sedm.de/downloads/bo3d_r28_patch02.zip [/EDIT] |
| ||
Says "cg.dll" is missing. |
| ||
see my edit above |
| ||
i've killed my SVN Repository ... please wait. |
| ||
i am busy while try to get my svn back ... revision29 (dont believe in GoogleCode ;) ) is available as direct download: http://code.google.com/p/bo3d/downloads/detail?name=sedm.mod.zip&can=2&q=#makechanges |
| ||
svn is back ... |
| ||
Nice! Cool examples! I will test them as soon as I get back from a trip. :) *sends e-beer to bruZard* |
| ||
r33 is available ...![]() you can now control the shader parameter, but (for now) only at once. i work on dynamically control of the parameters per frame. the shader access for Blitz3D-API Users is actually a little bit complicated, but i work on a solution. the example source: Framework sedm.blitz3dogre Import brl.polledinput phys:TBullet = New TBullet phys.setGravity() AppTitle = "BlitzOgre3D / Blitz3D-like API" Graphics3D(800, 600) AmbientLight(0.1, 0.1, 0.1) SetShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE) SetShadowTextureSize(1024) setShadowFarDistance(100.0) LoadSkyBox("media.zip/SkyBox.material") cam = createCamera() ' Fullscreen FX "Bloom" ScreenFX(cam, "Bloom") mat = GetBrushByName("Ogre/Compositor/BloomBlend2") ' get the Fullscreen FX Brush tech = GetBrushTechnique(mat) ' get Brush Technique pss = GetBrushPass(tech) ' get then Technique Pass pars = GetPassPars(pss) ' get the GPU FragmentProgramm Parameters of this Pass SetBrushConstantF(pars, "BlurWeight", 2.0) ' set the Parameter "BlurWeight" to 2.0 (oh my god!) SetBrushConstantF(pars, "OriginalImageWeight", 1.0) ' set the Parameter "OriginalImageWeight" to 1.0 player = CreatePivot() CameraRange(cam, 0.1, 10000) EntityParent(cam, player) PositionEntity(player, 0.0, 10.0, -40.0) l = CreateLight() PositionEntity(l, 10.0, 100.0, 100.0) box = LoadMesh("media.zip/box.mesh") ground = LoadMesh("media.zip/ground.mesh") PositionEntity(ground, 0.0, -5.0, 0.0) box2 = CopyEntity(box) PositionEntity(box2, -10.0, 0.0, 7.0) EntityShadows(ground, False) Repeat mx = MouseXSpeed() my = MouseYSpeed() If KeyDown(KEY_W) Then MoveEntity(player, 0.0, 0.0, 0.1) If KeyDown(KEY_A) Then MoveEntity(player, -0.1, 0.0, 0.0) If KeyDown(KEY_S) Then MoveEntity(player, 0.0, 0.0, -0.1) If KeyDown(KEY_D) Then MoveEntity(player, 0.1, 0.0, 0.0) If MouseDown(2) TurnEntity(player, 0.0, -mx * 0.01, 0.0) TurnEntity(cam, -my * 0.01, 0.0, 0.0) EndIf RenderWorld() Until KeyDown(KEY_ESCAPE) phys = Null End Take a look at the new Function Graphics3DExt(). This Function allows you to put your Ogre3D Output to any Target. you can get the update via svn. |
| ||
GLEE!! p.s. the b3d api doesnt seem that complicated, if anything the original B3d should have contained these cool features. |
| ||
Hi bruzar ;) Just few words to tell you, congratulations ! I just hope that you push this project to the up ! Very good job. |
| ||
i downloaded the latest revision the blitz3d style code works but the other 2 dont, the zip reader is cool too |
| ||
thanks folks! ;) R34 is available. This release brings a new bullet wrapper (again) and with it more stability, speed and less memleaks ;) The lowlevel API Example has now a demo of bullet inside (press space). remind that the bullet wrapper is independ. there's no need to have bo3d to use this wrapper. it works with any engine you like. maybe you can also use this for 2D games. More infos about the changes you find in the svn once again: excuse my bad english ....... |
| ||
the only real english.. is bad english lol |
| ||
i've compiled a small example how to use bullet.mod in 2D. >> get it from here (1.4MB) << |
| ||
Weird this one crashes on everything. probably because this PC's video card is too old, i know for a fact it does not support GL 2.0 shaders |
| ||
i've updated the archive. The 2D Bullet Sample has nothing to do with Ogre3D. Its just a sample that SEDM.Bullet.mod can be used without any defined Engine. i think its crashed because you dont have the ms vc debug runtimes. i've put it now in the archive. |
| ||
nice 2d example could you put the source in the svn please? |
| ||
could you put the source in the svn please? done... |
| ||
thanks all i ahve to do is right click the folder select SVN update and BOOM the file is there EDIT- oh i recompiled and it said cant find TcollisionShape |
| ||
the High-Level Example doesnt work, i'll fix it soon. |
| ||
ok i edited out some lines to make it work , |
| ||
I've yet to participate in this thread so adding this: looks damn cool. Keep up the good work bruZard. |
| ||
does ogre have a command like entitypick? |
| ||
yes, picking is one thing on my "to do". |
| ||
k thx |
| ||
![]() Revision 36 is now online. I've updated the featured Download for all the Folks without SVN access: http://code.google.com/p/bo3d/downloads/list Changelog: added : (bullet) TBullet.userControlledBody(rigidBody:TRigidBody) added : (bullet) TRigidBody.userControlledBody() added : (bullet) TBullet.PitchRigidBody(body:TRigidBody, x:Float) added : (bullet) TBullet.YawRigidBody(body:TRigidBody, y:Float) added : (bullet) TBullet.RollRigidBody(body:TRigidBody, z:Float) added : (bullet) TRigidBody.pitch(x:Float) added : (bullet) TRigidBody.yaw(y:Float) added : (bullet) TRigidBody.roll(z:Float) added : Module sedm.std.mod added : (procedual) Type B3DEntity added : (procedual) UpdateWorld() added : Type RaySceneQuery added : SceneManager.createRayQuery:RayQuery(mask:Int) added : SceneManager.destroyQuery(rayquery:RaySceneQuery) added : RaySceneManager.Free(scm:SceneManager) added : Type Ray added : Ray.Create:Ray(origin:bVector3, direction:bVector3) added : RenderWindow.getAverageFPS:Float() added : RenderWindow.getBestFPS:Float() added : RenderWindow.getBestFrameTime:Float() added : RenderWindow.getLastFPS:Float() added : RenderWindow.getWorstFPS:Float() added : RenderWindow.getWorstFrameTime:Float() fixed : (bullet) TRigidBody.setPosition() fixed : (procedual) UpdateWorld() now makes his Job fixed : example.bmx fixed : example_Blitz3D-API.bmx changed : additional Parameter "playerControlled" in TRigidBody.Create() changed : Quaternion and Vector3 removed, bullet and bo3D use now sedm.std.mod changed : all procedual Entities are now present in B3DEntity changed : all procedual Entities are now added to TBlitz3D.entities:TMap btw.: i've fixed the example.bmx and the example_Blitz3D-API.bmx. Executables are included. have fun! |
| ||
looking good, did you create your own quat and vector classes? P.s. you might want to start a new thread :) EDIT- the blitz3dapi example crashes on 'loadskybox' |
| ||
i've updated to revision 40, please try the example again. |
| ||
revision 41 is online. This update brings you the framelistener and some bugfixes. |
| ||
This is really cool - makes me almost wanna start doing 3D again.. ;) Keep up the good job. |
| ||
Wow bruZard, the updates keep coming at a blazing fast speed. Thank you and well done once again! |
| ||
BruZard, how much percent have you converted so far? Damn Ogre for such an enormous API like that one. :D And keep up the good work. You deserve a dozen kegs of the nicest beer. |
| ||
Good work bruZard, will have a play with this in the next week or so. :) Ogre is a great 3D engine (just look at Torchlight). :) |
| ||
ok i deleted the sedm folder and checked it out with SVN again ...still getting the same skybox errors |
| ||
if you comment out these line the example works? Can you give me the ogre.log? |
| ||
in all the examples the log gets as far as: Parsing script Bloom2.material BTW does Ogre have a good 2d engine? and do you think this could be used to do blitz-style collision handling? http://www.ogre3d.org/forums/viewtopic.php?f=11&t=45267&start=125 |
| ||
i was able to perform max2d operations over the 3d render by removing the backbuffer from max2d. if there is a way i can set ogre3d to render directly to max's backbuffer then perhaps i could use max2d as the 2d engine. |
| ||
looking good :) |
| ||
@slenkar: your graphics chipset is not able to perform the shader, i've added a fallback technique to the material (rev46), can you try this update?. Max2D: i don't think that we need the ability to run max2d code over the ogre3d output. Ogre3d has a powerful 2D engine and these engine will be ported by me. There is no reason to "hack" the original modules. do you think this could be used to do blitz-style collision handling? yes, in the Blitz3D-API you can use collisions like in Blitz3D. For this i have began to wrap the Bullet Physics Engine (sedm.bullet.mod). |
| ||
Hi bruZard Nice work, it going great, I just wondered I use the MaxIDE communty edition and whenever I build a new version which I export from SVN, after it has successfully been build, I get a compile error prompt with no error message. Its a pain, just wondered if you knew what was bringing up that message. The same thing happens after you exit the examples as well Very strange |
| ||
hmm ... i use BLide for development, but i check this out. stay tuned. |
| ||
but i like to hax lol. i have seen some ogre2d demos, it looks nice. I guess if you plan on making a blitz3d_api version of the 2d portion that would be cool and make converting b3d games a lot easier. |
| ||
i still get the same error |
| ||
i still get the same error strange. i don't know what happend, but i think i can fix it ... soon. today i've been working on the Blitz3D version of the wrapper, stay tuned for the next BlitzMax Version release. |
| ||
the error lies in the material scripts, the only method at now is to delete the file "bloom2.material" in media.zip. |
| ||
ok, the error lies deeper. At the moment bo3D do not work with Intel Chipsets, but i work on this problem. |
| ||
ok thanks, |
| ||
Any news on this? Cheers Charlie |
| ||
Was wondering about this too? What's the latest? |
| ||
News? Well, i work on the Linux Version ;-) Stay tuned. |
| ||
What about a mac version? Is that on the cards? Cheers Charlie |
| ||
i have no mac, but it is possible |
| ||
linux version, cool, |
| ||
+1 for a Linux version |
| ||
..wait a minute...just curious, is it Win version done so Linux and Mac are in progress now, or?? |
| ||
no |
| ||
..soo..why entirely new OS for same thing unfinished on one what contain most of the things done..so far..i guess?? Or, im asking too much :) |
| ||
just to show it can be done probly |
| ||
..oh i see..i thought Flow proved that part already :)..but ok.. |
| ||
All this is looking really interesting bruZard! Like some I would like to know roughly how much of Ogre3D you plan to port or you think you already achieved ? If I understand correctly it's not a simple wrap of Ogre3D but a revamp with Blitz3D usability in mind ? Does many commands are changing that way ? |
| ||
@Naughty Alien: The secret is *taramtaramtaram* : i'am a Linux User and Windows runs in a VM ... and: there are three versions of "bo": BlitzMax(win32), Blitz3D and BlitzMax (linux). I can't complete a version without the other versions, all versions should be on the same level. @Armitage 1982 the Blitz3D Version is very abstract from original Ogre3D, the BlitzMax Version let you the choice: original Framework or abstract Blitz3D Framework. There are many differences to Ogre3D SDK because BlitzMax cannot handle all details of C++. But i think i've get a good way. excuse my bad english, i hope you can understand the crap i've wrote ;) |
| ||
Nice stuff, bruZard! Jason |
| ||
Let me know if I can help. I thoroughly beleive there should be a free open source Ogre module, and I have to say, I'm impressed with what you've done so far. |
| ||
Heh yeah. It's a real shame that Lina never released Flow3D as an open source project for the community to build from. After 2+ years of work it looks like she can't be bothered anymore. Nice to see someone is trying to bring Ogre back to the blitz community. |
| ||
Hmmm. No more updates here. Last update to the Google Code site was nearly a month ago. I knew it was too good to be true. Back to MiniB3D and GMan's Irrlicht mod. |
| ||
Hi, I hope it is in bruZards interrest :) bruZard is currently working on the linux part which will have also some improvements in the windows version. He is still working on it, so no time to worry. |
| ||
thats right, a new version is coming soon. |
| ||
Give him time, it's not an easy task he's undertaken. |
| ||
This looks great. However, with my limited experience of anything outside of the Blitzmax environment, how do I 'get started' with this? Have downloaded 'sedm.mod.zip' from the Ogre3D website. Apologies for the noobageness of the question. ;) |
| ||
the next "crank english language" entry in this thread :D --- the Linux Version works so far. Now i must port the modules ois.mod and bullet.mod to linux. I've implemented the "Blitz3D like" Syntax directly in the wrapper because it is even faster than build that in BlitzMax. I try to release a new version in the next few days. |
| ||
Excellent! I can't wait to try it out! Cheers Charlie |
| ||
I starred this project on Google. In return, I would like an English translation. |
| ||
Mac users can't wait too. ^__^ |
| ||
@jkrankie: just a few days more please ;) @Demiurge Designs as you can see: my english is very bad ... try google translator ;) @Corum: i think that Mac Users can build the Linux Source (C++) without Modifikations. i try to make a tutorial how to use Ogre3D and bo3D with Code::Blocks. |
| ||
could i help? I dont have C++ skills but I could do some of the simple work |
| ||
what kind of simple work? :D there are two parts: 1. wrap the Ogre3D Methods in C-Style Function 2. wrap the C-Style Functions in BMax. i dont know what you are think is simplier ;) |
| ||
im looking at what you have done already to see if i can learn whats going on when you use Extern "win32" does that make blitz search DLL's for the functions? |
| ||
no, it tells BMax that the following functions are defined in the imported lib. |
| ||
which part of the code imports the lib? (the lib is the DLL?) |
| ||
slenkar: Since bruZard is busting his bottom working on this for us, perhaps you could just let him work in peace and not try and shoehorn your way onto the development team. With the questions you are asking, it is obvious you would not be of help to him and the time he is wasting answering silly questions is time he could be spending on actual development. |
| ||
ok mr. rude ![]() youre acting like im causing trouble when i asked to help If he spends 40 minutes training me and I work on the project for 20 hours he saves more than 19 hours, cant you think that far? duh |
| ||
The .lib imports no code, there are just definitions about the functions in the .dll (win32) or .so (linux/macos). |
| ||
ok As soon as I understand the workflow I can get to work which ogre3d function do you think i should work on? what is the first step i should take to get it working? |
| ||
you cannot help, sorry. I'll try to explain you my workflow. 1. I search equivalent Methods in the Ogre3D Api (Meshes -> Ogre::Entity, Lights -> Ogre::Light etc.) 2. I create a new Function in the Glue-Code 3. I import the new Function in the Extern Block 4. I wrap the Function in the right BMax Include I not do prepare dozend functions and implement these functions later in BMax, i write a C Function and then i implement the function in the Wrapper. For help in this project a developer must can read C++ API Docs, he must wrap this down to C Style Functions and he must implement this in BlitzMax. This is no Job for a Newbie. Sorry. |
| ||
bo3D is now ported to Linux![]() now i try to update the svn (it is a hard job because i have copied the .svn from Win32). |
| ||
Thumbs up for bo3D and its coder! :) |
| ||
good job |
| ||
This Looks fantastic! Anywere to get a demo or something? is it open source? |
| ||
Oh what a fine piece of work you are doing.. |
| ||
Linux Pre-Release: You need the libs from the following package in /usr/local/lib www.colorflow.de/pub/bo3d/bo3D.linux.libs.tar.gz and the mod in /BlitzMax/mod www.colorflow.de/pub/bo3d/sedm.mod.tar.gz |