VRML

1.Общие сведения(структура программы, простейший пример)
2
.Прототипы
3.Группирование объектов
4.Динамические объекты
5.Усложненный пример
6.Основные типы данных
7.Основные узлы и работа с ними

Усложненный пример

   Приводящийся ниже пример предназначен для самостоятельного изучения. В качестве пояснения следует сказать, что данный пример, по сути, является усложненным вариантом предыдущего примера, с той лишь разницей, что изменяется не цвет наблюдаемого объекта, а его координаты.

   Данный пример демонстрирует перемещение объекта ( в данном случае - шара ) в четырех направлениях в результате нажатия на соответствующие управляющие элементы ( стрелки ).

VRML V2.0 utf8
#Описание прототипа стрелки
PROTO Pointer [ exposedField SFVec3f translation 0 0 0
               exposedField SFRotation rotation 0 0 1 0
               ] 
{
 Transform {
  translation IS translation
  rotation IS rotation  
  children [
   Transform {
    children [
     Shape {
      appearance Appearance {
       material Material {
        diffuseColor 0 1 0
       }
      }
      geometry Cylinder {
       height 3
       radius 0.5
      }
     }
    ]  
   }
   Transform {
    translation 0 2 0
    children [
     Shape {
      appearance Appearance {
       material Material {
        diffuseColor 0 1 0
       }
     }
      geometry Cone {}
     }
    ]  
   }
  ]
 }
}
#Описание четырех стрелок
Group {
 children [
  Pointer {
   translation 22 -20 0
   rotation 0 0 1 -1.57
  }
  DEF Right TouchSensor {}
 ]
}
Group {
 children [
  Pointer {
  translation 18 -20 0
   rotation 0 0 1 1.57
  }
  DEF Left TouchSensor {}
 ]
}
Group {
 children [
  Pointer {
   translation -20 22 0
  }
  DEF Up TouchSensor {}
 ]
}
Group {
 children [
  Pointer {
   translation -20 18 0
   rotation 0 0 1 3.14
  }
  DEF Down TouchSensor {}
 ]
}
#Описание шара
DEF Ball Transform {
children [
  Shape {
   appearance Appearance {
    material Material {
     diffuseColor 0.5 0.2 0.8
    }
   }
  geometry Sphere {
    radius 3
   }
  }
 ]  
}
#Описание таймеров
DEF Timer_Left TimeSensor {
   cycleInterval 2.0
}
DEF Timer_Right TimeSensor {
  cycleInterval 2.0
}
DEF Timer_Up TimeSensor {
  cycleInterval 2.0
}
DEF Timer_Down TimeSensor {
   cycleInterval 2.0
}
#Описание интерполяторов
DEF Move_Left PositionInterpolator {
   key [0, 0.25, 0.5, 0.75, 1]
   keyValue [0 0 0, -10 0 0, -20 0 0, -10 0 0, 0 0 0]
}
DEF Move_Right PositionInterpolator {
   key [0, 0.25, 0.5, 0.75, 1]
   keyValue [0 0 0, 10 0 0, 20 0 0, 10 0 0, 0 0 0]
}
DEF Move_Up PositionInterpolator {
   key [0, 0.25, 0.5, 0.75, 1]
   keyValue [0 0 0, 0 10 0, 0 20 0, 0 10 0, 0 0 0]
}
DEF Move_Down PositionInterpolator {
   key [0, 0.25, 0.5, 0.75, 1]
   keyValue [0 0 0, 0 -10 0, 0 -20 0, 0 -10 0, 0 0 0]
}
#Описание путей трансляции сообщений
ROUTE Left.touchTime TO Timer_Left.startTime
ROUTE Timer_Left.fraction_changed TO Move_Left.set_fraction
ROUTE Move_Left.value_changed TO Ball.translation
ROUTE Right.touchTime TO Timer_Right.startTime
ROUTE Timer_Right.fraction_changed TO Move_Right.set_fraction
ROUTE Move_Right.value_changed TO Ball.translation
ROUTE Up.touchTime TO Timer_Up.startTime
ROUTE Timer_Up.fraction_changed TO Move_Up.set_fraction
ROUTE Move_Up.value_changed TO Ball.translation
ROUTE Down.touchTime TO Timer_Down.startTime
ROUTE Timer_Down.fraction_changed TO Move_Down.set_fraction
ROUTE Move_Down.value_changed TO Ball.translation

 

 

   
   
Главная Введение Язык VRML VRML 97 Cсылки Софт (Скачать) О сайте
             
Hosted by uCoz