LSD (3D Visualizer mit OpenGl und BASS)

  • Aber nicht in Version 2.

    Code
    [autoit]


    #include "GlPluginUtils.au3"
    #include <Bass.au3>
    #include <BassConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    ;minx

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

    ; BEGIN CHANGING --------------------
    $AntiAliasing = 15 ; |
    $CamSpeed = 1 ; |
    $BallTrans = .5 ; |
    $BarTrans = .7 ; |
    $Balls = 350 ; |
    $BallInitSize = .3 ; |
    $RoomPlusMinus = 1000 ; | 300
    ; STOP CHANGING ---------------------

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

    ;HotKeySet("{ESC}", "_end")

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

    _BASS_Startup("Bass.dll")
    _BASS_Init($BASS_DEVICE_NOSPEAKER, 1, 44100, "NULL")
    $hStream = _BASS_StreamCreateFile(False, FileOpenDialog('Music', '', 'MP3 (*.mp3;*.wav)'), 0, 0, $BASS_SAMPLE_FLOAT)
    _BASS_ChannelPlay($hStream, 0)
    _BASS_ChannelSetAttribute($hStream, $BASS_ATTRIB_VOL, 1)
    Dim $Bars[2]
    Dim $Spheres[$Balls]
    AutoItSetOption( "TrayIconHide", 1 )
    $mGui = GUICreate("minx' 3D Visualizer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetState()
    EmbedGlWindow($mGui, @DesktopWidth, @DesktopHeight, 0, 0 )
    SetClearColor( 0.1, 0.1, 0.1 )
    CreateLight( 0, 600, 1000, 600 )
    SetLightAmbient( 0, 0.1, 0.3, 0.2 )
    SetLightDiffuse( 0, 0.7, 0.7, 0.7 )
    SetLightSpecular( 0, 0, 0, 0 )
    For $i = 0 To 1
    $Bars[$i] = ObjectCreate( )
    $Box = AddCube($Bars[$i], 30, 30, 30, Random(0,1), Random(0,1), Random(0,1), $BarTrans)
    ;ObjectScale( $Cube1, 1, 1, 1 )
    ObjectTranslate($Bars[$i], 30*$i, -40, 0 )
    SetPrint($Bars[$i])
    Next
    For $i = 0 To $Balls -1
    $Spheres[$i] = ObjectCreate( )
    $Box = AddSphere($Spheres[$i], Random(-$RoomPlusMinus, $RoomPlusMinus,1), Random(-$RoomPlusMinus, $RoomPlusMinus,1), Random(-$RoomPlusMinus, $RoomPlusMinus,1), 15, $AntiAliasing, $AntiAliasing, Random(0,1), Random(0,1), Random(0,1), $BallTrans)
    SetPrint($Spheres[$i])
    Next
    $z = 0
    $Z_min = 1
    SetCamera(0, 0, 300, 0, 30, 0 )
    Opt( "WinTitleMatchMode", 3 )

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

    While GUIGetMsg() <> -3
    $Z -= $Z_min
    If $Z = -400 Then
    $Z_min = -$CamSpeed
    ElseIf $z = 400 Then
    $Z_min = $CamSpeed
    EndIf
    SetCamera($Z, 0, 400, 0, 0, 0 )
    If _BASS_ChannelIsActive($hStream) = $BASS_ACTIVE_PLAYING Then
    Local $iLevel = _BASS_ChannelGetLevel($hStream)
    Local $nLeft = _BASS_LoWord($iLevel) / 32768
    Local $nRight = _BASS_HiWord($iLevel) / 32768
    $Cross = ($nLeft+$nRight)/2
    ObjectScale($Bars[0], 1, $nLeft*5,1 )
    ObjectScale($Bars[1], 1, $nRight*5,1)
    For $i = 0 To $Balls -1
    $Const = $BallInitSize+$Cross
    ObjectScale($Spheres[$i], $Const, $Const, $Const)
    Next
    SetClearColor( $Cross, $Cross, $Cross )
    ElseIf WinExists("minx' 3D Visualizer") = 0 Then
    _BASS_Free()
    Exit
    Else
    _BASS_Free()
    Exit
    EndIf
    Sleep(10)
    SceneDraw( )
    Wend
    _BASS_Free()

    [/autoit]


    ;)

    lg chess

  • hmm... ich bekomme dauernd die Fehlermeldung "GLUT: Fatal Error in (unamed): failed to create OpenGL rendering context."

  • Dann stimmt da was mit deinem PC nicht. Manchmal funktioniert Glut32 nicht bei Win7, oder bei 64Bit. However, dagegen kann ich nichts tun ;) :(


    //EDIT: Wenn das in der Console steht ist das egal, das ist "normal" :D

  • Etwas mehr Infos bitte.

    Es sollte ein Error dauernd in der Console erscheinen, das Skript sollte trotzdem laufen, daher meine Anmerkung: Grottiges T2. Vista wird sowieso nicht unterstützt (jedenfalls bei meinen Tests). Ich bemühe mich in der nächsten Zeit mal um einen ordentlichen Wrapper.

    Wann, wo und wie kommt bei dir dieser Error? Bist du in einer VBox? Hardwarebeschleunigung an?

  • Ich starte einfach das Script in Scite. Wähle dann das Lied aus. Und dann halbe Sekunde später kommt die Meldung und das Script beendet sich. Bei EmbedGlWindow steigt er aus.

  • @m-obi
    hast du OpenGl installiert? IdR ist OpenGl mit dem BS mitinstalliert, allerdings brauchst du Treiber für deine Hardware!

    minx,
    viel zu wenige Bälle. kein drehen und wirbeln, wie soll einem denn da schlecht werden...

    (Ironiemodus OFF)
    klasse Script :thumbup: , leider bekomme ich nach ca. 30 sec Zusehen schon Ausfalllerscheinungen....also eher was für den "Demo"-Bereich!

  • Kannst du bitte Ausfallerscheinung neu definieren ;) ? Aber sonst danke :thumbup:

    Also ich starte mit den schlechtesten Voraussetzungen: McBook Air i7 mit 1.6GHz und Windows, mit dem Skript in VBox ohne 3D-Beschlaunigung auf ner Intel HD mit VBox Graphic Tunnel. Also eigentlich dürfte da nichtt laggen :D

  • Lad dir dochmal folgende Dlls:

    - glut32
    - glaux
    - glu(32)

    Dann registriere sie ordnungsgemäß im System (regsvr32 /Pfad/Zur.dll). Wenns einen Error mit der Registrierung gibt, dann geht es nicht.