media @ VU
[] readme course(s) preface I 1 2 II 3 4 III 5 6 7 IV 8 9 10 V 11 12 afterthought(s) appendix reference(s) example(s) resource(s) _

talk show tell print

shader-layer.vr

shader-layer.vr (wrl ) [ flux / bitmanagement / cortona / octaga ]

Web3D/VR

layer


  
  EXTERNPROTO Transform2D [ 
          eventIn                    MFNode        addChildren
          eventIn                    MFNode        removeChildren
          exposedField        MFNode        children
          exposedField        SFVec2f        center
          exposedField        SFFloat        rotationAngle
          exposedField        SFVec2f        scale
          exposedField        SFFloat        scaleOrientation
          exposedField        SFVec2f        translation
  ]
  [
    "urn:inet:bitmanagement.de:node:Transform2D",
    "http://www.bitmanagement.de/vrml/protos/nodes.wrl#Transform2D",
    "nodes.wrl#Transform2D"
  ]
  
  EXTERNPROTO Material2D [
          exposedField        SFColor                        emissiveColor
          exposedField        SFBool                        filled                
          exposedField        SFNode                        lineProps        
          exposedField        SFFloat                        transparency
  ]
  [
    "urn:inet:bitmanagement.de:node:Material2D",
    "http://www.bitmanagement.de/vrml/protos/nodes.wrl#Material2D",
    "nodes.wrl#Material2D"
  ]
  
  EXTERNPROTO Layer2D[
          eventIn       MFNode                addChildren
          eventIn       MFNode                removeChildren
          exposedField         MFNode                children
          exposedField        SFVec2f         translation
          exposedField        SFVec2f         size
          exposedField        SFNode          background
          exposedField        SFNode           viewport
  ]
  ["urn:inet:bitmanagement.de:node:Layer2D",
    "http://www.bitmanagement.de/vrml/protos/nodes.wrl#Layer2D",
    "nodes.wrl#Layer2D"
  ]
  
  EXTERNPROTO Background2D [ 
          eventIn                    SFBool        set_bind
          exposedField        SFColor        backColor
          exposedField        MFString        url
          eventOut            SFBool        isBound
  ] 
  ["urn:inet:bitmanagement.de:node:Background2D",
    "http://www.bitmanagement.de/vrml/protos/nodes.wrl#Background2D",
    "nodes.wrl#Layer2D"
  ]
  
  EXTERNPROTO Rectangle [ 
    field SFVec2f  size  #2 2 (0,inf)
  ]
  ["urn:inet:bitmanagement.de:node:Rectangle",
    "http://www.bitmanagement.de/vrml/protos/nodes.wrl#Rectangle",
    "nodes.wrl#Rectangle"
  ]
  
  PROTO TEXT [
    exposedField MFString string []
    exposedField SFVec2f translation 0 0
    exposedField SFFloat transparency 0
    field MFString fontfamily ["SANS SERIF"]
    field SFString fontstyle "PLAIN USE_TEXTURE"
    field SFFloat fontsize 1.0
    field SFColor color .5 .5 .5  
  ] {
    Transform2D {
      translation IS translation
      children [
        Shape {
          geometry Text {
            string IS string
            fontStyle FontStyle {
              family IS fontfamily
              size IS fontsize
              style IS fontstyle
            }
          }
          appearance Appearance {
            material Material {emissiveColor IS color diffuseColor 0 0 0 transparency IS transparency}
          }
        }
      ]
    }
  }
  
  PROTO ClickBox [
    exposedField SFVec2f translation 0 0 
    exposedField SFVec2f font_translation 0 0
    exposedField SFVec2f size 0 0
    exposedField MFString string []
    exposedField MFString url []
    exposedField SFBool filled FALSE  
    field SFFloat fontsize 1.0
    field SFVec2f rectangle_size 0 0
    eventOut SFInt32 choice_changed
    eventOut SFTime touchTime_changed
    eventOut SFBool touchSwitch
  ]
  {
    Layer2D {    
      size IS size
      translation IS translation
      background NULL #Background2D {backColor 1 1 1}
      children [
        Transform2D {      
          children [
            DEF Box Shape {
              geometry Rectangle {
                size IS rectangle_size
              }
  
              appearance Appearance {
                material DEF Box_Material Material2D {emissiveColor .7 .7 .7 filled IS filled}
              }
            } # end Box
          
            DEF touch TouchSensor {}
            
            DEF Text TEXT {
              translation IS font_translation
              string IS string
              fontsize IS fontsize
            } # end Text
          ]
        } # end Transform
  
        DEF script Script {
          field SFNode frame_filled USE Box_Material
          eventIn SFBool isOver
          eventOut SFBool filled
  
          url "javascript:
          function isOver(v, t) {
            if (v)
              filled = true;
            else
              filled = false;
          }
          "
        } # end script
  
        DEF touchScript Script {
          eventIn SFTime touchTime
          eventOut SFInt32 choice
          url IS url
        }
  
        DEF touchChoice Script {
          field SFBool sw TRUE        
          eventIn SFTime touchTime
          eventOut SFTime touchTime_changed IS touchTime_changed
          eventOut SFInt32 choice_changed IS choice_changed
          eventOut SFBool touchSwitch IS touchSwitch
          url "javascript:
          function touchTime(v, t) {          
            choice_changed = 0;
            touchTime_changed = v;          
            touchSwitch = sw;
            if (sw) sw = false; else sw = true;
          }
          "
        }
  
      ]
      ROUTE touch.isOver TO script.isOver
      ROUTE script.filled TO Box_Material.filled
      ROUTE touch.touchTime TO touchScript.touchTime
      ROUTE touch.touchTime TO touchChoice.touchTime
    }
  }
    
  
    
  

(C) A. Eliëns 2/9/2007

You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.