simpleIrrlicht - Irrlicht in "Einfach"

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3 ... 7, 8, 9 ... 13, 14, 15  Weiter

Worklogs simpleIrrlicht - Irrlicht in "Einfach"

0.44.1

Montag, 10. Mai 2010 von Farbfinsternis
Nur für skey-z Wink

Ich habe die Funktion GetFPS() eingebaut. Diese gibt ein Float zurück und erwartet einen Wert der ihr sagt welche Art von FPS abgefragt werden soll. Mögliche Werte sind: FPS_AVG (average) (Default), FPS_BEST, FPS_WORST und FPS_LAST

>> Update auf 0.44.1 für Blitz3D/BlitzPlus (61kb) <<

>> Update auf 0.44.1 für BlitzMax (132kb) <<

Im Example (beide Versionen) werden die FPS pro Frame in das TextArea geschrieben, ich empfehle das nur zu tun wenn sich der Wert tatsächlich ändert Wink

Zum installieren einfach den Inhalt des ZIP über die Version 0.44 schreiben

0.44

Montag, 10. Mai 2010 von Farbfinsternis
In diesem Release gibt es nur wenige neue Funktionen, hauptsächlich sind einige Sachen hinter den Kulissen passiert.

  • einige Funktionen im C++ Source gekürzt und zusammengefasst. (bspw. habe ich vorher Int<->Bool Ergebnisse zwischengespeichert, es geht aber auch ohne diesen Overhead und das sogar ohne Warnings Wink )
  • Das "capturen" der InputHandler passiert nun in RenderWorld(), nun funktionieren endlich auch die Funktionen MouseXSpeed() und MouseYSpeed().
  • TurnEntity() und RotateEntity können nun auch auf Kameras angewendet werden
  • Dadurch dass ich MouseXSpeed und MouseYSpeed implementieren konnte ist MouseMoved() rausgeflogen
  • ich habe noch einige DLLs beigelegt die bei dem einen oder anderen gefehlt haben. Jetzt sollte der Krimskram eigentlich out-of-the-box laufen.


Changelog:
Code: [AUSKLAPPEN]

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)


Das Changelog für die B3D Version ist ähnlich Wink

user posted image

Blitz3D Version
>> bo3d.blitz3d v0.44 (ca. 6,3MB) <<


BlitzMax Version
>> bo3d.bmax v0.44 (ca. 6MB) <<

Das sollte das letzte Komplett-Release sein, in nachfolgenden Päckchen verschnüre ich nur noch die Dateien die sich auch geändert haben.

Message: MSVCR100.DLL fehlt

Sonntag, 9. Mai 2010 von Farbfinsternis
Für alle bei denen es nicht läuft weil die msvcr100.dll (und wahrscheinlich auch die msvcp100.dll) fehlt, habe ich ein Päckchen geschnürt.

>> Download MSVCR100.DLL und MSVCP100.DLL (ca. 550kb) <<

Den Link zur BMax Version im letzten Beitrag habe ich korrigiert.

0.43 für Blitz3D, BlitzPlus und BlitzMax

Samstag, 8. Mai 2010 von Farbfinsternis
Mit der Version 0.43 dürfen auch BlitzMax User erstmals einen Blick auf den Wrapper werfen.

