simpleIrrlicht - Irrlicht in "Einfach"

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3 ... 11, 12, 13, 14, 15  Weiter

Worklogs simpleIrrlicht - Irrlicht in "Einfach"

Materialien und Bugfixes

Freitag, 25. September 2009 von Farbfinsternis
Anders als in Blitz3D haben Irrlicht Objekte Materialien, es können mehrere davon auf einem Mesh existieren. Mit diesen Materialien bestimmt man die Farbe, die Shininess, den Specular-Wert etc. Mit der aktuellen V0.21 habe ich angefangen dieses System einzubauen.

Code: [AUSKLAPPEN]

25.09.2009 Version 0.21
added AmbientLight()
added GetMaterialCount()
added MaterialColor()
added MaterialSpecColor()
added MaterialShininess()
added MaterialAmbient()
added MaterialEmissive()
added Gravity()


Eine kleine, kompilierte Physikdemo findet ihr >>hier<< (ca. 3MB).

Der Link auf die v0.21 des Modules findet ihr hier in den anderen Beiträgen, er hat sich nicht geändert.

user posted image

v0.2

Donnerstag, 24. September 2009 von Farbfinsternis
Der Sprung von 0.141 auf 0.2 hat stattgefunden weil der Source komplett überarbeitet wurde. Wie Mr.Keks in den Comments schon richtig anmerkte war mein System zur Bestimmung eines Entity-Handles alles andere als optimal. Ich habe dies nun korrigiert und nebenbei das OOP Interface wieder eingeführt.

Hier der Auszug aus dem Changelog:
Zitat:

Das prozeduale EntitySystem wurde auf "HandleToObject() / HandleFromObject()" umgestellt. In diesem Zuge wurde die Direktkommunikation in ein OOP Interface verlagert. Wer möchte darf nun also auch objektorientiert programmieren.

Die Engine erzeugt zum Start das globale Objekt "s3d:TS3D", durch dieses globale Objekt ist es möglich objektorientierte und prozeduale Programmierung zu mischen.


Download simple3D V0.2 (ca. 3,8MB)

Nur ganz kurz...

Mittwoch, 23. September 2009 von Farbfinsternis
Murmeln sind nun auch Physik-fähig. Gleicher Link, das Sample befindet sich in "samples/simple3d_02.bmx".

Viel Spaß!

user posted image

Lasset die Kistlein fallen

Mittwoch, 23. September 2009 von Farbfinsternis
Letztendlich ist es mir nun doch gelungen Irrlicht meinen Willen aufzuzwingen.

user posted image

Demo zum obigen Bild (ca. 3,6MB)

simple3D V0.141 (ca 3,6 MB)

Derzeit funktionieren nur Würfel und man kann noch nicht mehr machen als diese fallen zu lassen. Aber es funktioniert und das hinzufügen der restlichen Funktionalität sollte nur Fleißarbeit sein.

Wichtig: CopyEntity() steht zwar schon in den docs, funktioniert aber noch nicht richtig. Zudem müssen derzeit Meshes mit CopyMesh() kopiert werden, CopyEntity() funktioniert noch nicht mit Meshes.

Ein Physikobjekt muss positioniert werden bevor EntityPhysics() angewandt wird! Eine Skalierung bewirkt leider noch nicht dass auch die Physik-Boundingbox skaliert wird, ich arbeite daran.

Heute kein 0.14

Dienstag, 22. September 2009 von Farbfinsternis
Newton kann einen schon irre machen Wink

Es gibt heute keine neue Version weil ich noch mit der Newton Library kämpfe. An sich funktioniert die Anbindung großartig, nur Irrlicht haut mit fetten Füssen mitten ins Konzept.

Irrlicht verwendet ein Unit-System das 32 mal größer ist als das anderer 3D Engines. Newton weiß nix davon und nimmt Irrlicht Maße als gegeben. Das heißt dass man erst sämtliche Daten mit dem Faktor 32 verrechnen muss um an brauchbare Daten zu kommen.

Desweiteren kann ich zwar Entities skalieren, diese Skalierung ist aber nicht wirklich direkt wirksam und kann mit Newton verarbeitet werden, man muss erst die BoundingBox des betroffenen Objekts aktualisieren ........

Alles in Allem ist Irrlicht eine ziemlich zickige Geliebte die nur mit Mühe an allgemein gültige Konventionen angepasst werden kann.

Das Changelog für heute fällt dementsprechend schmal aus. Es sind nur die Funktionen "UpdatePhysics()" (welche nur intern verwendet wird) und "EntityMass()" hinzugekommen. Letztere Funktion leidet noch unter der Idiotie dass Irrlicht ein 32mal größeres Weltmodell verwendet als der Rest der Welt. Demzufolge gibt es heute kein neues Update.

