Ogre3D for BlitzMax

BlitzMax Forums/BlitzMax Programming/Ogre3D for BlitzMax

bruZard(Posted 2010) [#1]


>> 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.


wmaass(Posted 2010) [#2]
Whoohoo!


slenkar(Posted 2010) [#3]
very good, very good


jkrankie(Posted 2010) [#4]
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


slenkar(Posted 2010) [#5]
does it have gamma commands? its a bit dark on my monitor


Blitzplotter(Posted 2010) [#6]
Certainly looks very impressive.


ProfJake(Posted 2010) [#7]
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.


byo(Posted 2010) [#8]
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.


jkrankie(Posted 2010) [#9]
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


Grafos(Posted 2010) [#10]
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?


bruZard(Posted 2010) [#11]
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/


slenkar(Posted 2010) [#12]
i will read the worklog then thanks


wmaass(Posted 2010) [#13]
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.


bruZard(Posted 2010) [#14]
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 ...


bruZard(Posted 2010) [#15]
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.


wmaass(Posted 2010) [#16]
bruzard,

Thanks for your work on this. Would you be able to post the source for the demo scene?


AndrewT(Posted 2010) [#17]
Awesome! Nice work. =]


bruZard(Posted 2010) [#18]
@wmaass:

example.bmx: http://bo3d.sedm.de/downloads/example.bmx


GaryV(Posted 2010) [#19]
This is very nice work!


wmaass(Posted 2010) [#20]
Thanks bruZard! Just got back from a Rugby tournament, will sit down and play with this now. Keep up the great work.


bruZard(Posted 2010) [#21]
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 ;)


jkrankie(Posted 2010) [#22]
Excellent!

Cheers
Charlie


bruZard(Posted 2010) [#23]
now you can get the source from GoogleCode SVN: http://code.google.com/p/bo3d/


jkrankie(Posted 2010) [#24]
So there's no high level API for Blitzmax yet? or have i missed something?

Cheers
Charlie


bruZard(Posted 2010) [#25]
the high level api is'nt ready yet. take a look at example_hlapi.bmax and /include/b3d/


jkrankie(Posted 2010) [#26]
Ok, thanks. i'll take a look :)

Cheers
Charlie


markcw(Posted 2010) [#27]
Looks interesting, Bruzard. What is your opinion of Flow3D?


bruZard(Posted 2010) [#28]
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)


bruZard(Posted 2010) [#29]
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


jkrankie(Posted 2010) [#30]
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


bruZard(Posted 2010) [#31]
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/


Grafos(Posted 2010) [#32]
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).


Naughty Alien(Posted 2010) [#33]
..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..


Nennig(Posted 2010) [#34]
Wow! you got my attention to say the least! Good job man!


Mr. Write Errors Man(Posted 2010) [#35]
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.


Brucey(Posted 2010) [#36]
Wouldn't it be better to think up a new name for this? (much more likely gain interest on the forum that way!)


GaryV(Posted 2010) [#37]
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 Bmx2Appleistoocontrollingipadrulesflashdoesntsuck3D

Those seem the most popular topics of interest right now, lol.


Grafos(Posted 2010) [#38]
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.


Mr. Write Errors Man(Posted 2010) [#39]
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.


Mr. Write Errors Man(Posted 2010) [#40]
(Doubleclick)


Brucey(Posted 2010) [#41]
There are probably more 3D mods for BlitzMax than there are Max users of the 3D mods.

I can believe that, funnily enough.


bruZard(Posted 2010) [#42]
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



Grafos(Posted 2010) [#43]
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.


Leon Drake(Posted 2010) [#44]
Nice Bruzard that's definately something i need to do as well.

will those be set as separate modules in your next SVN update?


bruZard(Posted 2010) [#45]
OIS is already a part of the BlitzOgre3D SVN.


Leon Drake(Posted 2010) [#46]
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.


slenkar(Posted 2010) [#47]
does ogre have a 2d renderer?
or are you using max2d over it?


Leon Drake(Posted 2010) [#48]
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.


jkrankie(Posted 2010) [#49]
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


Leon Drake(Posted 2010) [#50]
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.


Tommo(Posted 2010) [#51]
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.


byo(Posted 2010) [#52]
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. :)


Mr. Write Errors Man(Posted 2010) [#53]
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.


jkrankie(Posted 2010) [#54]
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


Leon Drake(Posted 2010) [#55]
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.


jkrankie(Posted 2010) [#56]
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


Leon Drake(Posted 2010) [#57]
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.


bruZard(Posted 2010) [#58]
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.


Grafos(Posted 2010) [#59]
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.


Leon Drake(Posted 2010) [#60]
Awesome bruZard.

@Grafos, yeah like when i bought b3dsdk :( i lurned meh lessens fo sho yo.


bruZard(Posted 2010) [#61]
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) 



slenkar(Posted 2010) [#62]
you gain lots of experience points for defeating this monster


Naughty Alien(Posted 2010) [#63]
..i like idea to see Ogre nailed on to Bmax..is this going to work on Mac/Linux too?


Leon Drake(Posted 2010) [#64]
May the force be with you bruzard.


yea i saw the ogre api earlier today, my first reaction was "EGAD WHAT THE FUUUU"


Grafos(Posted 2010) [#65]
yea i saw the ogre api earlier today, my first reaction was "EGAD WHAT THE FUUUU"

Narf!
(sorry, couldn't resist)


bruZard(Posted 2010) [#66]
@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....


Tachyon(Posted 2010) [#67]
This is starting to look very nice.


bruZard(Posted 2010) [#68]
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


Leon Drake(Posted 2010) [#69]
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.


Leon Drake(Posted 2010) [#70]
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




bruZard(Posted 2010) [#71]
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.


Tachyon(Posted 2010) [#72]
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.


Grafos(Posted 2010) [#73]
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


bruZard(Posted 2010) [#74]
@Tachyon: the biggest problem in a team would be my bad english :-/ But the source is free, everyone can take it.


bruZard(Posted 2010) [#75]
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()



wmaass(Posted 2010) [#76]
Looking good. And only 1%?? That is a big sucker...


Leon Drake(Posted 2010) [#77]
yea i would imagine, i saw the API, makes Jmonkey engine seem like childs play.


bruZard(Posted 2010) [#78]
@wmaass: face the "big sucker": http://www.ogre3d.org/docs/api/html/ ;)


Leon Drake(Posted 2010) [#79]
TOO MUCH CODE!




bruZard(Posted 2010) [#80]
just a small teaser for the next revision:



executable example: http://bo3d.sedm.de/downloads/bo3d_r28.zip


Tachyon(Posted 2010) [#81]
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)


wmaass(Posted 2010) [#82]
Looks great Bruzard.


Naughty Alien(Posted 2010) [#83]
..error here too..but screen looks nice..

where i can actually download some usable stable mod for irrlicht??


Tachyon(Posted 2010) [#84]
http://www.gprogs.com/

GMan's Irrlicht mod is very complete.


slenkar(Posted 2010) [#85]
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.


bruZard(Posted 2010) [#86]
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]


Tachyon(Posted 2010) [#87]
Says "cg.dll" is missing.


bruZard(Posted 2010) [#88]
see my edit above


bruZard(Posted 2010) [#89]
i've killed my SVN Repository ... please wait.


bruZard(Posted 2010) [#90]
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


bruZard(Posted 2010) [#91]
svn is back ...


byo(Posted 2010) [#92]
Nice! Cool examples!
I will test them as soon as I get back from a trip. :)

*sends e-beer to bruZard*


bruZard(Posted 2010) [#93]
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.


Leon Drake(Posted 2010) [#94]
GLEE!!

p.s. the b3d api doesnt seem that complicated, if anything the original B3d should have contained these cool features.


Filax(Posted 2010) [#95]
Hi bruzar ;)

Just few words to tell you, congratulations ! I just hope that you push this project to the up ! Very good job.


slenkar(Posted 2010) [#96]
i downloaded the latest revision the blitz3d style code works but the other 2 dont,
the zip reader is cool too


bruZard(Posted 2010) [#97]
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 .......


Leon Drake(Posted 2010) [#98]
the only real english.. is bad english lol


bruZard(Posted 2010) [#99]
i've compiled a small example how to use bullet.mod in 2D.

>> get it from here (1.4MB) <<


Leon Drake(Posted 2010) [#100]
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


bruZard(Posted 2010) [#101]
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.


slenkar(Posted 2010) [#102]
nice 2d example
could you put the source in the svn please?


bruZard(Posted 2010) [#103]
could you put the source in the svn please?


done...


slenkar(Posted 2010) [#104]
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


bruZard(Posted 2010) [#105]
the High-Level Example doesnt work, i'll fix it soon.


slenkar(Posted 2010) [#106]
ok i edited out some lines to make it work ,


gameproducer(Posted 2010) [#107]
I've yet to participate in this thread so adding this:

looks damn cool. Keep up the good work bruZard.


slenkar(Posted 2010) [#108]
does ogre have a command like entitypick?


bruZard(Posted 2010) [#109]
yes, picking is one thing on my "to do".


slenkar(Posted 2010) [#110]
k thx


bruZard(Posted 2010) [#111]


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!


slenkar(Posted 2010) [#112]
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'


bruZard(Posted 2010) [#113]
i've updated to revision 40, please try the example again.


bruZard(Posted 2010) [#114]
revision 41 is online. This update brings you the framelistener and some bugfixes.


gameproducer(Posted 2010) [#115]
This is really cool - makes me almost wanna start doing 3D again.. ;)

Keep up the good job.


Grafos(Posted 2010) [#116]
Wow bruZard, the updates keep coming at a blazing fast speed. Thank you and well done once again!


byo(Posted 2010) [#117]
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.


Muttley(Posted 2010) [#118]
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). :)


slenkar(Posted 2010) [#119]
ok i deleted the sedm folder and checked it out with SVN again ...still getting the same skybox errors


bruZard(Posted 2010) [#120]
if you comment out these line the example works? Can you give me the ogre.log?


slenkar(Posted 2010) [#121]
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


Leon Drake(Posted 2010) [#122]
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.


*(Posted 2010) [#123]
looking good :)


bruZard(Posted 2010) [#124]
@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).


nrasool(Posted 2010) [#125]
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


bruZard(Posted 2010) [#126]
hmm ... i use BLide for development, but i check this out. stay tuned.


Leon Drake(Posted 2010) [#127]
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.


slenkar(Posted 2010) [#128]
i still get the same error


bruZard(Posted 2010) [#129]
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.


bruZard(Posted 2010) [#130]
the error lies in the material scripts, the only method at now is to delete the file "bloom2.material" in media.zip.


bruZard(Posted 2010) [#131]
ok, the error lies deeper. At the moment bo3D do not work with Intel Chipsets, but i work on this problem.


slenkar(Posted 2010) [#132]
ok thanks,


jkrankie(Posted 2010) [#133]
Any news on this?

Cheers
Charlie


Chroma(Posted 2010) [#134]
Was wondering about this too? What's the latest?


bruZard(Posted 2010) [#135]
News? Well, i work on the Linux Version ;-) Stay tuned.


jkrankie(Posted 2010) [#136]
What about a mac version? Is that on the cards?

Cheers
Charlie


bruZard(Posted 2010) [#137]
i have no mac, but it is possible


slenkar(Posted 2010) [#138]
linux version, cool,


Ulric(Posted 2010) [#139]
+1 for a Linux version


Naughty Alien(Posted 2010) [#140]
..wait a minute...just curious, is it Win version done so Linux and Mac are in progress now, or??


slenkar(Posted 2010) [#141]
no


Naughty Alien(Posted 2010) [#142]
..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 :)


slenkar(Posted 2010) [#143]
just to show it can be done probly


Naughty Alien(Posted 2010) [#144]
..oh i see..i thought Flow proved that part already :)..but ok..


Armitage 1982(Posted 2010) [#145]
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 ?


bruZard(Posted 2010) [#146]
@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 ;)


Jason W.(Posted 2010) [#147]
Nice stuff, bruZard!

Jason


Damien Sturdy(Posted 2010) [#148]
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.


AdrianT(Posted 2010) [#149]
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.


Tachyon(Posted 2010) [#150]
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.


klepto2(Posted 2010) [#151]
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.


bruZard(Posted 2010) [#152]
thats right, a new version is coming soon.


Grafos(Posted 2010) [#153]
Give him time, it's not an easy task he's undertaken.


Matt Vinyl(Posted 2010) [#154]
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. ;)


bruZard(Posted 2010) [#155]
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.


jkrankie(Posted 2010) [#156]
Excellent! I can't wait to try it out!

Cheers
Charlie


Baystep Productions(Posted 2010) [#157]
I starred this project on Google.

In return, I would like an English translation.


Corum(Posted 2010) [#158]
Mac users can't wait too. ^__^


bruZard(Posted 2010) [#159]
@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.


slenkar(Posted 2010) [#160]
could i help?
I dont have C++ skills but I could do some of the simple work


bruZard(Posted 2010) [#161]
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 ;)


slenkar(Posted 2010) [#162]
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?


bruZard(Posted 2010) [#163]
no, it tells BMax that the following functions are defined in the imported lib.


slenkar(Posted 2010) [#164]
which part of the code imports the lib?

(the lib is the DLL?)


GaryV(Posted 2010) [#165]
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.


slenkar(Posted 2010) [#166]
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


bruZard(Posted 2010) [#167]
The .lib imports no code, there are just definitions about the functions in the .dll (win32) or .so (linux/macos).


slenkar(Posted 2010) [#168]
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?


bruZard(Posted 2010) [#169]
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.


bruZard(Posted 2010) [#170]
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).


Corum(Posted 2010) [#171]
Thumbs up for bo3D and its coder! :)


slenkar(Posted 2010) [#172]
good job


ziggy(Posted 2010) [#173]
This Looks fantastic!
Anywere to get a demo or something? is it open source?


beanage(Posted 2010) [#174]
Oh what a fine piece of work you are doing..


bruZard(Posted 2010) [#175]
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