Neu (in beiden Version) seit 0.41 sind folgende Funktionen:

  • EntityPitch#(entity.obj) / TEntity.getPitch:Float()
  • EntityYaw#(entity.obj) / TEntity.getYaw:Float()
  • EntityRoll#(entity.obj) / TEntity.getRoll:Float()
  • TranslateEntity(entity.obj, x#, y#, z#) / TEntity.Translate(x:Float, y:Float, z:Float)
  • CreateSkybox(material$) / TOgre.CreateSkybox(material:String)
  • CreatePivot.obj(entity_name$) / TEntity.CreatePivot:TEntity(ogre:TOgre, entity_name$)
  • EntityParent(entity.obj, parent.obj) / TEntity.setParent(parent:TEntity)


Changelog BlitzMax Version
Code: [AUSKLAPPEN]

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


Changelog Blitz3D/BlitzPlus Version
Code: [AUSKLAPPEN]

08.05.2010 // v0.43

added      : TranslateEntity(entity.obj, x#, y#, z#)


07.05.2010 // v0.42

added      : CreateSkybox(material$)
added      : CreatePivot.obj(entity_name$)
added      : EntityParent(entity.obj, parent.obj)
added      : EntityPitch#(entity.obj)
added      : EntityYaw#(entity.obj)
added      : EntityRoll#(entity.obj)

fixed      : Schreibfehler bei Entity-Konstanten


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)


>> Download BlitzOgre3D 0.43 für Blitz3D / BlitzPlus (ca. 5,8MB) <<

>> Download BlitzOgre3D 0.43 für BlitzMax (ca. 5,3MB) <<

oops..

Donnerstag, 6. Mai 2010 von Farbfinsternis
Ich habe das hier (hoffentlich zum letzten Mal) nochmal umbenannt. Da ich hier der Einzige Idiot bin der versucht Ogre zu wrappen macht das wohl keinen Unterschied Wink

FAQs, Tutorials etc. gibt es demnächst unter http://bo3d.sedm.de/ ... derzeit ist da nur ein Logo-Splash zu finden.

Houston an Mond ...

Donnerstag, 6. Mai 2010 von Farbfinsternis
Da das Input-System von Blitz3D natürlich nicht funktioniert wenn man per DLL in fremden Gewässern fischt, bin ich gezwungen die Blitz3D Funktionen für die Eingabe zu überschreiben. Heute kamen deshalb die Funktonen MouseX(), MouseY(), MouseDown(), MouseHit(), KeyHit() und MouseMoved() hinzu. Ich werde mich auch befleißigen die Funktionen MouseXSpeed(), MouseYSpeed() und MouseZSpeed() zu übertragen, aber nicht alles an einem Tag.

Nebenbei habe ich die neue DLL auch gegen die VC++ Runtimes gelinkt so dass eigentlich keine DLL mehr fehlen dürfte. Mangels Rechner ohne installierter Entwicklungsumgebung kann ich das natürlich nicht zuende testen. Ich bin deshalb dankbar für jedes Feedback.

Das Changelog habe ich nochmal übertragen, ich konnte nur nicht mehr zusammen puzzlen was gestern und die Tage davor implementiert wurde, weshalb der erste Eintrag im CL etwas länger ist.

Code: [AUSKLAPPEN]

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)


>> Download BlitzOgre3D v0.41 (ca. 4,7MB) <<
Ein ausführbares Example ist wie immer enthalten und sollte dieses Mal sogar funktionieren Wink

Da es sich bei Ogre3D um eine reine Grafik-Engine handelt gibt es nicht direkt Funktionen zur Kollisionserkennung. Dies werde ich über eine externe Physik-Lib lösen. Welche das sein wird ist noch nicht entschieden, aber ich tendiere in Richtung ODE.

Fehlende DLLs

Mittwoch, 5. Mai 2010 von Farbfinsternis
Beim letzten Download fehlt für das ausführen des Examples die "Microsoft Visual C++ 2010 Runtime". Diese kann unter folgenden Links herunter geladen werden:

MSVCR2010 32 Bit (ca. 4,8MB)

MSVCR2010 64 Bit (ca. 5,5MB)

BlitzOgre3D V0.4

Mittwoch, 5. Mai 2010 von Farbfinsternis
user posted image

Intern hat sich einiges gewandelt, was man sehen kann ist das Overlay System. Im Bild sieht man folgende Kette: Overlay -> Panel -> TextArea

Hier mal die gesamte Liste der derzeitigen Funktionen:
Code: [AUSKLAPPEN]

