EA 5

Dr Franke Ghostwriter
sooooo, wollen wir die Aktivität in diesem Forum mal wieder steigern 😉
ich habe mich heute nämlich mal an die Einsendearbeit zu Kurseinheit fünf gemacht und sehe schon, dass ich das als Einzelkämpfer wohl nicht hinbekommen werde. ich bin ja schon von den ganzen Tools genervt, die man dafür braucht... danach war ich erstmal nichtmal mehr motiviert mit den Aufgaben weiter zu machen, das kommt dann eben ab morgen wieder dran.
Ist noch jemand von euch so weit?
 
Lexi,

ich mache gerade noch Konzerncontrolling. Aber das sieht ja mal endlich ganz nett aus. Ich fande die bisherigen EAs 1-4 nämlich übelst "toll".

Ich werde mich wohl im Lauf der Woche dran setzen. Ergebnisse werde ich wohl am Freitag mal schreiben. Sorry, aber bisschen Geduld brauchts noch 🙂

Grüße
Jonathan
 
ich kämpfe auch mit der EA5, die eine Hälfter der Tools läuft nicht bei mir, da Mac, die andere Hälfte ist nicht wirklich angenehm zu benutzen, werde wohl eine reine Textantwort schicken, ohne die vorher durch den Syntax-Prüfer gejagt zu haben.

Hier mal meine Überlegungen zur 1. Aufgabe den Prototyp InventoryBar:
Liege ich damit halbwegs richtig???

Code:
#VRML V2.0 utf8

PROTO InventoryBar {

Transform
  {
  children
    Shape
      {
      appearance Appearance
        {
        material Material
          {
          }
        }
      geometry Box
        {
        size 2 6 2
        }
      }
  }

Transform
  {
  children
    Shape
      {
      appearance Appearance
        {
        material Material
          {
          }
        }
      geometry Box
        {
        size 5 .2 3
        }
      }
  }

Transform
  {
  translation 1 1.43051147e-6 -4.76837158e-7
  children
    Shape
      {
      appearance Appearance
        {
        material Material
          {
          }
        }
      geometry Text
        {
        string "ProductName"
        }
      }
  }

}
 
Frag05,

sieht für mich ganz gut aus. Ein paar Fehler hast du noch:
- Children. Die nachfolgenden Angaben über Shape müssen in eckige Klammern [].
- Deine Translation für den Marker fehlt noch. Somit bist du nicht in der Lage den Marker auf eine entsprechende Stelle zu setzen.

Wie ich sehe hast du auch mit Quadern gearbeitet. Ich habe folgende Lösung gewählt.
Code:
#VRML V2.0 utf8
# Aufgabe 14
PROTO InventoryBar [
  field MFString text ""          # produktname
  field SFVec3f size 4 0 .3        # unitsinstock / lagerbestand
  field SFVec3f marker 0 0 0      # recorderlevel / meldebestand
]
{
  Group {
      children [
        Transform {
            center 0 0 0
            translation 0 2.5 0
            scale 1 1 1
            children [
              Shape {
                  geometry Box {  # unitsinstock
                    size IS size
                  }
                  appearance Appearance {
                    material Material {
                        diffuseColor 0 1 0
                    }
                  }
              }
            ]
        }
        Transform {
            translation IS marker
            scale 1 1 1
            children [
              Shape {
                  geometry Box {    # recorderlevel
                    size 4.5 .1 .3
                  }
                  appearance Appearance {
                    material Material {
                        diffuseColor 1 0 0
                    }
                  }
              }
            ]
        }
        Transform {
            translation -5 0 0
            scale 1 1 1
            children [
              Shape {
                  geometry Text {
                    string IS text
                    fontStyle FontStyle {
                        size .5
                        family [
                          "SERIF"
                        ]
                    }
                  }
              }
            ]
        }
      ]
  }
}
InventoryBar {
  text "Produkt A"    # produktname
  size 4.5 5 .3        # lagerbestand
  marker 0 2.5 0      # meldebestand
}


Was mich stört:
- Die aktuelle Lösung unterstützt keine Änderung der "Sizing" Angabe. Ich arbeite mit Translationsvektoren und passe das "hardcodiert" dann den eingegebenen Daten an. Denn die Vektoren können eine Variable "marker" und "size" nicht aufnehmen bzw. ich habe die korrekte syntax dazu einfach nicht gefunden...

- Wenn man einen Quader als Balken nimmt, so ist automatisch das Zentrum des Quaders der Achsenursprung des Koordinatensystems. Somit muss der Quader immer um (size/2) nach oben verschoben werden, weil dieser sich nach oben und unten (!) ausdehnt.
 
Zuletzt bearbeitet:
Ist euch auch aufgefallen, dass eine Musterlösung der EA5 im Virtuellen Studienplatz liegt? Unter der Rubrik Übungen gibt es eine zip-Datei mit dem Corde für alle sechs Aufgaben...
Bis auf White Dune läuft bei mir immernoch keins der Tools. Windows 8 und 64bit stehn dem scheinbar im Wege. Ich schau mir jetzt die Lösungen an und vergleiche mit meinen (eher tollpatschigen) Ideen.
Als Antwort auf dich Frag05 hänge ich den Code für Aufgabe 14 hier mal an.
Gruß
Code:
#VRML V2.0 utf8

# Prototypdefinition für einen erweiterten Balkendiagramm-Balken.
#
# (c) FernUniversität in Hagen
# Gerald Jäschke, D.Biella