0.13 und die Physik

Montag, 21. September 2009 von Farbfinsternis
Die Physik-Engine "Newton" in der Version 2.08 ist nun angelötet. Zwar kann man noch keinem Entity Physikeigenschaften zuweisen, aber das Ganze läuft ohne Fehlermeldungen und die internen Newton-Funktionen liefern vernünftige Rückgabewerte ... also gehe ich davon aus dass der Rest dann auch klappen wird.

Wie einige richtig bemerkt haben: Ja, das Modul ist derzeit nur für Windows. Wenn es auf Win vernünftig läuft können die anderen Systeme bedient werden.

Die Newton Funktionen im Changelog sind ausschliesslich für den internen Gebrauch gedacht! Die noch nicht existente Funktion "EntityPhysics()" wird später das Ganze zusammenfügen und einen einfachen, wie aus Blitz3D gewohnten, Zugriff auf die Physik-Engine gestatten.


Hier das Changelog für heute:
Code: [AUSKLAPPEN]

21.09.2009 Version 0.13

fixed   CreateFPSCamera()   : Parameter "moveSpeed" Default = 0.2
changed   CreateLight()      : Parameterreihenfolge, LightRange
added   WorldSize()
added   LightRange()
added   CastShadows()
added   ScaleTexture()
added   CreatePhysicsBox()   : intern
added   CreatePhysicsBody()   : intern
added   AssignEntityPhysics()   : intern


Hier noch der Link: simple3D 0.13 ink. Newton (ca. 3,4MB)

Einen Screenshot gibt es heute nicht da sich ja nicht soviel, aus User-Sicht, verändert hat.

nochmal 0.12

Freitag, 18. September 2009 von Farbfinsternis
Ich möchte die Versionsnummer jetzt nicht erhöhen ... es käme eh nur ein v0.122 oder sowas dabei heraus und das ist sinnfrei. Ich will nur die neue Version präsentieren in welcher nun Meshes und AnimMeshes verfügbar sind sowie die FPS Camera und die Möglichkeit ein Entity zu texturieren. Hier das Changelog seit der Umstellung auf einen eigenen Wrapper:
Code: [AUSKLAPPEN]

18.09.2009 Version 0.12

fixed AddZip()
fixed CreateLight() parameter "light_type" (directional, point, spot)
changed Addzip() <- add. Parameter: ignoreCase, ignorePaths
added EntityName()
added NameEntity()
added EntityPitch()
added EntityYaw()
added EntityRoll()
added RotateEntity()
added TranslateEntity()
added ScaleEntity()
added CameraRange()
added EntityParent()
added LoadMesh()
added ScaleMesh()
added MoveMouseTo()
added LoadSkybox()
added LoadAnimMesh()
added CreateFPSCamera()
added LoadTexture()
added EntityTexture()
added SetAnimSpeed()


17.09.2009 Version 0.11

added ClsColor()
added ClsMode()
added EntityX()
added EntityY()
added EntityZ()
added FogColor()
added FogDensity()
added FogMode()
added FogRange()
added GetFPS()
added GetMouseX()
added GetMouseY()
added WindowTitle()


16.09.2009 Version 0.1

added S3DOptions()
added Graphics3D()
added RenderWorld()
added isKeyDown()
added MoveEntity()
added TurnEntity()
added CreateCube()
added CreateCamera()
added CreateLight()
added LightColor()


Dann nochmal der Downloadlink -> simple3D v0.12 (ca. 2,7MB) zuppen.

Der aktuelle Quelltext des Samples zeigt nur einen kleinen Teil des derzeit verfügbaren Sprachschatzes:
BlitzMax: [AUSKLAPPEN]

rem
simple3D Sample 01
endrem


SuperStrict

Framework sedm.simple3d
Import brl.keycodes

Graphics3D(800, 600, 32, DRV_DIRECTX9)

If Not AddZip("media.pak") Then RuntimeError("Media.pak konnte nicht geöffnet werden.")

Local cam:Int = CreateFPSCamera(50.0, 0.1)
Local light:Int = CreateLight()
Local sky:Int = LoadSkybox("sky", "jpg")
Local dragon:Int = LoadAnimMesh("dragon/dragon.md2")

Local dragon_tex:Int = LoadTexture("dragon/dragon.bmp")
EntityTexture(dragon, dragon_tex, 0)

SetAnimSpeed(dragon, 30.0)

PositionEntity(dragon, 0.0, 0.0, 30.0)
ScaleMesh(dragon, 0.5, 0.5, 0.5)
PositionEntity(light, -100.0, 100.0, -100.0)

Local mx:Float = GetMouseX()
Local my:Float = GetMouseY()
Local lastFPS:Int = 0