;====================================================================
; Global
;====================================================================
bo_CreateOgre%():"_CreateInstance@0"
bo_OgreCfgFiles(blitzogre%, plugins$, config$, logfile$):"_OgreCfgFiles@16"
bo_Init%(blitzogre%, width%, height%, depth%, fullscreen%, renderer%):"_Init@24"
bo_Free(blitzogre%):"_Free@4"
bo_RenderWorld%(blitzogre%, lastUpdate#):"_RenderWorld@8"
bo_AddResourceDir(blitzogre%, resource_dir$):"_AddResourceDir@8"
bo_WBuffer(blitzogre%, enable%):"_WBuffer@8"
bo_AntiAlias(blitzogre%, value$):"_AntiAlias@8"
bo_ClearWorld(blitzogre%):"_ClearWorld@4"
bo_TrisRendered%(blitzogre%):"_TrisRendered@4"


;====================================================================
; Input
;====================================================================
bo_KeyDown%(blitzogre%, keycode%):"_KeyDown@8"


;====================================================================
; Camera
;====================================================================
bo_CreateCamera%(blitzogre%, entity_name$):"_CreateCamera@8"
bo_CameraClsColor(camera%, red#, green#, blue#):"_CameraClsColor@16"
bo_PositionCamera(camera%, x#, y#, z#):"_PositionCamera@16"
bo_MoveCamera(camera%, x#, y#, z#):"_MoveCamera@16"
bo_CameraRange(camera%, n#, f#):"_CameraRange@12"
bo_WireFrame(camera%, mode%):"_WireFrame@8"


;====================================================================
; Entity & Primitives
;====================================================================
bo_CreateCube%(blitzogre%, entity_name$):"_CreateCube@8"
bo_PositionEntity(entity%, x#, y#, z#):"_PositionEntity@16"
bo_MoveEntity(entity%, x#, y#, z#):"_MoveEntity@16"
bo_RotateEntity(entity%, x#, y#, z#):"_RotateEntity@16"
bo_TurnEntity(entity%, x#, y#, z#):"_TurnEntity@16"


;====================================================================
; Light
;====================================================================
bo_AmbientLight(blitzogre%, r#, g#, b#):"_AmbientLight@16"
bo_CreateLight%(blitzogre%, light_type%, entity_name$):"_CreateLight@12"
bo_PositionLight(light%, x#, y#, z#):"_PositionLight@16"
bo_MoveLight(light%, x#, y#, z#):"_MoveLight@16"
bo_LightColor(light%, r#, g#, b#):"_LightColor@16"


;====================================================================
; Meshes
;====================================================================
bo_LoadMesh%(blitzogre%, meshfile$, entity_name$):"_LoadMesh@12"


;====================================================================
; Overlays
;====================================================================
bo_CreateOverlay%(blitzogre%, overlay_name$):"_CreateOverlay@8"
bo_OverlayAdd2D(overlay%, container%):"_OverlayAdd2D@8"
bo_ShowOverlay(overlay%, enable%):"_ShowOverlay@8"


;====================================================================
; Overlays :: Container (Panels)
;====================================================================
bo_CreatePanel%(blitzogre%, x#, y#, width#, height#, panel_name$):"_CreatePanel@24"
bo_PanelAddChild(panel%, child%):"_PanelAddChild@8"


;====================================================================
; Overlays :: PanelChilds :: TextArea
;====================================================================
bo_CreateTextArea%(blitzogre%, x#, y#, width#, height#, textarea_name$):"_CreateTextArea@24"
bo_TextAreaText(textArea%, text$):"_TextAreaText@8"
bo_TextAreaFont(textArea%, fontname$, size#):"_TextAreaFont@12"



bo_LoadFont(blitzogre%, fontfile$, height$, bold%, italic%, underlined%):"_LoadFont@24"



>> Download BlitzOgre3D V0.4 (ca. 7,2MB) <<
Ein ausführbares Example liegt bei. Im Folgenden wie immer der Source des Samples:

BlitzBasic: [AUSKLAPPEN]

Include "bo3d/bo3d.bb"

Global EOL$ = Chr(13) + Chr(10)

Graphics3D()
AntiAlias 8 ;FSAA 8


; a Camera
Local cam.obj = CreateCamera()
PositionEntity cam, 0.0, 0.0, 160.0
CameraClsColor cam, 0.8, 0.5, 0.2
CameraRange cam, 0.1, 5000.0


; two Lights
Local light01.obj = CreateLight()
PositionEntity light01, -600.0, 600, 600
LightColor light01, 1.0, 0.0, 0.0 ; a sexy red light


Local light02.obj = CreateLight()
PositionEntity light02, 600.0, 600, -600

; a Mesh
Local ogre.obj = LoadMesh("media\ogrehead.mesh")


; ---- 2D Overlay with a TextArea ----

; we need a Font
LoadFont(SystemProperty("windowsdir") + "\Fonts\Arial.ttf", 32)


; Overlay + Panel + TextArea
Local ov.obj = CreateOverlay()
Local pnl.obj = CreatePanel(10.0, 10.0, 300.0, 100.0)
Local txtarea.obj = CreateTextArea(0.0, 0.0, 300.0, 100.0)

; define the font
TextAreaFont(txtarea.obj, "Arial.ttf", 32)

; add some text
TextAreaText(txtarea.obj, "BlitzOgre3D" + EOL + "Ogre3D for Blitz3D" + EOL + "V0.4")

; add the panel to the overlay ...
OverlayAdd2D(ov.obj, pnl.obj)

; ... and the textarea to the panel
PanelAddChild(pnl.obj, txtarea.obj)

; bring it on screen
ShowOverlay(ov.obj)

; ---- End > 2D Overlay with a TextArea ----


Local exit_flag% = False
While exit_flag% = False
If KeyDown(1) Then exit_flag = True ; hit Escape to exit

If KeyDown(208) Then MoveEntity(cam, 0.0, 0.0, 0.1) ; move camera forward
If KeyDown(200) Then MoveEntity(cam, 0.0, 0.0, -0.1) ; move camera backward

If KeyDown(203) Then MoveEntity(cam, -0.1, 0.0, 0.0) ; move camera left
If KeyDown(205) Then MoveEntity(cam, 0.1, 0.0, 0.0) ; move camera right

If KeyDown(17) Then WireFrame cam, PM_WIREFRAME ; "W" turns on WireFrame-Mode
If KeyDown(25) Then WireFrame cam, PM_POINTS ; "P" turns on Point-Mode
If KeyDown(31) Then WireFrame cam, PM_SOLID ; "S" turns on Solid-Mode"

TurnEntity ogre, 0.0, 0.001, 0.0 ; turn baby turn!

TextAreaText(txtarea, "Tris rendered: " + Str(TrisRendered())) ; this should not to be done per frame

If Not RenderWorld%() Then exit_flag = True
Wend

EndGraphics()

End


...weiter gehts.

Ein Oger kann behäbig sein

Montag, 3. Mai 2010 von Farbfinsternis
Der Versuch den Ogre-generierten Kontext ins Blitz3D Fenster zu zwingen ist grandios ins Wasser gefallen, spielt aber auch keine Rolle da es eh nicht so auf meiner Linie lag, schließlich soll nach Blitz3D auch noch BlitzMax mit Ogre versorgt werden.

Nebenbei hatte ich noch versucht Ogre statisch zu linken ... das hat auch funktioniert aber ich verfolge das nicht weiter weil es zuviele Nachteile mit sich bringt. Beispielsweise muss man sich dann schon beim erstellen der DLL für DX oder OGL entscheiden, welchen Scene-Type man bevorzugt (Indoor, Outdoor, weites Gelände, extra große Aussenwelten etc.). So bleibe ich halt bei den DLLs was ja auch nicht so schlimm ist. Wer (z.B.) BSP nicht benötigt nimmt es aus der CFG und schmeisst es aus dem Plugins Ordner und gut ist. Ohnehin habe ich mich schon weitestgehend von der Idee getrennt Ogre3D irgendwie in das Korsett eines Blitz3D pressen zu müssen.

Heute habe ich das Projekt auf Visual C++ 2010 Express und die letzte Ogre3D Version 1.7.1 umgestellt. Dabei habe ich auch den Code ein wenig umgebastelt. Der Krimskram heißt nun BlitzOgre3D (denn simple geht anders) und schleift einiges mehr an Komplexität nach Blitz3D durch. Ich dachte mir dass es nicht notwendig ist zwei Zweige zu fahren wenn man einen komplexeren Zeig einfach direkt in Blitz3D wrapped wo es ohnehin unerlässlich ist ein Include zu verwenden.

Aus der originalen Blitz3D IDE kann man noch immer kein Ogre-Projekt starten, das scheint aber an der Art und Weise zu liegen wie Blitz3D seine temporären Executables behandelt (und vor Allem: wo es sie ablegt). Es gibt zwei Möglichkeiten Ogre3D in Blitz3D zu testen:

1. mit der originalen IDE ein Executable erzeugen und dann dieses testen
2. IDEal verwenden und dort direkt "Compile'n'Run" auswählen können

Die Altlasten bei Graphics3D und bei dem von dort aufgerufene "Init" sind noch vorhanden, werden aber bald eleminiert. In Zukunft erzeugt Graphics3D eine CFG bevor es Ogre3D initialisiert damit das OgreConfigTool nicht angezeigt werden muss.

Da Ogre3D mit Szenen arbeitet gibt es eine kleine Veränderung. Man kann eine neue Scene mit "CreateScene%(scene_name$)" erzeugen. Alle Entities verlangen jetzt bei der Erzeugung den optionalen Parameter "scene". Lässt man den Parameter weg wird die DefaultScene verwendet die ohnehin beim initialisieren der Engine erzeugt wird.

Das Blitz3D Window als Geisel

Freitag, 30. April 2010 von Farbfinsternis
Da es scheinbar unmöglich ist Ogre3D automatisch ein Fenster erstellen zu lassen wenn man versucht sein Programm aus der Blitz3D IDE zu starten, bin ich nun einen anderen Weg gegangen.

Der User führt einfach das ihm gegebene Graphics3D aus und ein Init() schickt dann das Window-Handle an den Konstruktor der Ogre3D Engine. Dieser nimmt das Fenster als seines an und versucht einen Kontext auf das übergebene Rendersystem einzurichten (OpenGL oder DirectX9).

Das funktioniert fast gut Wink

Derzeit wird erfolgreich das entsprechende Plugin geladen und das Log zeigt keine Probleme ... aber scheinbar gelingt es nicht einen DX9 oder OpenGL Kontext in das Blitz3D Fenster zu zwingen.

Ich bin aber dran und denke dass ich auch das lösen werde.

Gehe zu Seite Zurück  1, 2, 3 ... 7, 8, 9 ... 13, 14, 15  Weiter