children [ WorldInfo { info ["Avatar Studio","Copyright (c)2000 CANAL NUMEDIA. All Rights Reserved."]} |
DEF TOUCH TouchSensor{ touchTime IS touchTime, isOver IS isOver } DEF vis VisibilitySensor { size 1 2 1 center 0 1 0 } #------------------------------------------------------ Shape { appearance Appearance{ material Material{diffuseColor 0.56 0.56 0.22} texture ImageTexture{url "djelle.jpg" } } geometry IndexedFaceSet { solid FALSE creaseAngle 3.14 coord DEF PointList Coordinate{ |
point[-0.0976 -0.032 -0.0011,-0.0922 -0.033 -0.0301,-0.1128 -0.0866 -0.0337,-0.0589 -0.033 -0.0503,-0.059 -0.067 -0.0659,-0.1196 -0.0979 0.0019,0.0991 -0.032 -0.0011,0.1196 -0.0979 0.0019,0.1121 -0.0866 -0.0337,0.0914 |
DEF OI11_53 OrientationInterpolator{ key[ 0,0.25,0.5,1] |
keyValue[ -0.0317 -0.9942 -0.0847 -0.0095,0 1 0 0,0 1 0 0,-0.0317 -0.9942 -0.0847 -0.0095] } #------------------------------------------------------ DEF Welder Script { directOutput TRUE eventOut SFBool isInit eventIn SFBool Watched eventIn SFFloat fooEvents eventIn SFTime G0 IS set_gesture1 eventIn SFTime G1 IS set_gesture2 eventIn SFTime G2 IS set_gesture3 |
eventIn SFTime G3 IS set_gesture4 eventIn SFTime G4 IS set_gesture5 |
m3=m3.multRight(m2); m4.setTransform(P[58],R[58]); |
m4=m4.multRight(m3); for(i=989;i<990;i++){W[i]=m4.multVecMatrix(V[i]);} Vtx.point=W; }//VtxTransform function fooEvents(t){ if(!isInit) return; if(mode==0)VtxTransform(); else if(mode==1)Vtx.point.setByVertexTransform(V,vgroups,P,R); } function eventsProcessed(){ if(!isInit) return; if(mode==2) Vtx.point.setByVertexTransform(V,vgroups,P,R); } function Gstart(g,t){ if((!watched)||(g>=ts.length)||!isInit)return; if(currG==-1){nextG=g;Gend(FALSE,t);} else{ts[currG].enabled=FALSE;ts[currG].stopTime=t;currG=-1;nextG=g;Gend(FALSE,t);} } function Gend(b,t){ |
if(b==false){ currG=nextG; |
ver=Browser.getVersion(); if(ver<4.1)mode=0; //no eventsProcess |
else if(ver<5.0)mode=1; //setByVertexTransform() else mode=2; //+eventsProcess ok } else mode=0; isInit=true; fooEvents(); } "}#sript Welder #------------------------------------------------------ DEF TsWalk TimeSensor{cycleInterval 1} DEF PosIt PositionInterpolator{key [0,1] keyValue [0 0 0,0 0 0]} DEF TsIdle TimeSensor{cycleInterval 180} #------------------------------------------------------ DEF Walker Script { directOutput TRUE eventIn SFBool isInit eventIn SFVec3f setPos IS set_position eventIn SFRotation setRot IS rotation eventIn SFBool isPilot IS isPilot eventIn SFBool isActive |
eventIn SFFloat walk eventIn SFBool watched |
} function walk(v,t){ |
if(watched){ fWalk+=(v-vWalk)*k2Walk; vWalk=v; while(fWalk>=1)fWalk-=1;//mod! while(fWalk<0)fWalk+=1;//grr! if(!isInit) return; walkFrac=fWalk; } } function setRot(v,t){ rot_changed=v; if(v[3]!=angle){ angle=v[3]; dir.x=Math.sin(angle); dir.z=Math.cos(angle); } } function setPos(v,t){ d=v.subtract(curPos); if(d.length()==0){ if(moving)stopw(t); return; } kWalk=d.dot(dir)*ooStep; if(isPilot){ if(!moving)startw(); if(kWalk>0.2)kWalk=0.2; fWalk+=kWalk; while(fWalk>=1)fWalk-=1;//mod! while(fWalk<0)fWalk+=1;//grr! if(!isInit) return; walkFrac=fWalk; pos_changed=v; return; } keyValues[1]=v; |
if (moving)newMove=true; else if(notFirst){startw();move(t);} |
ROUTE Walker.values_changed TO PosIt.set_keyValue ROUTE TsWalk.fraction_changed TO PosIt.set_fraction |
ROUTE TsWalk.fraction_changed TO Walker.walk ROUTE PosIt.value_changed TO WalkingAvatar.set_translation ROUTE TsWalk.isActive TO Walker.isActive ROUTE Walker.startMove TO TsWalk.set_startTime ROUTE TsIdle.isActive TO Walker.idle ROUTE Welder.isInit TO Walker.isInit ROUTE TS0.fraction_changed TO PI0_1.set_fraction ROUTE PI0_1.value_changed TO Welder.pos_Center ROUTE TS0.fraction_changed TO OI0_2.set_fraction ROUTE OI0_2.value_changed TO Welder.rot_sacroiliac |
ROUTE TS0.fraction_changed TO OI0_3.set_fraction ROUTE OI0_3.value_changed TO Welder.rot_vl5 |