Antworten auf deine Fragen:
Neues Thema erstellen

Digtaluhr mit XPRESSO

G

Gelöschtes Mitglied 467863

Guest

Hallo zusammen.

Seit einigen Tage versuche ich mich mit Expresso. Jetzt will ich eine Digital-Uhr animieren, so dass die Systemzeit angezeigt wird. Gibt es dafür einen Node. Ich habe nichts passendes gefunden.

smart88
 
Zuletzt bearbeitet von einem Moderator:

scanner

...searching...

AW: Digtaluhr mit XPRESSO

Moin,
müsste mit der Variable "GeGetSysTime()" funktionieren, wenn ich mich recht erinnere.
Ist schon lange her ;)
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Hallo scanner.

Wo finde ich diese Variable? Bin darin noch nicht fit.

Danke für deine Hilfe.
 

scanner

...searching...

AW: Digtaluhr mit XPRESSO

Oha, da musste ich selbst googeln:
Du erstellst Dir ein Coffeenode mit 3 Realausgängen, die du dann z.B. "Sekunden","Minuten" und "Stunden" nennst.
In Coffee die Funktion "GeGetSysTime" ansprechen, die Dir die Systemzeit liefert.
Das Coffee-Skript dazu:

var Time = GeGetSysTime();
Stunden = 30*(Modulo(Time->hour,12))+0.5*Time->minute;
Minuten = Time->minute * 6;
Sekunden = Time->second *(360/60);

Das ganze ist nicht auf meinem Mist gewachsen, habe es "damals" (bestimmt schon 5 Jahre her) mal aufgeschnappt/gespeichert, weil ich in C4D/XPresso einen mitlaufenden Timecode erstellen wollte.
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Danke für deine Hilfe. Habe mit Coffe aber noch nichts gemacht. Ich go*** mal im web.

smart88
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Sorry. Habe den Node gefunden.

Für den ersten Test habe ich mir zwei MoGraph-Texte reingeholt. Dem Text-Port habe ich dann die Ausgänge zugewiesen. Kein Ergebnis.

Dann habe ich das Script modifiziert. Auch kein Ergebnis.

Zum Schluss habe ich noch einen Input-Port "Zeit" am Node aktiviert und ein Zeit-Node als Eingang benutzt. Kein Ergebnis.

ein bild davon.
 
Zuletzt bearbeitet von einem Moderator:
M

mp5gosu

Guest

AW: Digtaluhr mit XPRESSO

Liegt daran, dass der COFFEE-Output keine Strings liefert.
Den Input kannste Dir übrigens sparen...
 

scanner

...searching...

AW: Digtaluhr mit XPRESSO

Ahhh, sorry:
aus Coffee noch:
Uhrzeit = stradd(tostring(Time->hour),":",tostring(Time->minute),":",tostring(Time->second));


"Uhrzeit" ist der Ausgangsport mit dem Typ String und liefert eine Uhrzeitangabe, die dann an die Eigenschaft "Text" eines Textsplines geflanscht werden kann.
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Hallo, guten Morgen.
Den Code Uhrzeit = stradd(tostring(Time->hour),":",tostring(Time->minute),":",tostring(Time->second)); habe ich eingebaut und den Port auf String geändert. Es erscheint nur eine 0 im Text.
 

CUBEMAN

Polyboy

AW: Digtaluhr mit XPRESSO

Was ist denn der Witz daran, sich die Systemzeit in C4D anzeigen zu lassen? Bau' doch mit XPresso eine Schaltung, die wirklich Sekunden, Minuten und Stunden zählt. Das ist wenigstens noch eine Herausforderung.

Grüße, CUBE
 

KBB

Mod 3D | Blaubaer

Teammitglied
AW: Digtaluhr mit XPRESSO

Code:
var Time = GeGetSysTime();
Stunden = 30*(Modulo(Time->hour,12))+0.5*Time->minute;
Minuten = Time->minute * 6;
Sekunden = Time->second *(360/60);

Das ganze ist nicht auf meinem Mist gewachsen.
Scanner funktioniert das bei Dir noch? In der R13 bekomme ich mit dem Modulo und den Umrechnungen nur Müll raus. Jeweils
Code:
Time->*ZeitVariable*
ist alles was man braucht.

So funktioniert der COFFEE Node hier. Der mittlere Block ist lediglich dafür da, dass einstellige Zeitwerte nicht ohne führende Null angezeigt werden.

