#VRML V2.0 utf8 ## ##@ extern EXTERNPROTO MultiTexture [ exposedField MFString mode exposedField MFNode texture exposedField MFNode textureTransform exposedField MFInt32 textureOp ] [ "urn:inet:blaxxun.com:node:MultiTexture" "http://www.blaxxun.com/vrml/protos/nodes.wrl#MultiTexture" ] ##@ world WorldInfo { title "Nurbs patch animated" info "Nurbs Patch with animated controlPoint & environment mapping" } NavigationInfo { type ["EXAMINE","ANY"] } Viewpoint { position 7.5 5 20 } EXTERNPROTO NurbsSurface [ field SFInt32 uDimension field SFInt32 vDimension field MFFloat uKnot field MFFloat vKnot field SFInt32 uOrder field SFInt32 vOrder exposedField MFVec3f controlPoint exposedField MFFloat weight exposedField SFInt32 uTessellation exposedField SFInt32 vTessellation exposedField SFNode texCoord field SFBool ccw field SFBool solid ] [ "urn:inet:blaxxun.com:node:NurbsSurface", "http://www.blaxxun.com/vrml/protos/nurbs.wrl#NurbsSurface" ] EXTERNPROTO DropHandler [ field SFNode root field SFNode rootShape ] "../../event/drop/drophandler.wrl" EXTERNPROTO TextureCoordGen[ exposedField SFString mode exposedField MFFloat parameter ] ["urn:inet:blaxxun.com:node:TextureCoordGen","http://www.blaxxun.com/vrml/protos/nodes.wrl#TextureCoordGen","nodes.wrl#TextureCoordGen"] EXTERNPROTO MultiTextureCoordinate[ exposedField MFNode coord ] ["urn:inet:blaxxun.com:node:MultiTextureCoordinate","http://www.blaxxun.com/vrml/protos/nodes.wrl#MultiTextureCoordinate","nodes.wrl#MultiTextureCoordinate"] ##################################################### DEF tropfenGroup Group { children [ DEF tropfen Transform { children Shape {appearance Appearance {material Material {diffuseColor 0 0 .5}} geometry Sphere {radius .1} } } Transform { children Shape {appearance Appearance {material Material {diffuseColor 0 0 .5}} geometry Sphere {radius .1} } } Transform { children Shape {appearance Appearance {material Material {diffuseColor 0 0 .5}} geometry Sphere {radius .1} } } Transform { children Shape {appearance Appearance {material Material {diffuseColor 0 0 .5}} geometry Sphere {radius .1} } } Transform { children Shape {appearance Appearance {material Material {diffuseColor 0 0 .5}} geometry Sphere {radius .1} } } ] } DEF tropfenIP PositionInterpolator { key [0 1] keyValue [0 0 0, 1 1 1] } DEF ROOT Transform { ##rotation 1 0 0 3.1414 ###scale 10 10 10 ##translation -8 0 0 children [ Sound {source DEF ac AudioClip {url "../sounds/plop.wav"}} DEF ts TouchSensor{} Collision { collide FALSE children DEF ROOT-SHAPE Shape { geometry DEF nurb NurbsSurface { ccw TRUE uOrder 3 vOrder 3 uDimension 6 vDimension 4 uTessellation 23 vTessellation 23 # texCoord TextureCoordGen {mode "SPHERE"} texCoord MultiTextureCoordinate { coord [ NULL TextureCoordGen { #mode "SPHERE" #mode "DOT" #mode "REFRACT" #mode "SPHERE-LOCAL" #mode "COORD-EYE" #mode "CAMERASPACEREFLECTIONVECTOR" #mode "CAMERASPACEPOSITION" mode "CAMERASPACENORMAL" } ]} #uKnot [ 0, 0, 0, 0, .5, .6, 1, 1, 1, 1] #vKnot [ 0, 0, 0, 0, 1, 1, 1, 1] controlPoint[ 0 0 0, 1 0 0, 2 0 0, 3 0 0, 4 0 0, 5 0 0, 0 1 0, 1 1 0, 2 1 0, 3 1 0, 4 1 0, 5 1 0, 0 2 0, 1 2 0, 2 2 0, 3 2 0, 4 2 0, 5 2 0, 0 3 0, 1 3 0, 2 3 0, 3 3 0, 4 3 0, 5 3 0 ] weight [ 1.000000 ] } appearance Appearance { material Material { diffuseColor 0 0 1 #specularColor 1 1 1 ##transparency 0.5 } texture MultiTexture { mode [ "MODULATE" "ADD" ] textureTransform [ NULL TextureTransform { scale 0.5 0.5 translation 1 1 } ] texture [ MovieTexture { url "local/clips/effects/balls.wmv" startTime 0 stopTime -1 loop TRUE repeatS FALSE repeatT FALSE } ##ImageTexture {url "chromic.jpg"} ImageTexture {url "logo.jpg"} ]} } } } ] } DEF animate Script { eventIn SFTime setTime eventIn SFTime setStartTime eventIn SFTime setRandomWave eventIn SFFloat applyEpi eventIn SFVec3f setEpi field MFTime startTime [] field MFVec3f epiZentrum [] field SFInt32 nWaves 5 field SFInt32 i 0 field SFVec2f patchSize 17 17 field SFNode nurb USE nurb field SFVec3f tmpEpiZentrum 0 0 0 field SFVec3f nirvana 100 100 100 field SFNode spheres USE tropfen field SFNode tropfenGroup USE tropfenGroup field SFTime sphereAnimationTime 3 directOutput TRUE url "javascript: function initialize() { startTime.length = nWaves; epiZentrum.length = nWaves; // for (var i=0; i 11) { //print('NewWave'+value); setRandomWave(value); } } } var nv=nurb.vDimension; var nu=nurb.uDimension; var nw=nWaves; //z = exp(-(t+l)) * sin(omega * t + l) for (v = 1; v 0) { l = Math.PI/2 * Math.sqrt((v-epiZentrum[ii].y)*(v-epiZentrum[ii].y) + (u-epiZentrum[ii].x)*(u-epiZentrum[ii].x) ); // Browser.print(l); a = -3 * Math.exp( -1 * ( (deltaT) + l/nv) ); //a = 1; z += epiZentrum[ii].z * a * Math.cos(omega* deltaT + l); // wave can't travel so fast // limit on deltaT / l } } nurb.controlPoint[voffset+u].z = z; } } } function setEpi(value) { tmpEpiZentrum.x = value.x; tmpEpiZentrum.y = value.y; //Browser.print(value); } " } DEF TimeSource TimeSensor {loop TRUE} ROUTE TimeSource.time TO animate.setTime ROUTE ts.touchTime TO ac.startTime ROUTE ts.touchTime TO animate.setStartTime ROUTE ts.hitPoint_changed TO animate.setEpi ################ DropHandler DropHandler { root USE ROOT rootShape USE ROOT-SHAPE }