PROTO InventoryBar [
  field SFVec3f size 1.0 1.0 1.0
  field SFVec3f marker 0.0 0.0 0.0
  field MFString text ["foo"]
]{
  Group {
    children [

      #Balken
      Transform {
        scale IS size
        children [
          Shape {
            appearance Appearance {
              material Material {
                diffuseColor .5 .5 .5
                specularColor .2 .2 .2
                emissiveColor .1 .1 .1
                shininess .5
              }
            }
            geometry IndexedFaceSet {
              coord Coordinate {
                point [ -0.5 0 -0.5 , 0.5 0 -0.5 , 0.5 0 0.5, -0.5 0 0.5 ,
                        -0.5 1 -0.5 , 0.5 1 -0.5 , 0.5 1 0.5, -0.5 1 0.5 ]
            }
            coordIndex [
              0, 1, 2, 3, -1,#bottom
              4, 5, 1, 0, -1,#back
              0, 3, 7, 4, -1,#left
              7, 6, 5, 4, -1,#top
              1, 5, 6, 2, -1,#right
              6, 7, 3, 2, -1 ]#front
            }
          }
        ]
      }

      #Plättchen
      Transform {
        translation IS marker
        children [
          Shape {
            appearance Appearance {
              material Material {
                diffuseColor 0 0 1
                transparency 0.5
              }
            }
            geometry IndexedFaceSet {
              coord Coordinate {
                point [ -0.75 0.0 -0.75 , 0.75 0.0 -0.75 , 0.75 0.0 0.75, -0.75 0.0 0.75 ,
                        -0.75 0.05 -0.75 , 0.75 0.05 -0.75 , 0.75 0.05 0.75, -0.75 0.05 0.75 ]
            }
            coordIndex [
              0, 1, 2, 3, -1,#bottom
              4, 5, 1, 0, -1,#back
              0, 3, 7, 4, -1,#left
              7, 6, 5, 4, -1,#top
              1, 5, 6, 2, -1,#right
              6, 7, 3, 2, -1 ]#front
            }
          }
        ]
      }

      #Text
      Transform {
        translation -0.75 0.0 0.75
        children [
          Shape {
            appearance Appearance {
              material Material {
                diffuseColor 0 0 0
              }
            }
            geometry Text {
              string IS text
              fontStyle FontStyle {
                family ["Arial", "SANS"]
                size 0.5
                justify "END"
              }
            }
          }
        ]
      }
    ]
  }
} #Ende Bar-Prototyp

#Instantiierung zum Testen (optional)
InventoryBar{}
 
Zuletzt bearbeitet:
Hey Lexi,

habe ich auch gefunden. Die verwenden ein IndexedFaceSet. Scheinbar sind die geometrischen Grundformen für solche Aufgabenstellungen wie wir sie bearbeiten ungeeignet. Gerade auf Grund der Tatsache, dass der Achsenursprung durch das Zentrum des Geometrie Objekts definiert wird. Ich hatte da erhebliche Problem mit den Koordinaten, weil diese sich nicht dynamisch berechnen lassen. Das unterstützt vrml wohl nicht.

Jetzt wo ich das IndexedFaceSet verwende, ist es ziemlich einfach...
 
Hey zusammen,
auch wenn mittlerweile schon EA6 dran ist: Fandet ihr EA5 jetzt einfach? Die Lösung ist ja gut nachvollziehbar und verständlich, aber auf die Verwendung des IndexedFaceSet bin ich auch nicht gekommen... damit ist in der Tat einfach.

Ich hab mir übrigens als Editor vrmlpad geladen, das macht den Code nett farbig, gibt vorschläge und rückt automatisch ein, ist ganz ok:
https://www.parallelgraphics.com/products/vrmlpad/download/

Zudem habe ich noch diese - deutschsprachige (!) - Seite gefunden, die die Basiselemente ganz gut erklärt:
https://www.debacher.de/vrml/vrml.htm

Ich werde mir dann gleich mal EA6 anschauen, oder ich warte doch auf die Lösung, wer weiß wann ihnen da wieder einfällt 🙂 Das gibt einen Spaß in der Klausur!!
Schönes WE Leute!
 
Ich fand EA5 okay, nachdem ich die Lösung gesehen hatte 😀 aber so geht mir das bei neuen Programmiersprachen irgendwie immer, ich brauche etwas um reinzukommen und leider ist das im Fernstudium schwieriger als ich dachte. Vor allem, wenn es drei neue Sprachen parallel sind... mal sehen was das noch gibt.
Danke für den Link zum Editor! Den werde ich jezt gleich für die EA6 mal austesten. Habe das letzte Mal einfach den Windows Editor genutzt, weil von den angegebenen Tools bei mir nichts wirklich läuft
 
Ich persönlich habe ewig gebraucht, da ich

a) erst mal lange gebraucht habe bis ich eine korrekte Verschachtelung der Knoten hinbekommen habe (da finde ich das Skript schon etwas schwach) und

b) die Aufgabenstellungen mit der geometrischen Grundform eines Quaders umsetzen wollte. Das geht aber einfach nicht, spätestens ab Aufgabe 15 musste man scheitern.

Dann habe ich in die ML geschaut und gesehen, dass dort ein IndexedFaceSet eingesetzt wird und habe das einfach übernommen. Und dann ging es recht zackig.

Wie ist die EA 6? Möchte mich damit im Laufe des Tages damit auseinandersetzen..
 
joa du nimmst einen Time Sensor und einen ColorInterpolator und ne ROUTE Definition, ich habe das so (bin aber auch auf die Musterlösung gespannt):
Code:
    DEF    Uhr TimeSensor {
                cycleInterval 2.0
                loop TRUE
            }
            DEF    Interpolator ColorInterpolator {
                key    [0 0.5 1]
                keyValue [1.0 0.55 0.03,
                          1.0 0.8 0,
                          1.0 0.65 0.03]
            }
            ROUTE Uhr.fraction_changed TO Interpolator.set_fraction
            ROUTE Interpolator.value_changed TO    Candle_Flame.diffuseColor
 
Oben