Code:
main()
{
var Time = GeGetSysTime();
var Stunden = Time->hour;
var Minuten = Time->minute;
var Sekunden = Time->second;

// Aufaddierung von führenden Nullen im String

var ssec=tostring(Sekunden);
if(Sekunden<10) { ssec =stradd("0",ssec); };
var smin=tostring(Minuten);
if(Minuten <10) { smin =stradd("0",smin); };
var shour=tostring(Stunden);
if(Stunden<10) { shour =stradd("0",shour); };

var Uhrzeit = stradd(shour,":",smin,":",ssec);

 Output1=(Uhrzeit);
 StatusSetText(Output1);
}

Bau' doch mit XPresso eine Schaltung, die wirklich Sekunden, Minuten und Stunden zählt. Das ist wenigstens noch eine Herausforderung.
Animationsbezogen? IMHO auch nicht wirklich. Dazu muss man lediglich die Framerate auslesen oder festlegen und aufgrund derer hochrechnen. Sind nur wenige Zeilen mehr.
Allerdings habe ich keine Ahnung, wie man die eine oder andere Schaltung dazu bringt, die Zeit permanent anzuzeigen :D. Die Werte ändern sich immer nur bei einer Aktion (Kamera, Scrubber ..)
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Hallo.

Danke euch allen. Jetzt funktioniert es.
 

CUBEMAN

Polyboy

AW: Digtaluhr mit XPRESSO

Na ja, keine echte Uhr. Halt eine Schaltung die zählt und die einzelnen Einheiten, separat schaltet. Das ist gar nicht so einfach, wie man denkt und nebenbei eine gute XPresso Übung. Die Systemzeit auf einen Text-Spline zu übertragen, erfordert nicht annähernd soviel Eigenleistung.

Grüße, CUBE
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Hallo.

ein Bild vom vorläufigen Ergebnis. Ich habe jetzt die Zusammenhänge verstanden. Das Script habe ich noch etwas modifiziert, da ich noch das Datum ergänzt habe.

main()
{
var Time = GeGetSysTime();
var Stunden = Time->hour;
var Minuten = Time->minute;
var Sekunden = Time->second;
var Tage = Time->day;
var Monat = Time->month;
var Jahr = Time->year;

// Aufaddierung von führenden Nullen im String

var ssec = tostring(Sekunden);

if(Sekunden<10)
{ ssec =stradd("0",ssec);
};

var smin = tostring(Minuten);

if(Minuten <10)
{ smin = stradd("0",smin);
};

var shour = tostring(Stunden);

if(Stunden<10)
{ shour = stradd("0",shour);
};

var stag= tostring(Tage);

if(Tage<10)
{ stag = stradd("0",stag);
};

var smon=tostring(Monat);

if(Monat <10)
{ smon = stradd("0",smon);
};

var sjahr = tostring(Jahr);

if(Jahr<10)
{ shour =stradd("0",sjahr);
};

var Uhrzeit = stradd(shour,":",smin,":",ssec);
var Datum = stradd(stag,".",smon,".",sjahr);

Anzeige_Uhrzeit = (Uhrzeit);
StatusSetText(Anzeige_Uhrzeit);

Anzeige_Datum = (Datum);
StatusSetText(Anzeige_Datum);

}

Man muss im Objekt-Manager einfach irgend wohin klicken, dann wird beides aktualisiert. Morgen werde ich mal versuchen, wie es sich in einem Video verhält.

Danke
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Hallo KBB.

Was bitte ist die Scrubberleiste? Ich kenne diesen Ausdruck leider nicht.....
Bin halt noch in den Anfängen.

Danke
 

KBB

Mod 3D | Blaubaer

Teammitglied
AW: Digtaluhr mit XPRESSO

Ganz unten am Bildrand die "Zeitleiste". Da die Zeitleiste jedoch schon ein eigener Programmbaustein ist, weiß ich nicht wie anders bezeichnen. Scrubber, tatsächlich auch manchmal Schrubber im Deutschen benannt, weil man mit dem grünen "Zeitpositionsmarker" "durch die Zeit schrubbt". Ich meine sogar, das neulich erst auf Deutsch in der Hilfe gelesen zu haben, finde es aber grad weder so noch so.
Was ich meinte sind die Playbuttons da drunter.
Ist übrigens keine Cinema eigene Bezeichnung sondern kommt aus dem Schnitt.
 
G

Gelöschtes Mitglied 467863

Guest

AW: Digtaluhr mit XPRESSO

Guten Morgen zusammen.

ist meine fertige Uhr. Sie funktioniert super. Bin echt begeistert von Euch.

Wie ihr seht, habe ich auf der Seite einen digitalen Bilderrahmen eingebaut. Dazu passend habe ich 10 verschiedene Texturen erzeugt.
Kann man die Textur auch austauschen?

