Irrlicht vorbereitetes Objekt im Kreis drehen lassen

  • Ich will ja nicht sagen "Ohne Gegenleistung" ein riesiges Dankeschön und meine Anerkennung ist ja nicht nichts,
    aber ich denke das ist für euch sowieso bloss ein 5min-script.

    Also was ich brauche ist ein Script, womit ich ein bereits vorbereitetes 3D-Modell (Format lässt sich anpassen) in Irrlicht um die eigene Achse drehen lassen kann also wie im Bildschirmschoner "3D-Text".
    Alternativ könnte ich das ganze auch als .gif vorbereiten aber dann bräucht ich ein Script, womit man .gifs im Vollbildmodus anzeigen lassen kann.

    Übrigends: Ja, ich weiss ich sollte das besser selbst proggen aber leider ist um den ganzen Kram zu lernen die Zeit zu knapp und ich hab wirklich 0 Ahnung.

    Freue mich auf eure Antworten

    Bild1: Ich beim debuggen

  • Ist nicht schwer...

    Automatische Drehung so mit einer vorgegebenen Geschwindigkeit? Kann man einfach in Ini-Form lösen, also komplett ohne GUI-Gedöns.

    Vielleicht Proge ich dir das, ich überlege mir das bis Heute Abend und meld mich dann wieder!

    Grüsse!

  • Moin!
    Also gestern habe ich es nicht mehr geschafft, kann mich aber die nächsten Tage damit beschäftigen! Also ich werde es mit einer ini ansteuern, worin das Model sowie die Rotaionsbewegung und Geschwindigkeit angegeben sind. Soll sich das Model auch noch über den Bildschirm bewegen?

    Grüsse!

  • Moinsen...ist jetzt nicht unbedingt notwendig aber wenn es dir nichts ausmacht gerne (aber dann höchstens so eine art beamen von einem zum anderen Punkt, wie beim Windows-XP Logo Screensaver) :D wie muss ich das Modell denn für deine Version vorbereitet haben (ich hoffe das krieg ich so hin, bin im professionellen modellieren noch nicht sooo erfahren ;) )?

    Bild1: Ich beim debuggen

    Einmal editiert, zuletzt von General Kaboom (23. Dezember 2011 um 09:06)

  • Ich habe Fertich :D

    Im Prinzip hat es nur einige Stunden gedauert, weil ich das Script aus einem alten Projekt von mir gebastelt habe. Es hat einige 'Sonderfunktionen' die du über eine Ini steuern kannst. In dem Downloadlink ist auch eine Beispieldatei enthalten!

    Anleitung


    Du kannst eine Ini-Datei Starten, indem du diese über die 'GK.exe' ziehst, oder diese per CMD aufrufen 'GK.exe ini.ini', oder die Beispiel-Ini einfach durch einen normalen Programmstart laden.

    Code
    [Settings]
    UseFullScreen=1
    ResX=
    ResY=


    Ist für die Auflösung zuständig. Bei Angabe von 'UseFullScreen' braucht es keine Angabe der Auflösung.

    Code
    [Model]
    Model=Data\Beispiel\4096.irrmesh
    MainTxt=Data\Beispiel\earth.jpg
    FxTxt=ASM
    Size=35


    Bei 'Model' musst du das 3D-Model angeben, ebenso bei 'MainTxt'.
    'Size=50' bedeutet einen Füllgrad (Höhe) von 100% (Da 50% Durchmesser == 100% Radius).
    Wenn du bei 'FxTxt' ASM angibst erstellt GK mit der Assemblerfunktion '_ASM_BitmapBnW' von Seubo eine Effekttexture die im weiteren Verwendung findet. Diese kannst du aber natürlich auch angeben, dann wird keine Erstellt.

    Code
    [BackGround]
    UseImage=
    UseScreenshot=1


    Wenn du 'UseScreenshot' mit 1 bestätigt, erstellt GK ein Hintergrundbild des derzeigtigen Monitorbildes und verwendet dieses als Hintergrundpic.
    Dieses kannst du aber auch direkt mit 'UseImage' angeben.
    Lässt du beide Felder frei, wird kein Backgroundpic erstellt und gesetzt.

    Code
    [Animation]
    TurnSpeedX=1
    TurnSpeedY=0


    Hier gibst du die Drehgeschwindigkeit der X und Y Achse an. Die Geschwindigkeiten musst du ausloten.

    Code
    [Effect]
    effekt_scale=6
    bump=2
    solid=
    lightmap=
    detailmap=
    spheremap=
    reflect=


    Das Kernstück! Hier kannst du die allgemeinen Irrlicht Effeke ansteuern:
    'effekt_scale' >= 1 Gibt den Grad des Effektes an; Kann bei einigen Effekten zu Problemen führen, dann die 0 versuchen.
    'bump' Es gibt 1 (A solid normal map renderer) und 2 (more realistic providing virtual displacement of the surface)
    'solid' 1 (2 blended textures using vertex alpha value)
    'lightmap' 1 - 4 (lightmap, Add, M2, M4)
    'detailmap' 1 (a different scale adds and subtracts from the color to add detail)
    'spheremap' 1 (makes the material appear reflective)
    'reflect' 1 (a reflective material blended with a color texture)

    Code
    [Light]
    main_light=EEBBAA
    xtra_light=445599
    ambient_light=
    diffuse_light=


    Die Lichtsteuerung der Effekte.
    'main_light' RGB-HEX Lichtquelle.
    'xtra_light' RGB-HEX zusatz Lichtquelle.
    'ambient_light' RGB-HEX Ambient-Farbe.
    'diffuse_light' RGB-HEX Diffuse-Farbe.

    Source
    [autoit]

    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Version=Beta
    #AutoIt3Wrapper_Res_Field=by|Techmix
    #RequireAdmin
    #include <Array.au3>
    #include <GDIPlus.au3>
    #include <GDIPlusConstants.au3>
    #include <WinAPI.au3>
    #include "Data\au3Irrlicht2.au3"
    #include <ScreenCapture.au3>

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

    #cs ================================================================================================================================
    ==== ChangeLog =====================================================================================================================
    ====================================================================================================================================

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

    AutoIt Version: 3.3.7.22 (beta)
    Skript: GK.au3
    Author: Techmix

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

    ## --------------------------------------------------------------------------------------------------------------------------------

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

    Steuerbar durch Config-Files.

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

    ## --------------------------------------------------------------------------------------------------------------------------------

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

    V0.10:
    Erststart

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

    ## ================================================================================================================================
    #ce

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

    #Region -GK Variablen--------------------------------------------------------------------------------------------------------

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

    Global $s_Version="V0.10", $s_sizeX, $s_sizeY, $s_BsizeX, $s_BsizeY
    Global $s_Config=@ScriptDir&"\GK.ini", $a_Config_Model[1], $a_Config_Animation[1], $a_Config_Effect[1], $a_Config_BackGround[1], $a_Config_Settings[1], $a_Config_Light[1]
    Global $irr_MainTxt, $irr_FxTxt, $irr_Mesh, $irr_Node, $irr_Camera, $irr_BackTxt, $irr_Light, $irr_Light2

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

    #EndRegion -IrrPlanet Variablen-----------------------------------------------------------------------------------------------------

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

    if @Compiled Then
    ; CMD Modus
    if $CmdLine[0] >= 1 Then
    for $i = 1 to $CmdLine[0]
    $s_Config = $CmdLine[$i]
    if FileExists($s_Config) then ExitLoop
    Next
    EndIf
    EndIf
    HotKeySet("{ESC}", "_Exit")
    _InitGFX($s_Config)
    _MainLoop()

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

    Func _MainLoop()
    while _IrrRunning()
    _IrrBeginSceneAdvanced(_IrrMakeARGB(0, 0, 0, 0), $IRR_ON, $IRR_ON)
    _IrrDraw2DImageElementStretch($irr_BackTxt, 0,0,$s_sizeX,$s_sizeY, 0, 0, $s_BsizeX, $s_BsizeY, $IRR_USE_ALPHA)
    _IrrDrawScene()
    _IrrEndScene()
    WEnd
    EndFunc

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

    Func _InitGFX($_Config)
    _Load_Config($_Config)
    Local $i_FullScreen = $IRR_WINDOWED
    Local $s_Model = _Get_Data($a_Config_Model, "Model"), _
    $s_MainTxt = _Get_Data($a_Config_Model, "MainTxt"), _
    $s_FxTxt = _Get_Data($a_Config_Model, "FxTxt"), _
    $s_Size = _Get_Data($a_Config_Model, "Size")
    Local $s_TurnSpeedX = _Get_Data($a_Config_Animation, "TurnSpeedX"), _
    $s_TurnSpeedY = _Get_Data($a_Config_Animation, "TurnSpeedY"), _
    $s_UseMovment = _Get_Data($a_Config_Animation, "UseMovment"), _
    $s_BaseMoveAxis = _Get_Data($a_Config_Animation, "BaseMoveAxis")
    Local $s_UseImage = _Get_Data($a_Config_BackGround, "UseImage"), _
    $s_UseScreenshot= _Get_Data($a_Config_BackGround, "UseScreenshot")
    Local $s_FullScreen = _Get_Data($a_Config_Settings, "UseFullScreen")
    $s_sizeX = _Get_Data($a_Config_Settings, "ResX")
    $s_sizeY = _Get_Data($a_Config_Settings, "ResY")
    Local $s_Bump_scale = _Get_Data($a_Config_Effect, "effekt_scale"), _
    $s_Bump = _Get_Data($a_Config_Effect, "bump"), _
    $s_Solid = _Get_Data($a_Config_Effect, "solid"), _
    $s_Lightmap = _Get_Data($a_Config_Effect, "lightmap"), _
    $s_Detailmap = _Get_Data($a_Config_Effect, "detailmap"), _
    $s_Spheremap = _Get_Data($a_Config_Effect, "spheremap"), _
    $s_Reflect = _Get_Data($a_Config_Effect, "reflect")
    Local $s_MainLight = _Get_Data($a_Config_Light, "main_light"), _
    $s_XtraLight = _Get_Data($a_Config_Light, "xtra_light"), _
    $s_AmbientLight = _Get_Data($a_Config_Light, "ambient_light"), _
    $s_DiffuseLight = _Get_Data($a_Config_Light, "diffuse_light")
    Local $irr_AmbientLight, $irr_DiffuseLight

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

    ; Background erstellen
    if $s_UseScreenshot <> "" and $s_UseScreenshot <> 0 then
    dim $tmp, $a_effect_map=StringSplit($s_MainTxt,"\",1)
    for $i=1 to $a_effect_map[0]-1
    $tmp&=$a_effect_map[$i]&"\"
    Next
    $s_UseImage=$tmp&"BACK.jpg"
    _ScreenCapture_Capture($s_UseImage)
    EndIf

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

    ; Start Irrlicht
    if $s_FullScreen = 1 Then
    $s_sizeX = @DesktopWidth
    $s_sizeY = @DesktopHeight
    $i_FullScreen = $IRR_FULLSCREEN
    EndIf
    $_GUI=_IrrStartAdvanced($IRR_EDT_DIRECT3D9, $s_sizeX, $s_sizeY, $IRR_BITS_PER_PIXEL_32, _
    $i_FullScreen, $IRR_SHADOWS, $IRR_IGNORE_EVENTS, $IRR_VERTICAL_SYNC_ON, _
    0, $IRR_ON, 16, $IRR_ON)
    $_GUI_txt="GK " & $s_Version
    _IrrSetWindowCaption($_GUI_txt)
    _IrrHideMouse()

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

    ; Kamera Setzen
    $irr_Camera = _IrrAddCamera(0,0,-25, 0,0,0 )

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

    ; Background Laden
    if $s_UseImage <> "" then
    $irr_BackTxt = _IrrGetImage($s_UseImage)
    Local $aInfo = _IrrGetImageInformation($irr_BackTxt)
    dim $s_BsizeX=$aInfo[0], $s_BsizeY=$aInfo[1]
    _IrrRemoveImage($irr_BackTxt)
    $irr_BackTxt = _IrrGetTexture($s_UseImage)
    EndIf

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

    ; Mesh Laden
    $irr_Mesh = _IrrGetMesh($s_Model)
    $irr_MainTxt = _IrrGetTexture($s_MainTxt)
    if $s_Size = "" or $s_Size = 0 then $s_Size = 50
    $s_Size = 2.92 / 50 * $s_Size
    _IrrScaleMesh($irr_Mesh, $s_Size)
    $irr_Node = _IrrAddStaticMeshForNormalMappingToScene($irr_Mesh)
    _IrrSetNodeMaterialFlag($irr_Node, $IRR_EMF_LIGHTING, $IRR_On)
    _IrrSetNodeMaterialFlag($irr_Node, $IRR_EMF_BILINEAR_FILTER, $IRR_ON)
    _IrrSetNodeMaterialFlag($irr_Node, $IRR_EMF_TRILINEAR_FILTER, $IRR_ON)
    _IrrSetNodeMaterialFlag($irr_Node, $IRR_EMF_ANISOTROPIC_FILTER, $IRR_ON)
    _IrrSetNodeMaterialTexture($irr_Node, $irr_MainTxt, 0)

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

    ; Effekt Texture vorbereiten
    if $s_FxTxt = "ASM" or $s_FxTxt = "" Then
    dim $s_FxTxt="", $a_effect_map=StringSplit($s_MainTxt,"\",1)
    for $i=1 to $a_effect_map[0]-1
    $s_FxTxt&=$a_effect_map[$i]&"\"
    Next
    dim $s_FxTxt_Bmp=$s_FxTxt&"BUMP.bmp", $s_FxTxt_Jpg=$s_FxTxt&"BUMP.jpg", $s_FxTxt=$s_FxTxt_Jpg
    _ASM_BitmapBnW($s_MainTxt, Random(88,98,1), 0, $s_FxTxt_Bmp)
    _ConvertBMP2JPG($s_FxTxt_Bmp)
    FileDelete($s_FxTxt_Bmp)
    EndIf
    $irr_FxTxt = _IrrGetTexture($s_FxTxt)
    if $s_Bump_scale <> "" and $s_Bump_scale <> "0" then _IrrMakeNormalMapTexture($irr_FxTxt, Number($s_Bump_scale))
    _IrrSetNodeMaterialTexture($irr_Node, $irr_FxTxt, 1)

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

    ; Mesh Drehung
    _IrrAddRotationAnimator($irr_Node, ($s_TurnSpeedY/100), ($s_TurnSpeedX/100), 0)

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

    ; Grafik-Effekte
    if $s_Bump <> "" and $s_Bump <> "0" then
    if $s_Bump = "1" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_NORMAL_MAP_SOLID)
    if $s_Bump = "2" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_PARALLAX_MAP_SOLID)
    EndIf
    if $s_Solid <> "" and $s_Solid <> "0" then
    _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_SOLID_2_LAYER)
    EndIf
    if $s_Lightmap <> "" and $s_Lightmap <> "0" then
    if $s_Lightmap = "1" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_LIGHTMAP)
    if $s_Lightmap = "2" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_LIGHTMAP_ADD)
    if $s_Lightmap = "3" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_LIGHTMAP_M2)
    if $s_Lightmap = "4" then _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_LIGHTMAP_M4)
    EndIf
    if $s_Detailmap <> "" and $s_Detailmap <> "0" then
    _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_DETAIL_MAP)
    EndIf
    if $s_Spheremap <> "" and $s_Spheremap <> "0" then
    _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_SPHERE_MAP)
    EndIf
    if $s_Reflect <> "" and $s_Reflect <> "0" then
    _IrrSetNodeMaterialType($irr_Node, $IRR_EMT_REFLECTION_2_LAYER)
    EndIf

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

    dim $i_ColSplit=0.00394
    ; Lichtfarbe
    dim $a_LightColor[3]
    if $s_MainLight <> "" Then
    $s_LightColor=StringReplace($s_MainLight,"0x","")
    $a_LightColor[0] = $i_ColSplit*Dec(stringmid($s_LightColor, 1, 2))
    $a_LightColor[1] = $i_ColSplit*Dec(stringmid($s_LightColor, 3, 2))
    $a_LightColor[2] = $i_ColSplit*Dec(stringmid($s_LightColor, 5, 2))
    $a_LightColor[0] = Number(StringLeft($a_LightColor[0], 3))
    $a_LightColor[1] = Number(StringLeft($a_LightColor[1], 3))
    $a_LightColor[2] = Number(StringLeft($a_LightColor[2], 3))
    for $ii = 0 to UBound($a_LightColor)-1
    if $a_LightColor[$ii]="" then $a_LightColor[$ii]=0
    Next
    Else
    $a_LightColor[0] = 1
    $a_LightColor[1] = 1
    $a_LightColor[2] = 1
    EndIf
    $irr_Light = _IrrAddLight($IRR_NO_PARENT, 0,0,-240, $a_LightColor[0],$a_LightColor[1],$a_LightColor[2], 1000)

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

    ; Zusatzlicht
    if $s_XtraLight <> "" Then
    dim $a_XtraLightColor[3]
    $s_LightColor=StringReplace($s_XtraLight,"0x","")
    $a_XtraLightColor[0] = $i_ColSplit*Dec(stringmid($s_LightColor, 1, 2))
    $a_XtraLightColor[1] = $i_ColSplit*Dec(stringmid($s_LightColor, 3, 2))
    $a_XtraLightColor[2] = $i_ColSplit*Dec(stringmid($s_LightColor, 5, 2))
    $a_XtraLightColor[0] = Number(StringLeft($a_XtraLightColor[0], 3))
    $a_XtraLightColor[1] = Number(StringLeft($a_XtraLightColor[1], 3))
    $a_XtraLightColor[2] = Number(StringLeft($a_XtraLightColor[2], 3))
    for $ii = 0 to UBound($a_XtraLightColor)-1
    if $a_XtraLightColor[$ii]="" then $a_XtraLightColor[$ii]=0
    Next
    $irr_Light2 = _IrrAddLight($IRR_NO_PARENT, 0,0,-240, $a_XtraLightColor[0],$a_XtraLightColor[1],$a_XtraLightColor[2], 1000)
    EndIf

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

    ; Ambient Light
    if $s_AmbientLight <> "" Then
    dim $a_AmbientColor[3]
    $s_LightColor=StringReplace($s_AmbientLight,"0x","")
    $a_AmbientColor[0] = $i_ColSplit*Dec(stringmid($s_LightColor, 1, 2))
    $a_AmbientColor[1] = $i_ColSplit*Dec(stringmid($s_LightColor, 3, 2))
    $a_AmbientColor[2] = $i_ColSplit*Dec(stringmid($s_LightColor, 5, 2))
    $a_AmbientColor[0] = Number(StringLeft($a_AmbientColor[0], 3))
    $a_AmbientColor[1] = Number(StringLeft($a_AmbientColor[1], 3))
    $a_AmbientColor[2] = Number(StringLeft($a_AmbientColor[2], 3))
    for $ii = 0 to UBound($a_AmbientColor)-1
    if $a_AmbientColor[$ii]="" then $a_AmbientColor[$ii]=0
    Next
    $irr_AmbientLight = _IrrAddLight($irr_Node, 0,0,0, 1,1,1, 1000)
    _IrrSetLightAmbientColor($irr_AmbientLight, $a_AmbientColor[0],$a_AmbientColor[1],$a_AmbientColor[2])
    EndIf

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

    ; Diffuse Light
    if $s_DiffuseLight <> "" Then
    dim $a_DiffuseColor[3]
    $s_LightColor=StringReplace($s_DiffuseLight,"0x","")
    $a_DiffuseColor[0] = $i_ColSplit*Dec(stringmid($s_LightColor, 1, 2))
    $a_DiffuseColor[1] = $i_ColSplit*Dec(stringmid($s_LightColor, 3, 2))
    $a_DiffuseColor[2] = $i_ColSplit*Dec(stringmid($s_LightColor, 5, 2))
    $a_DiffuseColor[0] = Number(StringLeft($a_DiffuseColor[0], 3))
    $a_DiffuseColor[1] = Number(StringLeft($a_DiffuseColor[1], 3))
    $a_DiffuseColor[2] = Number(StringLeft($a_DiffuseColor[2], 3))
    for $ii = 0 to UBound($a_DiffuseColor)-1
    if $a_DiffuseColor[$ii]="" then $a_DiffuseColor[$ii]=0
    Next
    $irr_DiffuseLight = _IrrAddLight($irr_Node, 0,0,0, 1,1,1, 1000)
    _IrrSetLightDiffuseColor($irr_DiffuseLight, $a_DiffuseColor[0],$a_DiffuseColor[1],$a_DiffuseColor[2])
    EndIf
    EndFunc

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

    Func _Load_Config($sFile)
    $a_Config_Model = IniReadSection($sFile, "Model")
    $a_Config_Animation = IniReadSection($sFile, "Animation")
    $a_Config_Effect = IniReadSection($sFile, "Effect")
    $a_Config_BackGround= IniReadSection($sFile, "BackGround")
    $a_Config_Settings = IniReadSection($sFile, "Settings")
    $a_Config_Light = IniReadSection($sFile, "Light")
    EndFunc
    Func _Get_Data($aCfgArray, $sSearch)
    $i=_ArraySearch($aCfgArray, $sSearch)
    if $i <> -1 then Return $aCfgArray[$i][1]
    Return 0
    EndFunc
    Func _Exit()
    ; Alles Releasen
    _IrrRemoveAllNodes()
    _IrrRemoveTexture($irr_BackTxt)
    _IrrRemoveTexture($irr_MainTxt)
    _IrrRemoveTexture($irr_FxTxt)
    Exit
    EndFunc

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

    Func _ASM_BitmapBnW($vBitmap, $iLight, $iBlackAndWhite = 0, $sOutPath = "")
    ; Diese Funktion habe ich mir aus dem 'Mona-Lisa-V2' Script von Seubo genommen.
    ; Diese hier ist sooo schnell das eine Neu-Programmierung meinerseits keinen Sinn ergibt!
    ; Hoch lebe ASSEMBLER!!
    ;
    ; Schwarzweiß:
    ; _ASM_BitmapBnW(@ScriptDir & "\mona-lisa.jpg", 100, 1, @ScriptDir & "\mona-lisa-sw.bmp")

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

    ; Graustufen: %
    ; _ASM_BitmapBnW(@ScriptDir & "\mona-lisa.jpg", 90, 0, @ScriptDir & "\mona-lisa-bnw.bmp")

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

    _GDIPlus_Startup()
    Local $hBitmap = $vBitmap, $iTimer
    Local $iWidth, $iHeight, $hBitmapData, $Scan, $Stride, $tPixelData, $pPixelStruct
    If Not IsHWnd($vBitmap) Then $hBitmap = _GDIPlus_BitmapCreateFromFile($vBitmap)
    If @error Then Return SetError(1)

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

    $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
    $iHeight = _GDIPlus_ImageGetHeight($hBitmap)

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

    $hBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iWidth, $iHeight, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32RGB)
    $Scan = DllStructGetData($hBitmapData, "Scan0")
    $Stride = DllStructGetData($hBitmapData, "Stride")
    $tPixelData = DllStructCreate("dword[" & (Abs($Stride * $iHeight)) & "]", $Scan)

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

    ;ASM Bytecode aufrufen
    $bytecode = "0x8B7C24048B5424088B5C240CB900000000C1E202575352518B040FBA00000000BB00000000B90000000088C2C1E80888C3C1E80888C18B44240883F800772FB85555000001CB01D3F7E3C1E810BB00000000B3FFC1E30888C3C1E30888C3C1E30888C389D8595A5B5F89040FEB3B89C839C3720289D839C2720289D05089F839C3770289D839C2770289D05B01D8BBDC780000F7E3C1E810595A5B5F3B4424107213C7040FFFFFFF0083C10439D1730EE95FFFFFFFC7040F00000000EBEBC3"

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

    $tCodebuffer = DllStructCreate("byte[" & StringLen($bytecode) / 2 - 1 & "]") ;Speicher für den Bytecode reservieren
    DllStructSetData($tCodebuffer, 1, $bytecode) ;Bytecode in den Speicher schreiben
    $iTimer = TimerInit()
    $Ret = DllCall("user32.dll", "int", "CallWindowProcW", "ptr", DllStructGetPtr($tCodebuffer), "ptr", DllStructGetPtr($tPixelData), "int", $iWidth * $iHeight, "int", $iBlackAndWhite, "int", $iLight);
    If @error Then Return SetError(2)
    $iTimer = TimerDiff($iTimer)

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

    _GDIPlus_BitmapUnlockBits($hBitmap, $hBitmapData)
    If $sOutPath <> "" Then _GDIPlus_ImageSaveToFile($hBitmap, $sOutPath)
    _GDIPlus_Shutdown()
    Return SetError(0, $iTimer, $hBitmap)
    EndFunc
    Func _ConvertBMP2JPG($sFileName)
    ; by eukalyptus
    _GDIPlus_Startup()
    Local $tGUID = _WinAPI_GUIDFromString("{557CF401-1A04-11D3-9A73-0000F81EF32E}")
    Local $pGUID = DllStructGetPtr($tGUID)
    Local $tParams = _GDIPlus_ParamInit(1)
    Local $pParams = DllStructGetPtr($tParams)
    Local $tData = DllStructCreate("int Quality")
    DllStructSetData($tData, "Quality", 90)
    _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($tData))

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

    Local $aResult = DllCall($ghGDIPDll, "int", "GdipLoadImageFromFile", "wstr", $sFileName, "ptr*", 0)
    DllCall($ghGDIPDll, "int", "GdipSaveImageToFile", "handle", $aResult[2], "wstr", StringTrimRight($sFileName, 3) & "jpg", "ptr", $pGUID, "ptr", $pParams)
    DllCall($ghGDIPDll, "int", "GdipDisposeImage", "handle", $aResult[2])
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]
    Ini

    Downloadlink

    Grüsse!

    [EDIT]
    Ach, ganz vergessen - Es ist noch ohne Bewegungsanimationen! Habe ich noch nicht eingebaut, wenn du sie noch willst baue ichsie dir iwan noch ein!

  • Hmm...neues Problem...das Model, welches ich gemacht habe wird total verzogen, habs jetzt als zuerst als .obj eingefügt, hat nicht geklappt und als .dae hab ich s auch schon und sogar nur einen kleinen Teil einzeln anzuzeigen versucht, aber dann wird auch nur die hälfte angezeigt. Übrigends: mein Modell ist aus SketchUp, es ist nur ein Logo und ein Schriftzug wirklich viel und auch nichts kompliziertes, kann es sein das deine Variante mich hasst? ^^ Zuminstest der Globus geht aber ich brauche leider gerade nicht nen Globus sondern meinen Schriftzug. Soll ich dir das Modell mal posten sobald ich wieder zuhause bin?

    Bild1: Ich beim debuggen

  • Jup, mach mal!
    Wenn man bei SketchUp Modelle als .obj exportiert - dann mußte ich sie iwie anders laden...
    Ich schau mir das mal an! Und das es verzogen aussieht, liegt wohl an dem Kameraabstand oder an dem FOV.

    Bis Später!

    [EDIT]
    Du könntest versuchen dein Expotriertes Model z.B. mit Milkshape oder Blender in ein anderes Format zu bringen. .X (DircetX) und .irr (IrrMesh) laufen tadellos. Bei dem .obj Format wird direkt im Model die Textur angegeben und diese braucht dann nicht in Irrlicht Manuell geladen zu werden. Und das kann auch das Problem verursachen...

  • .md2 ist meiner meinung am besten mit Irrlicht kompatibel
    Wenn du nicht weißt wo du eins herbekommst:
    MisfitModel --> .obj imortieren --> md2 exportieren --> fertig..
    In MisfitModel kannst du auch noch eine Textur drauf geben und auch animieren..

    MFG Schnacko

  • Whops...hab gar nicht gemerkt, dass es bereits Antworten dazu gab, sorry. Hab das Problem etwas aus den Augen verloren, weil ich mit einem etwas älteren Programm beschäftigt war...werd heut Abend doch mal das Modell posten, habe es leider gelöscht, aber das kleine Dingens sollte nicht so schwer sein, btw. ich habe da so einen gewissen verdacht warum es nicht geklappt hat, mal sehen ob ich Recht behalte ;)

    P.S. Ich weiss das Thema ist schon alt, sorry Admins/Mods aber das Problem besteht ja noch immer, also vergebt mir dass ich nicht das ganze nochmals abschreiben wollte. :thumbup:

    Bild1: Ich beim debuggen