Kann man image dynamisch rotieren lassen, vllt. mit Property?

  • Ich beiße mir gerade die Zähne aus.

    Kann man ein Image individuell im winkel verdrehen. Abhängig von einem Property wäre cool.
    Eine Animation bekomme ich hin, aber die kann man wohl nicht verändern.

    Hintergrund meiner Frage ist, ich möchte eine Art Tacho für ein Addon realisieren.
    Bekomme alle 2 Sekunden einen Geschwindigkeitswert. Umrechnen auf Winkel und Property setzen ist ja kein Problem.
    Nur die Visualisierung scheint mir schwierig.
    Für jeden Winkel möchte ich nicht unbedingt eine Grafik erstellen.

    Habt ihr vllt. eine einfache Lösung?

  • So gesehen könntest du auch 1 Image nehmen und das jeweils gedreht darstellen.
    Der visiblecontrol würde dann immer mit dem Context des Wertes vernküpft.
    Ist aber auch nicht weniger Arbeit. Der Codeblock ist genausogroß, vermute ich.
    Wie würdest du denn die property mit einzelnen Grafiken verbinden?

  • ich schreibe in das property den kompletten dateipfad rein.
    hab das schon für meine pdc anzeige so gelöst.

    bin grad dabei mit paint shop pro die zeiger für jedes grad zu erstellen.

    nach 180° hab ich jetzt mal google bemüht, und man kann es tatsächlich über ein script lösen, was durch zufall auch noch python ist. :D

  • wenn man ein richtiges window mit python im addon programmiert, kann man das auf false setzen. ob das auch in kodi geht, weiß ich nicht.
    ggf macht es das autom. wenn man multiimage nimmt.
    ich brauch es halt als popup und da muss es über die skin gehen. weil es sonst probleme mit dem weiterleiten der actions gibt.

    edit:
    mit dem script geht das super geil :D

  • hab ich ähnlich gemacht - über vektorprogramm wie illustrator als Erstellungsprogramm ist es sogar über Bordmittel ohne script ein leichtes.
    Dort kann man jegliches images über duplizieren und rotieren Punktgenau drehen und die Pfade dann weiterreichen an ein Grafikprogramm
    falls man dort Schatten oder ähnliches braucht was über vektoren nicht so einfach ist.

    Geht wesentlich schneller als animation auszuknobeln und speziell bei einer Uhr wären das ja recht viele imagecontrols da sich ja 3 zeiger bewegen..

    Die Thumbs eines skins verwenden eigentlich soweit mir Bekann ist nicht von Kodi gecacht. Die weden beim Window laden in den Backgroundloader
    geladen. Aus diesem Grund gehen auch manche includes per condition nicht (da dort auch die includes geprüft und nach condition geladen werden).
    Läd Kodi ein neues Fenster werden die alten texturen geprüft aus dem vorherigen geprüft und bleiben im loader falls sie weiterverwendet werden müssen.
    Der Rest fliegt raus - das ist im Prinzip der chache in dem Fall.

    Zudem klappt es so per VAR mit dem Imagepfad drin sogar wenn man mehrere verschiedene Uhren will relativ problemlos.

    Aber ein multiimage brauchst so eigentlich nicht - das würde ja zeitgesteuert das image selber wechseln.
    Außer du gibst immer gleich Gas;) bzw. die uhr wird immer mit deselben startzeit der Anzeige eingeblendet..
    Aber schon das es hinbekommen hast - die dreherei kann in grafikprogrammen echt tricky sein ;)

    Grüße

  • du meinst den texture-pfad als variable?

    hey,

    genau, musst ja..
    multiimage control wechseln ja die texture automatisch nach einer voreingestellten zeit - für dein vorhaben geht man eigentlich so vor das man eine image texture entweder mit sich ändernden Grafiken eines Systemwertes füllt, oder mit eigenen per variable definierten..

    Im Fall der Uhr hab ichs so gemacht:

    Pfad wird hier sogar nach setting noch geteilt für zweierlei Uhren.. Mit dieser $VAR[Cycleclocksz] füllst du dann deine Texture..

    Code
    <variable name="CycleClockPath">
    	<value condition="Skin.HasSetting(EnableVintageOverlay)">clock/vintage/</value>
    	<value condition="!Skin.HasSetting(EnableVintageOverlay)">clock/cycle/</value>
    </variable>
    <variable name="Cycleclocksz">
    	<value condition="[String.IsEqual(System.Time(hh),12) | String.IsEqual(System.Time(hh),00)] + [String.IsEqual(System.Time(mm),00) | String.IsEqual(System.Time(mm),01) | String.IsEqual(System.Time(mm),02) | String.IsEqual(System.Time(mm),03) | String.IsEqual(System.Time(mm),04) | String.IsEqual(System.Time(mm),05) | String.IsEqual(System.Time(mm),06) | String.IsEqual(System.Time(mm),07) | String.IsEqual(System.Time(mm),08) | String.IsEqual(System.Time(mm),09) | String.IsEqual(System.Time(mm),10) | String.IsEqual(System.Time(mm),11) | String.IsEqual(System.Time(mm),12)]">$VAR[CycleClockPath]clocksz00.png</value>


    Falls es ein Systemwert ist (oder du z.B eine Art Progress Info draus machen kannst per script) macht man das mit der pfadangabe:
    In dem Fall wirft z.B. das Kodi progresscontroll den Fortschrittsbalken aus mit einem wert in Prozent, die grafiken liegen alle im skinverzeichnis progress/p(werte1-100).png
    Da braucht es dann keine VAR mit 100 zeilen dafür.

    Code
    <control type="progress" id="20">
    	<include>HiddenControl</include>
    	<info>System.Progressbar</info>
    </control>
    <control type="image">
    	<width>100</width>
    	<height>100</height>
    	<texture colordiffuse="$VAR[PrimaryCol]">progress/p$INFO[Control.GetLabel(20)].png</texture>
    </control>

    Das würde ich zuerst mal testen.. Wenn dein Property eh schon von selbst aktualsiert wird mit dem aktuellen wert, reicht das eigentlich schon mit einem Image ohne VAR.

    Ich bin mir nur nicht sicher ob sich das dann auch aktualsiert oder das nur per VAR geht die ja ständig selbst aktualisert werden..

    Sonst brauchst wirklich eine VAR für jeden wert und müsstest dann als value dein Property abfragen.

    Grüße

  • ja genau, ich schreib den pfad direkt ins property. da brauch ich die variable nicht.
    multiimage ist halt cool, weil man da nen übergang machen kann. dann faded es leicht.
    muss nämlich kein ordner sein. timeperimage wird dann einfach ignoriert.

  • umso besser;).. Kommt natürlich aufs aussehen an, bei uhren und progressgeschichten wie volume gehts oft so schnell das dort ein fade eher stört wenn sekündlich eine neue grafik erscheint.
    Das kann natürlich sein das es bei dir so besser wirkt - zur Not kannst es ja immer noch ändern falls da ein "nachziehen" passiert.

    Ich dachte immer wenns kein pfad ist würde eher die fadetime ignoriert werden da es ja keine zwei Bilder geben kann so gesehen,
    und bei fadetime ja eigentlich das zweite über das erste geblendet wird (alt raus, neu rein), also quasi bei 150 ms. die Bilder wechseln bei dir.
    Aber gut zu wissen, wieder was gelernt :) .

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!