Ogre3D for Blitz3D

BlitzMax Forums/BlitzMax Programming/Ogre3D for Blitz3D

bruZard(Posted 2010) [#1]
At first: excuse my bad english (i should put this phrase in my sig)

i work on a Ogre3D Wrapper for Blitz3D, named "BlitzOgre3D". For the moment it is not yet productively usable, but i'am working on it.



the Changelog so far
06.05.2010 // v0.41

added		: MouseX%()
added		: MouseY%()
added		: MouseDown%(button%)
added		: KeyHit%(keycode%)
added		: MouseHit%(button%)
added		: MouseMoved%()

changed		: die BlitzOgre3D.dll ist nun gegen die VC++ Runtimelibrary gelinkt


bis 06.05.2010 // v0.41
added		: AddResourceDir(resource_dir$)
added		: GenerateEntityName$(prefix$ = "entity_")
added		: GetPath$(fullpath$)
added		: UseDirectX()
added		: UseOpenGL()
added		: SetPluginCfg(plugin_cfg$ = "plugins.cfg")
added		: SetConfigFile(config_file$ = "bo3d.cfg")
added		: SetLogFile(log_file$ = "bo3d.log")
added		: InitOgre%(width% = 800, height% = 600, depth% = 32, fullscreen% = False)
added		: Graphics3D%(width% = 800, height% = 600, depth% = 32, fullscreen% = False)
added		: EndGraphics()
added		: RenderWorld%(lastUpdate# = 0.0)
added(0)	: Dither(enable% = True)
added		: WBuffer(enable% = False)
added		: AntiAlias(value% = 0)
added(0)	: HWMultiTex(enable% = True)
added(0)	: UpdateWorld(anim_speed# = 1.0)
added(0)	: CaptureWorld();
added		: ClearWorld()
added(0)	: LoaderMatrix(file_extension$, xx#, xy#, xz#, yx#, yy#, yz#, zx#, zy#, zz#)
added		: TrisRendered%()
added		: CreateCamera.obj(entity_name$ = "")
added		: CameraClsColor(camera.obj, r# = 0.0, g# = 0.0, b# = 0.0)
added		: CameraRange(camera.obj, near# = 0.1, far# = 1000.0)
added		: WireFrame(camera.obj, mode% = PM_WIREFRAME)
added		: PositionEntity(entity.obj, x#, y#, z#)
added		: MoveEntity(entity.obj, x#, y#, z#)
added		: RotateEntity(entity.obj, x#, y#, z#)
added		: TurnEntity(entity.obj, x#, y#, z#)
added		: CreateCube.obj(entity_name$ = "")
added		: AmbientLight(r# = 0.0, g# = 0.0, b# = 0.0)
added		: CreateLight.obj(light_type% = LT_POINT, entity_name$ = "")
added		: LightColor(light.obj, r# = 1.0, g# = 1.0, b# = 1.0)
added		: LoadMesh.obj(file$, entity_name$ = "")
added		: KeyDown%(keycode%)
added		: CreateOverlay.obj(overlay_name$ = "")
added		: OverlayAdd2D(overlay.obj, container.obj)
added		: ShowOverlay(overlay.obj, enable% = True)
added		: CreatePanel.obj(x#, y#, width#, height#, panel_name$ = "")
added		: PanelAddChild(panel.obj, child.obj)
added		: CreateTextArea.obj(x#, y#, width#, height#, textarea_name$ = "")
added		: TextAreaText(textArea.obj, txt$)
added		: TextAreaFont(textArea.obj, fontname$, size# = 12)
added		: LoadFont(fontname$, height# = 10, bold% = False, italic% = False, underlined% = False)


... and last the Download width included Executable:
http://bo3d.sedm.de/downloads/bo3d.0.41.zip

stay tuned!


plash(Posted 2010) [#2]
Wrong section.


bruZard(Posted 2010) [#3]
oops ... (i did it again) ;)


slenkar(Posted 2010) [#4]
wha about blitzmax


*(Posted 2010) [#5]
looks good :)


bruZard(Posted 2010) [#6]
Now Blitz3D, later then BlitzMax


wmaass(Posted 2010) [#7]
Very interesting bruZard!


bruZard(Posted 2010) [#8]
Now this Thread is right here ;)

>> BlitzOgre3D 0.43 for BlitzMax <<

at the moment theres no documentation, take a look at the example (a executable is included)

The namespace for the mod is: "sedm.blitzogre3d.mod"


jkrankie(Posted 2010) [#9]
Fantastic!

I was thinking just the other week how there wasn't a current Ogre3D wrapper for Blitzmax, as i'd like to attempt to get my games running with that engine. The fact that you're attempting to replicate (and hopefully expand on...) B3D's command set is even better :)

Cheers
Charlie


Hotshot2005(Posted 2010) [#10]
where is sedm.blitzogre3d.mod?


jkrankie(Posted 2010) [#11]
You have to create the module folders yourself, then copy the files from the zip into it.

Cheers
Charlie


byo(Posted 2010) [#12]
Hi, bruZard.

Thanks for this release. It's really nice to see an Ogre3D wrapper in the works. :)

I'm having a problem running the example with DirectX 9 selected (Blitzmax).
This message is shown after I load the example in full screen:

EXCEPTION UNKNOWN


After that there's only a black screen and I have to kill the process.

Keep up the good work nevertheless.


slenkar(Posted 2010) [#13]
thx for blitzmax version, when i double click the executable, it says its missing msvcd100.dll


bruZard(Posted 2010) [#14]
@byo: maybe your fonts-folder is'nt "c:\windows\fonts", i've hardcoded the path in the example ... sorry for that. In then next release i put the font in the "media" folder.

@slenkar: the missing dlls will come with the next release


bruZard(Posted 2010) [#15]
bo3d BMax 0.44 all needed dll's included (i hope)

>> Download BlitzOgre3D // BMax 0.44 (~ 6MB) <<

the changelog so far ...
05-10-2010 // v0.44

added		: TCamera.Turn(x:Float, y:Float, z:Float)
added		: TCamera.Rotate(x:Float, y:Float, z:Float)
added		: TInput.MouseXSpeed:Int()
added		: TInput.MouseYSpeed:Int()

removed		: TInput.MouseMoved()


05-08-2010 // v0.43

added		: TEntity.Translate(x:Float, y:Float, z:Float)
added		: TOgre.CreateSkybox(material:String)
added		: TEntity.CreatePivot:TEntity(entity_name:String)
added		: TEntity.setParent(parent:TEntity)
added		: TEntity.getPitch:Float()
added		: TEntity.getYaw:Float()
added		: TEntity.getRoll:Float()
added		: TInput.MouseX:Int()
added		: TInput.MouseY:Int()
added		: TInput.MouseDown:Int(button:Int)
added		: TInput.KeyHit:Int(keycode:Int)
added		: TInput.MouseHit:Int(button:Int)
added		: TInput.MouseMoved:Int()
added		: TOgre.AddResourceDir(resource_dir:String)
added		: TEntity.GenerateEntityName:String(prefix:String)
added		: TOgre.UseDirectX()
added		: TOgre.UseOpenGL()
added		: TOgre.SetPluginCfg(plugin_cfg:String)
added		: TOgre.SetConfigFile(config_file:String)
added		: TOgre.SetLogFile(log_file:String)
added		: TOgre.Init:Byte(width:Int, height:Int, depth:Int, fullscreen:Byte)
added		: TOgre.Graphics3D:Byte(width:Int, height:Int, depth:Int, fullscreen:Byte)
added		: TOgre.EndGraphics()
added		: TOgre.RenderWorld:Int(lastUpdate:Float)
added		: TOgre.WBuffer(enable:Byte)
added		: TOgre.AntiAlias(value:Int)
added		: TOgre.ClearWorld()
added		: TOgre.TrisRendered:Int()
added		: TCamera.Create:TCamera(entity_name:String)
added		: TCamera.ClsColor(red:Float, green:Float, blue:Float)
added		: TCamera.Range(near:Float, far:Float)
added		: TCamera.WireFrame(mode:Int)
added		: TEntity.Position(x:Float, y:Float, z:Float)
added		: TEntity.Move(x:Float, y:Float, z:Float)
added		: TEntity.Rotate(x:Float, y:Float, z:Float)
added		: TEntity.Turn(x:Float, y:Float, z:Float)
added		: TEntity.CreateCube:TEntity(entity_name:String)
added		: TOgre.AmbientLight(red:Float, green:Float, blue:Float)
added		: TLight:Create:TLight(ogre:TOgre, light_type:Int, entity_name:String)
added		: TLight.LightColor(red:Float, g:Float, blue:Float)
added		: TMesh.Load:TMesh(ogre:TOgre, file:String, entity_name:String)
added		: TInput.KeyDown:Byte(keycode:Int)
added		: TOverlay.Create:TOverlay(overlay_name:String)
added		: TOverlay.Add2D(container:TPanel)
added		: TOverlay.Show(enable:Byte)
added		: TPanel.Create:TPanel(ogre:TOgre, x:Float, y:Float, width:Float, height:Float, panel_name:String)
added		: TPanel.AddChild(child:TEntity)
added		: TTextArea.Create:TTextArea(ogre:TOgre, x:Float, y:Float, width:Float, height:Float, textarea_name:String)
added		: TTextArea.Caption(txt:String)
added		: TTextArea.Font(fontname:String, size:Float)
added		: TOgre.LoadFont(fontname:String, height:Float, bold:Byte, italic:Byte, underlined:Byte)


... and a new screenshot



byo(Posted 2010) [#16]
Nice work!
I'll test it when I get home. Thanks a lot. :)

[EDIT] Tested and approved!
And the example code looks very cool and tidy.


slenkar(Posted 2010) [#17]
yep that one worked
good job!

Ogre3D doesnt have collisions does it?
any chance of coldet library integration?


bruZard(Posted 2010) [#18]
Ogre3D doesnt have collisions, atm i evaluate Newton and PhysX for collisions and physics.


jkrankie(Posted 2010) [#19]
Some sort of collisions stuff would be great!

Do you have access to all Ogre functions? Or is that not something you're going to add later?

Cheers
Charlie


sigi(Posted 2010) [#20]
Great work, why not evaluate Bullet too ?


bruZard(Posted 2010) [#21]
for skey-z from the german Blitzbasic Forums i've released the Version 0.44.1. This add the function GetFPS:Float(value:Int). "value" can be:

- FPS_AVG (default)
- FPS_BEST
- FPS_WORST
- FPS_LAST

>> Update to 0.44.1 for Blitz3D/BlitzPlus (61kb) <<

>> Update to 0.44.1 for BlitzMax (132kb) <<


Hotshot2005(Posted 2010) [#22]
Hiya

I have put Sedm.blitzogre3d.mod in Blitzmax mod and build module then i click on example source code and run it and i get this

cant find interface for module `sedm.blitzogre3d`


xlsior(Posted 2010) [#23]
Hotshot: Make sure to build the documentation as well.


bruZard(Posted 2010) [#24]
@Hotshot2005

you need 0.44 at first, then overwrite this with the 0.44.1 release ... then you can build the module with bmk makemods sedm.blitzogre3d or bmk makemods -h sedm.blitzogre3d

but ... i've released a running module for win32 (single thread and threaded), why you try to compile it by your self?


jkrankie(Posted 2010) [#25]
@Hotshot, you need sedm.mod AND blitzogre3d.mod folders.

Cheers
Charlie


Hotshot2005(Posted 2010) [#26]
here what i did

1) I download 0.44 then put in Blitzmax mod

2) I build module,rebuild all module and rebuild documentation

3) I download 0.44.1 then put in blitzmax mod then it say to me if i want
overwrite it and i say yes :)

4) I build module,rebuild all module and rebuild documentation

5) I click on example and run the program and i still get this

Building example
Compiling:example.bmx
Compile Error: Can't find interface for module 'sedm.blitzogre3d'


[C:/Users/____/Desktop/example/example.bmx;5;1]
Build Error: failed to compile C:/Users/____/Desktop/example/example.bmx
Process complete


wmaass(Posted 2010) [#27]
Works ok here. In your Bmax mod folder you should have a folder named sedm.mod. And in sedm.mod you should have a folder named blitzogre3d.mod. In that folder you have the contents of the download.


Hotshot2005(Posted 2010) [#28]
thank you Wmass :)

EDIT : FPS 1651 :) High framerate :)


bruZard(Posted 2010) [#29]
BlitzOgre3D v0.45

the update is available from here (BlitzMax)

you need BlitzOgre3D 0.44 for this release.




Hotshot2005(Posted 2010) [#30]
hiya there,

I have download your update, build module,rebuild all module and rebuild documentation and when I run the program and it say "OrgeMain.Dll" is missing from my computer"

So that mean I have find missing files by downloading "OrgeMain.Dll" to fixed the problem?


byo(Posted 2010) [#31]

you need BlitzOgre3D 0.44 for this release.



That means you need to have everything that's missing from the 0.44 example folder into the 0.45 one. :)


bruZard(Posted 2010) [#32]
Sorry, but my english is to bad for the following text. I used Google to translate it:

Today I have been fighting on two fronts. One was on the texture side and the other on the area known as the compositor. The latter are simple scripts that make it a Ogre3D disciples to allow the post-process area relatively free. I remember several Compositor scripts with BlitzOgre3D to define directly so that you can use these effects with a simple call (for example, "Depth of Field", "Bloom", "Motion Blur", etc.)

With the integration of compositors and the texture commands I go one step away from it all Blitz3D function directly in C + + to wrap. Instead, I loop through the required Ogre3D methods and glue it together in the BMax and Blitz3D.

Textures are to be produced in their Ogre3D format more complicated than the one in his Blitz3D banal "CreateTexture ()" is used to, but it also has much more possibilities. If you use CreateTexture () only with the required parameters "width" and "height" it gets just a 32 bit texture with the characteristics of RGB and alpha. Looking at the port of the wrapper on Mac and Linux (BMax), I have but all other formats are looped through. This can take a closer look in the file "include / bo_texture_pixelformats.bmx. This file also defines various ways to use the texture of trust (such as Render Target) and to determine the type of texture, what shader is not necessarily uninteresting (1D, 2D, 3D, CubeMap Texure).

Compositors Ogre3D scripts that a little bit of the GLSL or HLSL scripts are to anticipate and provide post-process effects. In BlitzOgre3D I sharpen all the methods needed to understand the one just around the documentation and / or tutorials, but can summarize the main effects together in their own methods / functions. For example, does a "SceneDOF (camera, near, far)" the complete end of Depth of Field, who would like to do but may be direct as in Ogre3D itself.

In the next release (0.48) which is then be possible.


slenkar(Posted 2010) [#33]
when i try to run the exe it says file not found bo3d.cfg

also, in the bmx files there is no 'module' command