Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Наложение текстур

Процедура наложения текстур состоит из двух частей, которыми занимаются соответствующие узлы. Узлы ImageTexture, MovieTexture, PixelTexture описывают ЧТО использовать в качестве текстуры, а вспомогательные узлы TextureCoordinate и TextureTransform задают КАК разместить текстуру на объекте. Аналогичная ситуация уже встречалась в разделе "Текст", где узел Text задавал ЧТО написать, а FontStyle задавал КАК это сделать.

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

Описание:

ImageTexture {
url []
repeatS TRUE
repeatT TRUE
}

Узел ImageTexture - очень полезный узел, предназначенный для обтягивания объектов картинками. Область использования этого приема исключительно широка: начиная от создания аватара с собственной фотографией и заканчивая привешиванием картинок на background. В разделе url указывается местоположения графического файла.

Самой текстуре присваивается локальная система координат 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 and RGB

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

Просмотр. Текст кода.

Пусть вас не смущает наличие в коде узла Viewpoint. О принципах его работы будет сказано чуть позже.

MovieTexture (текстура-видеоролик)

Описание:

MovieTexture {
loop FALSE
speed 1.0
startTime 0
stopTime 0
url []
repeatS TRUE
repeatT TRUE
}

Данный узел в качестве текстуры задает файл в формате MPEG. Поскольку этот формат позволяет хранить как видео-, так и аудиоинформацию, соответственно узел MovieTexture может появляться и в разделе texture узла Appearance, и в разделе source узла Sound (о нем позже). В последнем случае, естественно, рендеринг изображения не проводится, а обрабатывается только саундтрек файла.

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

Параметр speed позволяет задавать скорость проигрывания MPEG файла. В случае speed <0 проигрывание идет в обратном порядке. В случае speed=0 будет статично отображаться 0-й фрейм MPEG файла.

startTime и stopTime определяют обработку проигрывания во времени MPEG файла и обычно используются для запуска/остановки в определенный момент или после определенного события.

Параметры url, repeatS и repeatT занимаются тем же, что и в узле ImageTexture

Просмотр. Текст кода.

ЗАМЕЧАНИЕ. Эту mpg-шку, подвернувшуюся под руку, я где-то в сети нашел. Сам же обычно их изготавливаю так: рисую кадры -> собираю в avi -> конвертирую в mpg. Если кто идет другим путем - напишите, вдруг есть удобнее.

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

Описание:

PixelTexture {
image 0 0 0
repeatS TRUE
repeatT TRUE
}

Механизм работы данного узла такой же, как и у ImageTexture, кроме того, что Вы указываете не готовую картинку из файла, а должны ручками раскрасить каждый указанный Вами пиксель. Ситуации, когда Вам такой выход покажется оптимальным, единичны. Что такое repeatS и repeatT читайте выше.

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

Таким образом, запись

PixelTexture {image 2 2 1 0 255 255 0}
задает текстуру размером 2x2, раскрашенную в шахматном порядке белым и черным

Просмотр. Текст кода.

А запись

PixelTexture {image 2 2 4 0xff000080 0x00ff0080 0x0000ff80 0x00000080}
задает текстуру в полупрозрачную клеточку красного, зеленого, синего и черного цвета.

Можете посмотреть кубик с такой текстурой. Для иллюстрации полупрозрачности текстуры внутри я расположил белый непрозрачный шарик. Если Вы его не видите в своем броузере, переключитесь в режим wireframe и убедитесь, что он там есть. Кстати, даже если Вы видите этот шарик сквозь полупрозрачные стенки кубика, не надейтесь разглядеть противоположные грани кубика!!! Как уже говорилось несколько раз, вид примитивов ИЗНУТРИ не определен.

Просмотр. Текст кода.

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

Описание:

TextureTransform {
center 0 0
rotation 0
scale 0
translation 0 0
}

Как упоминалось в начале этой страницы, узел TextureTransform применяется для указания КАК разместить текстуру на объекте. Названия параметров узла говорят сами за себя: center задает точку, относительно которой происходит вращение (rotation) и масштабирование (scale). Translation сдвигает текстуру по поверхности объекта. Все действия проводятся в локальной ST-системе координат текстуры, о которой смотри выше. Узел TextureTransform, безусловно, жизненно необходим, но пользоваться им путем "ручного" исправления параметров очень неудобно. В любом приличном VRML редакторе трансформация текстур проводится визуально перетаскиванием либо самой текстуры (например, ISB), либо слайдеров, задающих численые параметры rotation, scale, translation (например,CosmoWorlds).

Видели когда-нибудь стены, сложенные пьяными каменщиками наискосок? Нет? Можете посмотреть :)

Просмотр. Текст кода.

Назад | Содержание | Вперед

 

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...