#VRML V2.0 utf8
#опис прототипу кулі
PROTO MySphere [ field SFVec3f trans 0 0 0 field SFFloat radius 1 field SFColor color 1 1 1
] { Transform { translation IS trans
children [ Shape {
appearance Appearance { material Material { diffuseColor IS color
}
}
geometry Sphere { radius IS radius
}
}
]
}
}
#опис прототипу паралелепіпеда
PROTO MyBox [
field SFVec3f trans 0 0 0 field SFColor color 1 0 1 field SFVec3f size 1 1 1
] { Transform { translation IS trans
children [ Shape {
appearance Appearance { material Material { diffuseColor IS color
} } geometry Box { size IS size
}
}
]
}
}
#опис групи об'єктів, яка складається з кулі та паралелепіпеда.
Transform { children [ Group { children [ MySphere { trans 1 2 3 color 1 0.5 0 radius 2 } MyBox { trans -5 3 0 size 1 2 3
}
]
}
]
}
Взаємодія об'єктів VRML здійснюється за допомогою повідомлень. Повідомлення можуть генеруватися користувачем, а також активними вузлами.
Повідомлення користувача генеруються за допомогою вузлів - сенсорів.
У специфікації VRML визначені кілька різних типів сенсорів, що реагують на різні дії користувача.
Вузли - сенсори не мають візуальної частини. Контроль сенсора поширюється тільки на об'єкти, що знаходяться з ним в одній групі (у даному прикладі TouchSensor контролює натискання лівої клавіші миші тільки на кубі).
Крім сенсорів повідомлення можуть генеруватися за допомогою активних вузлів.
TimeSensor { } - клас, що номінально належить до сімейства сенсорів, але по суті є активним елементом. Забезпечує генерацію "часових імпульсів" (за своїми функціями чимось нагадує тактовий генератор).
cycleInterval - поле класу TimeSensor, що задає тривалість роботи даного вузла (час, протягом якого генеруються "часові імпульси" з моменту одержання вузлом повідомлення про активацію).
Одним із сімейств активних елементів є інтерполятори. Звичайно інтерполятори мають два взаємозалежних поля key та keyValue. z key [ ] - поле, що є у iнтерполяторi будь-якого типу. Мiстить у собi набiр рацiональних значень у промiжку [0,1]. Кiлькiсть значень задається залежно вiд необхiдностi. Данi значення є вiдносними величинами, що розбивають часовий iнтервал на вiдрiзки заданої довжини. Наприклад, якщо є запис key [0, 0.5, 1] - це означає, що весь часовий iнтервал розбивається на два вiдрiзки 0%-50% вiд заданого iнтервалу i 50% - 100% вiд заданого iнтервалу. 0, 0.5, 1 - кiнцевi крапки загального часового iнтервалу (1 еквiвалентна 100%, 0.5 - 50%, 0 - 0%). z keyValue [ ] - поле, що є у iнтерполяторi будь-якого типу. Це поле мiстить набiр значень, обумовлених типом iнтерполятора. Кiлькiсть значень повинна точно дорiвнювати кiлькостi кiнцевих точок часового iнтервалу.
Загалом, функція вузлів даного сімейства виглядає у такий спосіб: інтерполятор повинен протягом заданого проміжку часу з заданою періодичністю, залежно від поля key, послідовно вибирати з таблиці keyValue задані значення.
Отже, періодичність вибірки значень визначається значеннями поля key, а самі значення задаються полем keyValue. Варіюючи довжини часових відрізків (значення поля key) можна домагатися рівномірної чи нерівномірної вибірки заданих значень з часом.
ColorInterpolator { } - iнтерполятор, що задає послiдовнiсть значень типу SFColor (тип даних для опису кольору матерiалу).
Опис шляхів трансляції повідомлень здійснюється за допомогою операторів ROUTE і TO. Загальний вигляд:
Тип джерела повідомлення повинен збігатися з типом приймача повідомлення.
Примітка: опис типів повідомлень, властивим різним групам об'єктів приводяться в додатку.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.