Оператор USE працює з іменованими вузлами.
Примітка: за замовчуванням усі вузли в VRML не мають власного унікального імені. Ім'я може бути привласнено будь-якому вузлу, однак не має сенсу іменувати всі об'єкти без необхідності. Власні унікальні імена необхідні тільки динамічним об'єктам і об'єктам, аналоги яких будуть створюватися за допомогою оператора USE.
Для присвоєння об'єкту унікального імені необхідно скористатися оператором DEF. Загальний вигляд:
У даному прикладі описується побудова двох кубів з ребром 2 на які накладається текстура, що зберігається у файлі logo.jpeg.
#VRML V2.0 utf8
#опис куба з іменем MyBox
Transform { translation 0 0 0 children [
DEF MyBox Shape { appearance Appearance { texture ImageTexture { url ["logo.jpeg"]
} } geometry Box {
size 2 2 2
}
}
]
}
#опис другого куба типу MyBox за допомогою оператора USE
Transform { translation 0 3 0 children [ USE MyBox
]
}
Примітка: у VRML файлах можливе застосування коментарів. Для позначення коментарю використовується символ #.
Для опису паралелепіпеда використовується клас Box { }. size - поле класу Box, що описує розміри паралелепіпеда по осях X, Y і Z відповідно.
Використання прототипів дозволяє істотно скоротити текст програми та істотно полегшити її написання.
Опис об'єкта за створеним прототипом зводиться до визначення імені прототипу і нових значень, що привласнюються перевизначеним полям.
Слово PROTO є зарезервованим і використовується для оголошення (декларації) прототипу.
Загальний вигляд прототипу:
Ім'я_прототипу PROTO [поля_даних] {тіло_прототипу} Ім'я_прототипу - обов'язковий параметр.
Де z field - зарезервоване слово. z exposedField - аналог field. Застосовується при роботі з динамічними об'єктами. Поле, оголошене як exposedField дозволяє динамічно змінювати своє значення в процесі роботи.
z Тип_даних - назва типу даних, що привласнюються полю. z Назва_поля - дозволяє перевизначати назви полів. z Значення_за_замовчуванням - дозволяє перевизначити значення за замовчуванням для даного поля.
Тіло_прототипу - містить повний опис прототипу. Опис прототипу відрізняється від опису об'єкта тим, що у полях даних, що заміщаються, замість значень підставляються назви перевизначених полів даних.
Слово IS є зарезервованим і показує, що дане поле заміщається перевизначеним. Загальний вигляд оператора заміщення:
Назва_поля_що_заміщується IS назва_перевизначеного_поля Назви перевизначених полів визначаються користувачем.
Назва перевизначеного поля може збігатися з назвою поля, що заміщується. Використання прототипів рекомендується тільки у тому випадку, коли один і той - же об'єкт використовується (можливо, з різними візуальними властивостями) у декількох екземплярах при побудові світу.
Якщо при визначені об'єкта описані не всі переобумовлені поля, то вступає в дію принцип умовчання.
#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
}
}
]
}
}
#опис екземпляру кулі
MySphere { trans 1 2 3 color 1 0.5 0 radius 2
}
У даному прикладі прототип об'єкта "Куля" спочатку був описаний а потім використаний.
Group { } - клас, що поєднує у собі групу об'єктів.
children [ ] - поле класу Group, усередині якого можуть бути описані інші об'єкти.
У даному прикладі описані два прототипи для створення кулі і паралелепіпеда з заданими властивостями.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.