Справочник по VRML : Цвет и текстура

смотрим также

Материал из Справочник Web-языков

Версия от 15:35, 26 апреля 2011; Evgen (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Содержание

Material

Используется для того, чтобы определить свойства материала поверхностей текущей формы и форм, которые она содержит. Используя этот узел с узлом MaterialBinding ( который обсуждается дальше ), можно придать объектам сцены различный вид.

Пример:

Material {
    ambientColor 0.2 0.2 0.2 
    diffuseColor 0.7 0.7 0.7 
    specularColor 0 0 0 
    shininess 0.2 
    emissiveColor 0 0 0 
    transparency 0 
    }
ambientColor,diffuseColor,specularColor
- Управляют цветами и указываются в палитре RGB(красный, зеленый, синий)
shininess и transparency
- Определяет степень прозрачности, и может принимать значения от 0 (не прозрачный) до 1 (прозрачный).Для того, чтобы объект выглядел очень ярким, установите поле shininess равным 1. Чтобы сделать объект прозрачным, установите значение поля transparensy равным 1.

Узел Material определяет то, как выглядит материал. Необходимо отметить, что различные формы интерпретируют материал по-разному. Для того, чтобы связать материалы с образами, формами, документы VRML используют узел MaterialBinding.

MaterialBinding

Документы VRML используют этот узел для того, чтобы определить, каким образом именно броузер должен связать текущие материалы с формами рамках графа сцены.

Пример:

MaterailBinding { 
    value DEFAULT # SFEnum 
    }
value
- Описывает, как узел MaterialBinding связывает материал с объектом, его частями, гранями, вершинами.
Значения:
  • DEFAULT - броузер использует связывание по умолчанию
  • OVERALL - броузер использует то самое связывание ко всему объекту
  • PER_FACE - броузер использует указанный материал к каждой грани объекта
  • PER_FACE_INDEXED - броузер использует указанный материал к каждой грани объекта, основываясь на значениях индекса материала
  • PER_PART - броузер использует указанный материал к каждой части объекта
  • PER_PART_INDEXED - броузер использует указанный материал к каждой части объекта, основываясь на значениях индекса материала
  • PER_VERTEX - броузер использует указанный материал для каждой вершины объекта
  • PER_VERTEX_INDEXED - броузер использует указанный материал для каждой вершины объекта, основываясь на индексе материала

Заметьте, что броузер может интерпретировать связывание материала для каждого узла, для каждой вершины, формы различным образом. Текущий материал всегда имеет базовое значение, которое определено первым значением всех полей материалов. Поскольку поля материалов могут иметь различные значения, узел MaterialBinding определяет, каким способом броузер применяет, т.е. связывает материалы в пределах формы. Когда броузер должен связать набор материалов с объектом, он циклически просматривает значения материалов от начала до конца.

Texture2

Имитирование различных поверхностей.

Синтаксис:

Texture2 {
    filename "image.gif"
    image 0 0 0
    wrapS REPEAT
    wrapT REPEAT
    }

В качестве текстуры лучше всего указывать графический файл. Тогда для "натягивания" изображения на объект достаточно только указать путь к файлу в параметре filename.

wrapS,wrapT
- управляют натягивание текстуры на объект по соответственно горизонтально и вертикальной осям.
Возможные значения:
  • wrapS, wrapT
  • REPEAT
  • CLAMP

Texture2Transform

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

Пример:

Texture2Transform { 
    center 0 0 # SFVec2f 
    rotation 0 # SFFloat 
    scaleFactor 1 1 # SFVec2f 
    translation 0 0 # SFVec2f 
    }
translation
- Определяет неоднородное масштабирование относительно произвольной точки, взятой в качестве центра.
rotation
- Задает вращение вокруг той же самой точки.

Вместе эти поля определяют двумерное преобразование, которое броузер применяет к текстурам.

TextureCoordinate2

Используется для того, чтобы определить набор двумерных координат, которые броузер использует для того, чтобы отобразить текстуры на вершины объектов PointSet, IndexedLineSet, IndexedFaceSet. Используя рассматриваемый узел, документы VRML заменяют текущие координаты текстуры.

Пример:

TextureCoordinate2 { 
    point 0 0 # MFVec2f 
    }
point
- Задает отображение пар координат ( состоящих из двух чисел в диапазоне от 0 до 1 ), которые устанавливают соответствие специфических точек и текстуры на соответствующем индексном множестве. Величина 0 служит началом отсчета на оси, а величина 1 есть наиболее удаленная точка текстуры вдоль оси. Сначала задают горизонтальную координату, а затем вертикальную.

Transform

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

Пример:

Transform { 
    center 0 0 0 # SFVec3f 
    rotation 0 0 1 0 # SFRotation 
    scaleFactor 1 1 1 # SFVec3f 
    scaleOrientation 0 0 1 0 # SFRotation 
    translation 0 0 0 # SFVec3f 
    }
center
- Определяет начало отсчета для выполнения преобразования.
rotation
- Определяет угол, на который броузер вращает объект - на манер, сходный с узлом Rotation.
scaleFactor
- Определяет, как броузер изменяет размер объекта подобно тому, как это выполняется узлом Scale.
scaleOrientation
- Определяет ориентацию для поля scaleFactor, что позволяет броузеру выполнить неоднородное масштабирование.
translation
- Определяет, как броузер двигает объект.

Рассматриваемый узел может содержать один или более следующих узлов: Rotation, Scale, Translation.

DirectionalLight

Используется для того, чтобы определить источники направленного света, которые освещают объекты лучами, идущими параллельно заданному трехмерному вектору на сцене графа VRML.

Пример:

DirectionalLight { 
    color 1 1 1 # SFColor 
    direction 0 0 -1 # SFVec3f 
    intensity 1 # SFFloat 
    on TRUE # SFBool 
    }
color
- Определяет цветовые компоненты: красный, зеленый и синий. Величины значений поля изменяются в пределах от 0.0 до 1.0. Например, если значением поля служат величины 1 0 0, то цвет оказывается чисто красным. Аналогично, значение поля равное 0 1 0, отвечает зеленому цвету.
direction
- Описывает трехмерный вектор, который задает направление света. Направление световых лучей оказывается параллельным трехмерному вектору, определенному полем direction.
intensity
- (Интенсивность) изменяется в пределах от 0.0 до 1.0, причем значение 1.0 соответствует наивысшей интенсивности.
on
- Включает направленный источник света, когда поле принимает значение TRUE и выключает его, когда значение - FALSE.

Узел DirectionalLight определяет источник освещения, который может воздействовать на соответствующий узел простой геометрии графа сцены в соответствии с текущим стилем освещения. Броузер применяет текущее преобразование к источнику направленного освещения. Используя сепаратор, можно отключить действие узла на объекты, которые находятся вне сферы сепаратора.

FontStyle

Используется для того, чтобы определить текущий стиль шрифтов, который будет использован узлами AsciiText. Броузер в свою очередь определяет спецификации шрифтов (исходные коды VRML не имеют элементов прямого управления атрибутами шрифтов).

Пример:

FontStyle { 
    family SERIF # SFEnum 
    size 10 # SFFloat 
    style NONE # SFBitMask 
    }
family
- Указывает на семейство шрифтов, такое как SERIF, SANS или TYPEWRITER.
size
- Определяет высоту шрифта.
style
- Служит для задания жирного шрифта или курсива. Оно может принимать значения соответственно NONE, BOLD, ITALIC.

MatrixTransform

Используется для того, чтобы определить матрицу трехмерных геометрических преобразований. Трехмерные преобразования требуют матрицы размером 4х4.

Пример:

MatrixTransform { 
    matrix 1 0 0 0 # SFMatrix 
    0 1 0 0 
    0 0 1 0 
    0 0 0 1 
    }

OrthographicCamera

Используется для того, чтобы определить параллельное проектирование из точки обзора. Как вы, вероятно, знаете, используя камеры, дизайнеры могут управлять углом или перспективой, в которой пользователь видит сцену VRML. Ортографическая камера не уменьшает объектов в зависимости от расстояния , как это делает перспективная камера. При проектировании с ортографической камерой по мере удаления пользователя от сцены объект отступает на задний план, но не приближается к точке исчезновения ( vanishing point - точке в центре наблюдаемой области, где объекты сходятся и исчезают в перспективе ).

Пример:

OrthographicCamera { 
    focalDistance 5 # SFFloat 
    height 2 # SFFloat 
    orientation 0 0 1 0 # SFRotation 
    position 0 0 1 # SFVec3f 
    }
FocalDistance
- Определяет расстояние от ортографической камеры до объектов.
height
- Определяет общую высоту наблюдаемого объема ( прямоугольник, в рамках которого появляются объекты ).
position
- Определяет координаты ортографической камеры x, y, z.
orientation
- Вращает ортографическую камеру. По умолчанию ортографическая камера расположена в точке ( 0,0,1 ) и ваш взгляд направлен вдоль оси Z в монитор.

Броузер применяет текущее преобразование к ортографической камере. Камеру можно позиционировать, помещая узел Transform перед узлом OrthographicCamera в графе сцены.

PerspectiveCamera

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

Пример:

PerspectiveCamera { 
    focalDistance 5 # SFFloat 
    heightAngle 0.785398 # SFFloat 
    orientation 0 0 1 0 # SFRotation 
    position 0 0 1 # SFVec3f 
    }
focalDistance
- Определяет расстояние от камеры до объекта.
heightAngle
- Определяет общий вертикальный угол обозреваемого пространства. Это пространство ограниченно правильной пирамидой.
position
- Определяет координаты камеры x,y,z.
orientation
- Вращает камеру. По умолчанию камера расположена в точке с координатами ( 0,0,1 ) и ваш взгляд направлен вдоль оси Z на монитор.

PointLight

Используется для того, чтобы поместить источник света в заданную точку трехмерного пространства. Точечный источник излучает одинаково по всем направлениям. Узел определяет источник света, который может воздействовать на следующие за ним формы в иерархии классов в графе сцены. Освещение зависит от текущего стиля освещения, который вы выбрали.

Пример:

PointLight { 
    color 1 1 1 # SFColor 
    intensity 1 # SFFloat 
    location 0 0 1 # SFVec3f 
    on TRUE # SFBool 
    }
color
- Управляет цветом, задавая смесь красного, зеленого и голубого. Значение цвета изменяется от 0 до 1 для каждого компонента.
location
- Определяет положение источника света в пределах сцены.
intensity
- Управляет интенсивностью источника света. Его значение изменяется от 0 до 1, где 1 отвечает наивысшей интенсивностью.
on
- Включает и выключает свет, где значение TRUE соответствует включенному, а FALSE - выключенному источнику. Броузер применяет текущее преобразование к источнику света.

Узел PointLight, расположенный в рамках узла Separator, не влияет на какие-либо объекты вне узла Separator.

ShapeHints

Используется для того, чтобы определить являются ли значения IndexedFaceSet отмечающими жестким или выпуклым граням, содержат ли они упорядоченные вершины. Документы VRML используют этот узел, чтобы программы обработки VRML-документов могли оптимизировать процесс рендеринга. В такую оптимизацию входит исключение невидимых граней и устранение двустороннего освещения, эффект которого также не виден. Например, если объект сцены является жестким и имеет упорядоченные вершины, программа реализации VRML может включить процесс устранения обратных граней и выключения освещения обеих сторон грани.

Пример:

ShapeHints { 
    creaseAngle 0.5 # SFFloat 
    faceType CONVEX # SFEnum 
    shapeType UNKNOWN_SHAPE_TYPE # SFEnum 
    vertexOrdering UNKNOWN_ORDERING # SFEnum 
    }
creaseAngle
- Устанавливает угол между нормалями на смежных гранях. Когда требуется IndexedFaceSet для формирования нормалей по умолчанию, используется поле creaseAngle, чтобы определить, какие края броузер должен плавно затемнить, а какие края должны иметь отчетливые границы. Угол складки ( crease angle ) определяется как угол между двумя нормалями к поверхности на смежных гранях. Например, угол складки 0.5 радиан ( значение по умолчанию ) указывает, что переход между двумя смежными полигональными гранями будет выглядеть плавным в случае, когда нормали к двум граням образуют угол, который меньше 0.5 радиан ( приближенно 30* ). В противном случае переход между этими двумя гранями будет резко обозначенным.
faceType
- Указывает, являются ли все грани форму выпуклыми ( значение CONVEX ), или же что документу неизвестно ничего о гранях ( значение UNKNOWN_SHAPE_TYPE ).
vertexOrdering
- Позволяет указывать на упорядоченность вершин объектов.
Возможные значения:
  • UNKNOWN_ORDERING - упорядоченность неизвестна
  • CLOCKWISE - упорядоченность по часовой стрелке
  • COUNTERCLOCKWISE - упорядоченность против часовой стрелки
shapeType
- Показывает, ограничивает ли форма объем ( значение SOLID ), или же тип формы неизвестен ( значение UNKNOWN_SHAPE_TYPE ).

SpotLight

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

Пример:

SpotLight { 
    color 1 1 1 # SFVec3f 
    cutOffAngle 0.785398 # SFFloat 
    direction 0 0 -1 # SFVec3f 
    dropOffRate 0 # SFFloat 
    intensity 1 # SFFloat 
    location 0 0 1 # SFVec3f 
    on TRUE # SFBool 
    }
color
- Определяет смесь цветов: красного, зеленого и голубого. Броузер направит лучи прожектора в конусе вокруг трехмерного вектора направления, заданного полем direction. Интенсивность света уменьшается экспоненциально по мере смещения лучей от центра конуса.
cutOffAngle
- Контролирует угол конуса.
location
- Определяет координаты прожектора в рамках графа сцены.
dropOffRate
- Задает, как быстро спадает освещенность по мере увеличения расстояния ( принимает значения от 0 до 1, где 0 соответствует наименьшему ослаблению с расстояния ).
on
- Включает и выключает прожектор.
intensity
- Управляет интенсивностью освещения. Его значение изменяется от 0 ( низкая интенсивность ) до 1 ( высокая интенсивность ).

Броузер применяет текущее преобразование к узлу. Если узел расположен внутри узла Separator , то он влияет на объекты, расположенные вне узла Separator.

Источник — «https://www.spravkaweb.ru/vrml/color/»
Добавить страницу в закладки:
РАЗРЕШАЕТСЯ перепечатывать и копировать информацию ТОЛЬКО ПРИ РАЗМЕЩЕНИИ ссылки на оригинал!
(<A href="https://www.spravkaweb.ru/">Справочник Web-языков</A>)
другие проекты
Rambler\'s Top100 Индекс цитирования