VRML 97 - Накладання текстур

Процедура накладання текстур і двох частин, якими займаються відповідні вузли. Вузли ImageTexture, MovieTexture, PixelTexture описують ЩО використовувати як текстуру, а допоміжні вузли TextureCoordinate та TextureTransform задають ЯК розмістити текстуру на об'єкті. Аналогічна ситуація вже зустрічалася у розділі "Текст", де вузол Text задавав ЩО написати, а FontStyle задавав ЯК це зробити.

ImageTexture (текстура-картинка)

Самій текстурі надається локальна система координат S на T, де S відповідає нижньому обрізу картинки, а T - лівому. Значення S та T змінюються від 0 (лівий нижній піксель) до 1 (правий нижній піксель для S та лівий верхній піксель для T). Значення параметрів repeatS та repeatT визначають, чи буде текстура розмножена у напрямках S і T, щоб заповнити весь об'єкт.

Тепер кілька слів про формати. Броузерам СТРОГО ПРИПИСАНО підтримувати jpeg і png. Але також зазвичай підтримуються gif і ряд інших поширених форматів.

Ті броузери, які я використав, підтримують:

MS VRML 2.0 Viewer: GIF, BMP, JPG, RAS, PPM, PNG.

Cosmoplayer: у release notes вказані тільки JPEG та PNG, але GIF точно підтримується.

Paragraph Cortona: у явному вигляді не знайшов, але виходячи з того, що ISB підтримує BMP, GIF, JPEG і PNG, то, ймовірно, і Cortona з цими форматами впорається

GLView: DIB, BMP, GIF, TGA, JPEG, PPM та RGB

Я сподіваюся, ви ще не забули, що як приклад поступово створюється стіл, на якому вже стоїть глобус та клітина. Ось його ми й відтектуримо.

Нехай вас не бентежить наявність у коді вузла Viewpoint. Про принципи його роботи буде сказано трохи згодом.

loop, як зазвичай ставить,чи файл прокручуватиметься нескінченно.

Параметр speed дозволяє встановити швидкість програвання MPEG файлу. У разі speed збираю в avi -> конвертую в mpg. Якщо хтось йде іншим шляхом - напишіть, раптом є зручніше.

PixelTexture (піксельна текстура)

У параметрі image перші два числа задають розмір текстури в пікселях, третє спосіб розфарбовування: 1 - градації сірого, 2 - градації сірого плюс прозорість, 3 - кольорове зображення, 4 - кольорове зображення плюс прозорість.

Таким чином, запис

задає текстуру розміром 2x2, розфарбовану в шаховому порядку білим та чорним

задає текстуру в напівпрозору клітинку червоного, зеленого, синього та чорного кольорів.

Можете подивитися кубик із такою текстурою. Для ілюстрації напівпрозорості текстури всередині я розташував білу непрозору кульку. Якщо Ви його не бачите у своєму броузері, перейдіть в режим wireframe і переконайтеся, що він там є. До речі, навіть якщо Ви бачите цю кульку крізь напівпрозорі стінки кубика, не сподівайтеся розглянути протилежні грані кубика. Як уже говорилося кілька разів, вид примітивів ЗНУТРІ не визначений.

TextureTransform (трансформація текстур)

Чи бачили колись стіни, складені п'яними мулярами навскіс? Ні? Можете подивитись :)