Repeat
Local fps:Int = GetFPS()
Local nmx:Float = GetMouseX()
Local nmy:Float = GetMouseY()

If nmx <> mx Or nmy <> my Or lastFPS <> fps
WindowTitle("simple3D - " + String(fps) + " Bilder pro Sekunde")
mx = nmx
my = nmy
lastFPS = fps
End If

TurnEntity(dragon, 0.01, 0.01, 0.01)

If Not RenderWorld() Then Exit
Until isKeyDown(KEY_ESCAPE)

End


und wie ich es gern habe: Zum Abschluss noch ein Screenshot. Es handelt sich dabei um den Dragon aus einem der Blitz3D Samples:
user posted image

v0.12

Freitag, 18. September 2009 von Farbfinsternis
Es hat sich wieder einiges getan:
Code: [AUSKLAPPEN]

fixed AddZip()
fixed CreateLight() parameter "light_type" (directional, point, spot)
added EntityName()
added NameEntity()
added EntityPitch()
added EntityYaw()
added EntityRoll()
added RotateEntity()
added TranslateEntity()
added ScaleEntity()
added CameraRange()
added EntityParent()
added LoadMesh()
added ScaleMesh()
added MoveMouseTo()
added LoadSkybox()


Der Downloadlink ist unverändert geblieben, ich poste ihn aber dennoch ein weiteres Mal: simple3D V0.12 saugen.

Und noch ein Bildchen:
user posted image

V0.11

Donnerstag, 17. September 2009 von Farbfinsternis
Es gibt noch irre viele Probleme die ich als langjähriger BlitzMax User nicht sofort nachvollziehen kann. Bspw. verstehe ich nicht wieso Irrlicht für String-Parameter alle naselang andere Datentypen verwendet. Aber das bekomme ich auch noch hin.

Ich habe nun V0.11 hochgeladen welche Ihr Euch hier herunterladen könnt. Was neu ist könnt Ihr dem Changelog entnehmen welches ich hier mal eben paste.

Code: [AUSKLAPPEN]

17.09.2009 Version 0.11

added ClsColor()
added ClsMode()
added EntityX()
added EntityY()
added EntityZ()
added FogColor()
added FogDensity()
added FogMode()
added FogRange()
added GetFPS()
added GetMouseX()
added GetMouseY()
added WindowTitle()


Eigentlich sollte da auch noch "AddZip()" dabei sein, aber leider weigert sich die Irrlicht Funktion meine Strings entgegen zu nehmen und lässt die App sang und klanglos abschmieren. Aber das bekomme ich auch noch hin.

Der geneigte Mitleser und Ausprobierer wird mitbekommen haben dass DX8 wieder aktiviert ist und deshalb wieder diese DLL mit transportiert werden muss. Das liegt daran dass ich die Sturmschäden die BtbN verursacht hat noch nicht komplett bereinigen konnte. Sollte ich es morgen wieder nicht hinbekommen dass DX8 rausfliegt werde ich simple3D wieder als DLL kompilieren, denn dann funktioniert es.

Auf die nächsten 13 oder mehr Funktionen ...

Jetzt aber...

Donnerstag, 17. September 2009 von Farbfinsternis
Nach dem Desaster von gestern habe ich nun eine neue, funktionierende Version hochgeladen:

simple3D 0.1 (ca. 2,2MB)

Hier das beiliegende Sample und ein Screenshot:

BlitzMax: [AUSKLAPPEN]

rem
simple3D Sample 01
endrem


SuperStrict

Framework sedm.simple3d
Import brl.keycodes

Graphics3D(800, 600)

Local cam:Int = CreateCamera()
Local cube:Int = CreateCube()
Local light:Int = CreateLight()

PositionEntity(cube, 0.0, 0.0, 15.0)
PositionEntity(light, -25.0, 25.0, -25.0)
PositionEntity(cam, 0.0, 0.0, -15.0)

LightColor(light, 1.0, 0.0, 0.0)

Local mx:Float = GetMouseX()
Local my:Float = GetMouseY()
Local lastFPS:Int = 0

Repeat
Local fps:Int = GetFPS()
Local nmx:Float = GetMouseX()
Local nmy:Float = GetMouseY()

If nmx <> mx Or nmy <> my Or lastFPS <> fps
WindowTitle("simple3D - " + String(Int(nmx)) + ", " + String(Int(nmy)) + " - " + String(fps) + " Bilder pro Sekunde")
mx = nmx
my = nmy
lastFPS = fps
End If

TurnEntity(cube, 0.01, 0.01, 0.01)
If Not RenderWorld() Then Exit
Until isKeyDown(KEY_ESCAPE)

End


user posted image


Gehe zu Seite Zurück  1, 2, 3 ... 11, 12, 13, 14, 15  Weiter