Das Script für die Auswahl des Materials habe ich mir wie folgt vorgestellt:

main()
{
var Time = GeGetSysTime();
var Minuten = Time->minute;

var Material = "Bild-0";
if(Minuten = 0) { Material="Bild-0"; };
if(Minuten = 1) { Material="Bild-1"; };
if(Minuten = 2) { Material="Bild-2"; };
if(Minuten = 3) { Material="Bild-3"; };
if(Minuten = 4) { Material="Bild-4"; };
if(Minuten = 5) { Material="Bild-5"; };
if(Minuten = 6) { Material="Bild-6"; };
if(Minuten = 7) { Material="Bild-7"; };
if(Minuten = 8 { Material="Bild-8"; };
if(Minuten = 9) { Material="Bild-9"; };
if(Minuten = 10) { Material="Bild-0"; };
if(Minuten = 11) { Material="Bild-1"; };
........
........
........
if(Minuten = 58 { Material="Bild-8"; };
if(Minuten = 59) { Material="Bild-9"; };

Textur = (Material);
StatusSetText(Textur);

}

Ich hoffe, ich verlange nicht zu viel von Euch

viele Grüße
smart88
 
Zuletzt bearbeitet von einem Moderator:

KBB

Mod 3D | Blaubaer

Teammitglied
AW: Digtaluhr mit XPRESSO

Also erstmal rate ich davon ab, 60x die gleiche Zeile zu schreiben. Wozu hast Du einen Rechner vor Dir? Der nimmt Dir doch Dir Arbeit ab :)

Mit einer Konstruktion wie
Bildnummer = 10 * ((Minuten/10) - Int(Minuten/10))
bekommst Du die einzelne Ziffer am Ende, wenn der Befehl Int hier richtig ist und die Nachkommastellen abschneidet. Geben tuts den Befehl bestimmt ;)
Als 2. kannst Du bestimmt auch mit einem Index arbeiten, also wenn Du die Bildnummer 0-9 hast, das Texturbild mit
Material = Bild (Bildnummer)
definieren (die Klammer spricht man "Bild von Bildnummer). Möglicherweise ist die Indizierung bzw. der Zugriff auf indizierte Materialnamen leichter in Py zu machen, oder man nutzt wieder die String-Comands, um dem Materialnamen die Nummer hinten drauf zu packen, da Cinema selbst vermutlich nicht mit der Indizierung arbeiten kann - habe ich ehrlich gesagt noch nie probiert :) Ob ein Materialname als String vorliegen muss, weiß ich auch nicht.
Code:
var SMaterial=tostring(Material); // Liegt der Materialname als String vor, ist die Zeile ueberfluessig
SMaterial = stradd(Material,Bildnummer);
Ich benutze hier bewußt nicht die "Code"-Formatierung vom Forum, da ich beides gerade nicht prüfen kann, aber vielleicht bestätigt das ja jemand.
 

NT2005

Von dannen.

AW: Digtaluhr mit XPRESSO

Hallo Smart,

Ich wollte mich einmal frisch halten:

Materialien mit den Namen 0-9, für jede Ziffer ein eigenes Objekt.

Code:
/*
 * Set Texture Of A Single Display
 */ 
SetTexture(doc, obj, number) {
    var mat = doc->FindMaterial(tostring(int(number)));
    if(mat == NULL) {return;}
    var material_tag = obj->GetFirstTag();
    while(material_tag) {
        if(material_tag->GetType() == Ttexture) {
            material_tag->SetMaterial(mat->GetMarker());
            break;
        }

        material_tag = material_tag->GetNext();
    }
}

main(doc,op) {
    // Get Current Time
    var time = GeGetSysTime();
    var hour = time->hour;
    var minute = time->minute;
    var second = time->second;
    
    // Calculate Time
    // Format: hour2 hour1 : min2 min1 : sec2 sec1
    var hour2 = hour/10;
    var hour1 = Modulo(hour,10);
    
    var min2 = minute/10;
    var min1 = Modulo(minute,10);
    
    var sec2 = second/10;
    var sec1 = Modulo(second,10);
    
    // Object Names Of Each Display
    var names=new(array,6,1);
    names[0] = "hour2_obj";
    names[1] = "hour1_obj";
    names[2] = "min2_obj";
    names[3] = "min1_obj";
    names[4] = "sec2_obj";
    names[5] = "sec1_obj";
    
    var i = 0;
    for(i; i<6; i++) {
        var obj = doc->FindObject(names[i]);
        if(obj == NULL) {continue;}
        SetTexture(doc, obj, min1);
    }
}
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.454
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben