tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
956
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    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-Code:
    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?
     

  2. #2
    Avatar von Mark
    Mark Mark ist offline Mod | Cinema4D
    tutorials.de Moderator
    Registriert seit
    Aug 2003
    Ort
    Vienna:Austria
    Beiträge
    8.123
    Blog-Einträge
    10
    Hi!

    Zunächst: warum nutzt Du nicht einfach das Zufall-Node?
    Bzgl. Coffee-Node:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    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.
     
    ... bitte keine C4D-Fragen per PN ...
    +++ OUT NOW for CINEMA4D:
    Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders
    + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
    eggtion.net

  3. #3
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var random;
     
    main()
    {
        if (!random) {
            random = new(Random);
            random->Init((Input1+1)*10000);
        }
        // Ausgang "Zufall" (Integer)
        Output1 = random->Get01();
    }
    Geändert von lx2 (09.05.09 um 15:11 Uhr)
     

  4. #4
    Avatar von Mark
    Mark Mark ist offline Mod | Cinema4D
    tutorials.de Moderator
    Registriert seit
    Aug 2003
    Ort
    Vienna:Austria
    Beiträge
    8.123
    Blog-Einträge
    10
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    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.
     
    ... bitte keine C4D-Fragen per PN ...
    +++ OUT NOW for CINEMA4D:
    Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders
    + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
    eggtion.net

  5. #5
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    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 :
    1
    
    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" ?
     

  6. #6
    Avatar von Mark
    Mark Mark ist offline Mod | Cinema4D
    tutorials.de Moderator
    Registriert seit
    Aug 2003
    Ort
    Vienna:Austria
    Beiträge
    8.123
    Blog-Einträge
    10
    Hi!
    Zitat Zitat von lx2 Beitrag anzeigen
    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.
     
    ... bitte keine C4D-Fragen per PN ...
    +++ OUT NOW for CINEMA4D:
    Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders
    + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
    eggtion.net

  7. #7
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    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.
     

  8. #8
    Avatar von Mark
    Mark Mark ist offline Mod | Cinema4D
    tutorials.de Moderator
    Registriert seit
    Aug 2003
    Ort
    Vienna:Austria
    Beiträge
    8.123
    Blog-Einträge
    10
    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.
     
    ... bitte keine C4D-Fragen per PN ...
    +++ OUT NOW for CINEMA4D:
    Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders
    + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
    eggtion.net

  9. #9
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    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?
    Geändert von lx2 (09.05.09 um 17:00 Uhr)
     

  10. #10
    Avatar von Mark
    Mark Mark ist offline Mod | Cinema4D
    tutorials.de Moderator
    Registriert seit
    Aug 2003
    Ort
    Vienna:Austria
    Beiträge
    8.123
    Blog-Einträge
    10
    Hi!
    Zitat Zitat von lx2 Beitrag anzeigen
    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.
     
    ... bitte keine C4D-Fragen per PN ...
    +++ OUT NOW for CINEMA4D:
    Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders
    + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
    eggtion.net

  11. #11
    lx2 lx2 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    75
    ...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... ?
    Ich gebs auf, ich denke nicht, dass man an die Klone rankommt. Es gibt zwar Mograph-Nodes um informationen von einzelnen Klones & Effektoren abzufragen, aber kein einzigen Node um an Klonen was zu verändern.

    Hast warscheinlich recht. Bei den Klonen handelt es sich nur um Kopien und nicht um eigenständige Objekte.

    Mit effektoren kann man diese Kopien in Position,Größe und Rotation ändern und sogar in der Farbe, jedoch seh ich im moment keinen weg, dass jeder Klone irgendeine art von Coffee abbekommen könnte.

    Werds wohl mit der Nullobjektvariante machen... ist man eh flexiblier!
    Danke bis hierher Mark, und noch ein schönes WE!
     

Ähnliche Themen

  1. Formular Input leeren nach dem Senden
    Von Maffy im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 13.03.09, 11:52
  2. Input Feld nach Leerstelle überprüfen
    Von mkoeni1 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 11.12.07, 20:40
  3. input nach klick auf text
    Von iNstinct im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 10.10.06, 13:12
  4. [VB 2005] binäre Datei nach String durchsuchen
    Von themadman im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 01.05.06, 18:00
  5. <INPUT> nach Typ per CSS formatieren?
    Von Mik3e im Forum HTML & XHTML
    Antworten: 7
    Letzter Beitrag: 30.11.05, 00:16

Stichworte