Coffee - Binäre Zufallszahlen je nach Input

lx2

Mitglied
Hi,

Ich bräuchte ein Xpresso-CoffeeNode, das je nach Input eine zufällige Binäre Zahlenreihenfolge kreiert:

z.B.:
Input(REAL) | Zahlenreihenfolge (REAL)
-----------------------------------
0 | 0100110101110110
1 | 0111011011011011
2 | 1011011011101101
3 | 0110100100000111
usw.
-----------------------------------

Grundsätzlich frag ich mich erstmal, wie man die Randomfunktion im CoffeNode nutzt. Muss ich da irgendwelche Header includieren?

Das hier hab ich in SDK-Referenz gefunden:
HTML:
Random
Header

c4d_tools.h

A class to generate random number sequences. Uniform and gaussian deviates can be generated.
Definition

class Random
{
public:
  void Init(ULONG s);

  Real Get01(void);
  Real Get11(void);

  Real GetG01(void);
  Real GetG11(void);

  LONG GetSeed(void);
};

Weiß jemand weiter?
 
Hi!

Zunächst: warum nutzt Du nicht einfach das Zufall-Node?
Bzgl. Coffee-Node:
Code:
var random;

main()
{
    if (!random) {
        random = new(Random);
        random->Init(12345);
    }
    // Ausgang "Zufall" (Integer)
    Zufall = int(random->Get01() * 100 + 1);
}

Die "Binärfrage" verstehe ich nicht: ist die Zahlenfolge nun zufällig oder abhängig vom Input? Oder anders: soll bei gleichem Input eine gleiche Zufallszahl generiert werden?

Liebe Grüße,
Mark.
 
Also um das nochmal gernauer zu erläutern:

Ich habe mit Mograph ein Text-Objekt erstellt und mehrmals geklont.
Der eigentliche Text wird über Xpresso gesteuert.

Die Klone haben jetzt noch genau den selben Text.

Nun will ich den einzelnen Instanzen per Coffee einen zufälligen Text der Form "0010100111010" geben. Da der Text unterschiedlich sein soll, muss natürlich jede Instanz einen anderen Inputwert liefern. Dies wollte ich über "Hierarchie-" und "Objektindex-node" verwirklichen.

0en und 1en per Hand eingeben, da sitz ich übermorgen noch da...

@Mark:
JA! bei gleichem input eine gleiche Zufallszahl. Hab grade gemerkt, das das Script zwar funktioniert, doch leider jeden Frame die Zahl ändert.
Hier mal mein aktuelles Script:

Code:
var random;

main()
{
    if (!random) {
        random = new(Random);
        random->Init((Input1+1)*10000);
    }
    // Ausgang "Zufall" (Integer)
    Output1 = random->Get01();
}
 
Zuletzt bearbeitet:
Hi!

Kannst Du dann nicht einfach ein Array mit Zufallszahlen (oder auch gleich dem gewünschten Text) füllen und folgend jeweils ein Element daraus entnehmen?
Code:
var random;
var rarray;
var rcount    = 10;
var rmax        = 100;

main()
{
    if (!random) {
        random = new(Random);
        random->Init(12345);
    }
    if (!rarray) {
        rarray = new(array, rcount);
        var i;
        for(i=0; i<rcount; i++)
            rarray[i] = int(random->Get01() * rmax);
    }
    var output = 0;
    if (Input1 >= 0 && Input1 < rcount)
        output = rarray[Input1];

    Output1 = output;
}
...oder zumindest so ähnlich ;)

Liebe Grüße,
Mark.
 
Das mit dem Array hab ich mir auch grad gedacht.
Werd mir wohl irgendwo ein Riesenarray erstellen, damit Coffee das nicht berechnen muss.

Danke schonmal für die Scripts...

Jetzt hab ich nur ein Problem in folgender Zeile
Code:
output = rarray[Input1];
Da meckert er: Incompatible Values FLOAT / INTEGER

Kommt daher, dass Input1 bei mir der Name der Objektes ist , und als wert String (bzw. Float) hat.

Da gibts doch bestimmt sowas wie FloatToInteger()?

Oder besser noch, gibt es bei XPresso für ein Objekt ein Ausgang der z.B. besagt "Ich bin das Unterobjekt mit der Nummer 3" ?
 
Hi!
Da meckert er: Incompatible Values FLOAT / INTEGER
Hm, müsste doch eigentlich reichen, wenn Du einen Integer-Eingang am Coffee-Node erzeugst...
Ansonsten wäre var eingang = int(Input1) eventuell eine Alternative ;)

Oder besser noch, gibt es bei XPresso für ein Objekt ein Ausgang der z.B. besagt "Ich bin das Unterobjekt mit der Nummer 3" ?
Ist das nicht der Index des Objekt-Index-Node?

Liebe Grüße,
Mark.
 
Ok, mit Integereingang hat funktioniert.

Zitat:
Oder besser noch, gibt es bei XPresso für ein Objekt ein Ausgang der z.B. besagt "Ich bin das Unterobjekt mit der Nummer 3" ?
Ist das nicht der Index des Objekt-Index-Node?
Irgendwie nicht direkt! :(

Hab mal einfach ein Nullobjekt erstellt und ihm sämmtliche Objekte untergeordnet. Alle mit einer einfachen XPresso-Schaltung

Objekt-Index[ INDEX ] ---> Ergebnis

Kam immer nur 0 raus.
 
Hi!

Ich gehe mal davon aus, Du hast ein Hierarchie-Node verwandt: hole alle Objekte unterhalb des Null-Objekts. Wenn Du daran den Objekt-Index anlegst, zeigt dieser immer 0, da das Hierarchie-Node alle Objekte pro Frame liefert. Wenn Du z.B. diesen Index mit 10 multiplizierst und dem jeweiligen Objekt des Hierarchie-Nodes als Y-Position zuweist, kannst Du sehen, daß sich jedes Objekt um 10m nach oben verschiebt :)

Liebe Grüße,
Mark.
 
Ok, danke nochmal, ich hoffe ich habs jetzt kapiert.

Hatte die Xpresso nodes auf den Unterobjekten, dabei gehört es auf das Nullobjekt.
SO, sorry das ich nicht locker lasse.

Mit Nullobjekt schön und gut: mit Hierarchie und Objektindex kann man schön alle Objete unter dem Nullobjekt durchnummeriren.
Wenn ich jetzt aber an jeden Klon seine Indexnummer (bzw. gleich das Coffeescript welches in Text-Objekt->Text reinschreibt) schicken will, dann geht das so nicht mehr. Da hab ich ja nur das Klon-Objekt und mein Text-Objekt als unterobjekt.

Welches Node soll ich da verwenden?
 
Zuletzt bearbeitet:
Hi!
Wenn ich jetzt aber an jeden Klon seine Indexnummer (bzw. gleich das Coffeescript welches in Text-Objekt->Text reinschreibt) schicken will, dann geht das so nicht mehr. Da hab ich ja nur das Klon-Objekt und mein Text-Objekt als unterobjekt.
Da kann ich Dir leider nicht helfen. Ich habe kein MoGraph.
...aber Du bist Dir sicher, daß man an die Klone vom MoGraph überhaupt noch heran kommt? Sind ja quasi nur interne Kopien des Originals und ob man da noch heran kommt... ?

Liebe Grüße,
Mark.
 
Zurück