Irrlicht.au3 - Aufruf integriert in ein anderes Fenster

  • Hallo zusammen,

    ich hab schon in mehreren Foren nach einer Lösung/Hilfe gesucht, bis jetzt hab ich aber leider noch nichts gefunden. Evtl. könnt ihr mir weiterhelfen.

    Kann man das Irrlicht-Fenster integriert/embedded in einem anderen Fenster aufrufen?

    Hier ist ein Beispiel. Geht das ganze auch in Autoit?

    http://irrlicht.sourceforge.net/docu/example014.html

    Danke.

    vg

    Einmal editiert, zuletzt von bander (24. Oktober 2012 um 08:21)

  • Hi,
    die einzigste Möglichkeit die ich kenne ist das man die Irrlicht-GUI in eine Standart-GUI als Child integrieren kann... Das sieht dann aber leider etwas anders aus als in deinem Beispiel, da man eben noch die GUI Sachen von der Irrlicht-GUI sehen kann.

    Grüsse!

  • Im Prinzip kann Irrlicht in allen Windows-Standart-GUIs als Child eingebunden werden, also auch in AutoIt und ich habe das auch schonmal testweise gemacht. Damals habe ich aber nicht die Irrlicht-UDF verwendet, sondern eine eigene DLL geschrieben.

    Bei der Irrlicht-UDF scheint die Funktion aber nicht vorhanden zu sein.

  • Hallo,

    ok danke für eure Hilfe. Dann werde ich das ganze eben anderes (Child) aufbauen.

    Ich hätte noch eine andere Frage und will nicht extra ein neues Thema aufmachen.

    Wenn ich ein node mit _IrrRemoveNode($CenterNode) entferne, dann stürtzt Autoit ab. Ist da mehr zu beachten/durchzuführen als dieser eine Befehl?

    Danke

  • Ich Denke das du $CenterNode entweder nicht Global Deklariert hast oder das das Node Schlichtweg nicht unter diesem Namen erstellt wurde...
    ...sagt zumindest meine Glaskugel :)

    Etwas Source währe hilfreich - so muß man Raten.

    Grüsse!

  • Bei der C++ Version vo Irrlicht wird dies unterstützt. Dasselbe für den Wrapper für AutoIt von A. Percy. In Au3Irrlicht2 gibts die funktion jedoch nicht

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Hallo,

    das Beispiel (_IrrRemoveNode) das in der Irrlicht-Hilfe aufgeführt ist führt bei mir schon zum Absturz?

    [autoit]


    #include "au3Irrlicht2.au3"

    [/autoit][autoit][/autoit][autoit]

    _IrrStart()

    [/autoit][autoit][/autoit][autoit]

    local $camera = _IrrAddCamera(2,2,2, 0,0,0 )

    [/autoit][autoit][/autoit][autoit]

    local $mesh = _IrrGetMesh( ".\media\capsuleX.obj" )
    local $sceneNode = _IrrAddMeshToScene( $mesh )

    [/autoit][autoit][/autoit][autoit]

    local $texture = _IrrGetTexture(".\media\default_texture.png")
    _IrrSetNodeMaterialTexture( $sceneNode, $texture, 0)
    _IrrSetNodeMaterialFlag( $sceneNode, $IRR_EMF_LIGHTING, $IRR_OFF )

    [/autoit][autoit][/autoit][autoit]

    local $time = TimerInit()
    WHILE _IrrRunning()
    _IrrBeginScene(50, 50, 50)
    _IrrDrawScene()
    _IrrEndScene()

    [/autoit][autoit][/autoit][autoit]

    if $sceneNode <> 0 AND TimerDiff($time) > 3000 then
    _IrrRemoveNode($sceneNode)
    _IrrRemoveTexture($texture) ; no longer needed
    $sceneNode = 0
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEND

    [/autoit][autoit][/autoit][autoit]

    _IrrStop()

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Da dieses Beispiel aus der Hilfe kommt - gehe ich davon aus das sich der Mesh nicht an dem angegeben Pfad befindet!

    Versuche mal folgendes Beispiel:

    [autoit]

    ;~ #include "au3Irrlicht2.au3"
    #include "D:\Projekte\Scripte\au3Irrlicht2\au3Irrlicht2.au3"

    [/autoit][autoit][/autoit][autoit]

    _IrrStart()

    [/autoit][autoit][/autoit][autoit]

    local $camera = _IrrAddCamera(2,2,2, 0,0,0 )

    [/autoit][autoit][/autoit][autoit]

    local $sceneNode = _IrrAddCubeSceneNode(1)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    local $time = TimerInit()
    WHILE _IrrRunning()
    _IrrBeginScene(50, 50, 50)
    _IrrDrawScene()
    _IrrEndScene()

    [/autoit][autoit][/autoit][autoit]

    if $sceneNode <> 0 AND TimerDiff($time) > 3000 then
    _IrrRemoveNode($sceneNode)
    $sceneNode = 0
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEND

    [/autoit][autoit][/autoit][autoit]

    _IrrStop()

    [/autoit]


    Da sollte alles Funktionieren :D
    Grüsse!

  • Techmix: Danke, funktioniert. Hab den Fehler auch schon gefunden. Wenn man "If _IsPressed("51") AND $sceneNode <> 0 Then " weglässt, dann führt es zum Absturz.


    [autoit]


    ;~ #include "au3Irrlicht2.au3"
    #include "..\au3Irrlicht2.au3"
    #include <Misc.au3>
    _IrrStart()
    local $camera = _IrrAddCamera(2,2,2, 0,0,0 )
    local $sceneNode = _IrrAddCubeSceneNode(1)

    [/autoit][autoit][/autoit][autoit]

    local $time = TimerInit()
    WHILE _IrrRunning()
    _IrrBeginScene(50, 50, 50)
    _IrrDrawScene()
    _IrrEndScene()
    #cs
    if $sceneNode <> 0 AND TimerDiff($time) > 3000 then
    _IrrRemoveNode($sceneNode)
    $sceneNode = 0
    EndIf
    #ce
    If _IsPressed("51") AND $sceneNode <> 0 Then
    _IrrRemoveNode($sceneNode)
    $sceneNode = 0
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEND
    _IrrStop()

    [/autoit]