Study/VRML 3D 프로그래밍 프로젝트 - 유성 구현 코딩하는 야구쟁이 2011. 11. 15. 20:18 #VRML V2.0 utf8 NavigationInfo { headlight FALSE } DEF view Viewpoint { position 0 0 20 } DEF meteor Transform { rotation 0 1 1 .75 children [ Transform {translation 3 0 0 rotation 0 1 0 1.57 children [Shape { geometry Sphere { radius .5} appearance Appearance { material Material { transparency .2}} } ]} DirectionalLight { color 1 .05 0 direction 5 5 -2 } DEF star1 Transform { children Shape { geometry PointSet { coord DEF cd1 Coordinate{ point [] } } appearance Appearance { material DEF cc1 Material { emissiveColor .87 .41 .12 } } }} DEF star2 Transform { children Shape { geometry PointSet { coord DEF cd2 Coordinate{ point [] } } appearance Appearance { material DEF cc2 Material { emissiveColor .55 .57 .012 } } }} DEF star3 Transform { children Shape { geometry PointSet { coord DEF cd3 Coordinate{ point [] } } appearance Appearance { material DEF cc3 Material { emissiveColor 1 1 1 } } }} ]} DEF time TimeSensor{ cycleInterval .1 loop TRUE } DEF time_m TimeSensor{ cycleInterval 40 loop TRUE } DEF sc Script { field SFNode cc1 USE cc1 field SFNode cd1 USE cd1 field SFNode cc2 USE cc2 field SFNode cd2 USE cd2 field SFNode cc3 USE cc3 field SFNode cd3 USE cd3 field SFNode view USE view field SFVec3f position 0 0 0 eventOut MFVec3f pos eventIn SFTime time field SFInt32 light 0 field SFInt32 k 0 url "javascript: function time() { var j = 4 ; var a=0 , b = 0, c = 0 ; for( i = 0 ; i < 70 ; i ++){ a= Math.random() ; b= Math.random() ; c= Math.random() ; position.x = a*20+5 ; position.y = b*.8 ; position.z = c*.8 ; k = i%j; if ( k ==0 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = position.z ; }} else if ( k ==1 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = -position.z ; }} else if ( k ==2 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = -position.z ; }} else { if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = position.z ; } } cd1.point = pos ; } for( i = 0 ; i < 70 ; i ++){ a= Math.random() ; b= Math.random() ; c= Math.random() ; position.x = a*20+2 ; position.y = b*.8 ; position.z = c*.8 ; k = i%j; if ( k ==0 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = position.z ; }} else if ( k ==1 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = -position.z ; }} else if ( k ==2 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = -position.z ; }} else { if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = position.z ; } } cd2.point = pos ; } for( i = 0 ; i < 80 ; i ++){ a= Math.random() ; b= Math.random() ; c= Math.random() ; position.x = a*15 ; position.y = b*.3 ; position.z = c*.3 ; k = i%j; if ( k ==0 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = position.z ; }} else if ( k ==1 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = position.y ; pos[i].z = -position.z ; }} else if ( k ==2 ){ if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = -position.z ; }} else { if ( a >= b && a >= c) { pos[i].x = position.x ; pos[i].y = -position.y ; pos[i].z = position.z ; } } cd3.point = pos ; } } " } DEF pos PositionInterpolator { key [ 0 .25 .5 .75 1 ] keyValue [ 130 70 -90 65 35 -90 0 0 -90 -65 -35 -90 -130 -70 -90 ] } ROUTE time_m.fraction_changed TO pos.set_fraction ROUTE pos.value_changed TO meteor.translation ROUTE time.cycleTime TO sc.time meteor.wrl