[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / VRML /

Шаг 14 - Сетка высот, узел ElevationGrid

Этот узел определяется следующим образом:

ElevationGrid { 
  eventIn      MFFloat  set_height
  exposedField SFNode   color             NULL
  exposedField SFNode   normal            NULL
  exposedField SFNode   texCoord          NULL
  field        MFFloat  height            []
  field        SFBool   ccw               TRUE
  field        SFBool   colorPerVertex    TRUE
  field        SFFloat  creaseAngle       0
  field        SFBool   normalPerVertex   TRUE
  field        SFBool   solid             TRUE
  field        SFInt32  xDimension        0
  field        SFFloat  xSpacing          1.0
  field        SFInt32  zDimension        0
  field        SFFloat  zSpacing          1.0
}

Он задает в пространстве сетку лежащую в плоскости XZ (т.е. на поверхности "земли"), в которой каждая точка пересечения поднята или опущена по отношению к плоскости Y=0 на высоту определенную в массиве height[].

Данный массив имеет размерность заданную в количестве элементов сетки по оси X и Z соответствующими параметрами xDimension и zDimension. Если мы хотим создать сетку 5х5 элементов, то мы должны задать массив height из 25 элементов.

Параметры xSpacing и zSpacing задают расстояние между линиями сетки в метрах. Давайте рассмотрим пример:

#VRML V2.0 utf8
WorldInfo { 
  info  ["ElevationGrid Example !!!"]
  title "ElevationGrid"
}
Group {
children[
	Shape {
		appearance Appearance {
#			назначаем красный цвет для
#			поверхности (diffuseColor 1 0 0)
			material Material {
				diffuseColor 1 0 0
			}
		}
		geometry ElevationGrid {
			xDimension 5
			zDimension 5
			xSpacing 0.5
			zSpacing 0.5			
			height[
				.1  .2  .3  .4  .5
				.1  .4  .3  .3  .4
				.1  .2  .2  .3  .3
				.1  .1  .3  .2  .2
				.3  .1  .1  .1  .2
			]			
		}
	}
]
}

После этого браузер отобразит нечто похожее на следующий рисунок:

Он конечно же изобилует дополнительными построениями, которые я выполнил для того, чтобы был более понятен процесс происходящего. Из рисунка мы видим, что наша выпуклая поверхность помещяется первой точкой height[0] в центр координат. Это отличает данный узел от других, так как рассматриваемые нами узлы до этого устанавливались своим центром в точку (0,0,0).

Также из рисунка мы можем наглядно понять, как влияет количество точек xDimension и zDimension, а также расстояние между ними xSpacing и zSpacing на отображаемую поверхность. Чем больше точек вы зададите, тем более качественную (т.е. сглаженную) поверхность получите, естественно при этом и расстояние между точками надо уменьшать.

Поле solid, как и раньше, влияет на количество видимых сторон поверхности. Если поле solid установлено в FALSE, то поверхность видна с двух сторон, если TRUE (значение по умолчанию), то поверхность видна только сверху.

Поле creaseAngle влияет на гладкость поверхности. Значение этого поля задается в радианах. Между нормалями двух соседних граней существует геометрический угол, значение этого угла сравнивается со значением поля creaseAngle. Если значение поля больше угла между нормалями, то между этими гранями переход отображается сглаженным, иначе угол будет "острым". Следующие три рисунка демонстрируют этот эффект:

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




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / VRML /

Шаг 19 - Трехмерный текст, узел Text
17-09-2009   

Узел Text описывается следующим образом... подробнее

Кол. просмотров: общее - 2968 сегодня - 0

Шаг 18 - Стиль шрифта, узел FontStyle
17-09-2009   

Узел FontStyle задает стиль шрифта для использования его в трехмерном тексте. Определен данный узел следующим образом... подробнее

Кол. просмотров: общее - 2942 сегодня - 0

Шаг 17 - Экструзии или вытягивание контуров, узел Extrusion
17-09-2009   

Для начала давайте разберемся с тем, что же такое вообще экструзия. Экструзия представляет собой тело полученной проведением контура вдоль какого-то пути. Контур может быть замкнутым, для получения объемного тела, а может быть незамкнутым, в таком случае получится какой-то рельеф. На рисунке ниже представлена формула экструзии... подробнее

Кол. просмотров: общее - 2733 сегодня - 0

Шаг 16 - Массив трехмерных линий, узел IndexedLineSet
17-09-2009   

Прежде чем рассматривать основной узел давайте познакомимся с узлом Color... подробнее

Кол. просмотров: общее - 2884 сегодня - 1

Шаг 15 - Созданние сложных тел, узел IndexedFaceSet
17-09-2009   

Прежде чем разбираться с узлом IndexedFaceSet нам надо разобраться с узлом Coordinate. Определяется он следующим образом... подробнее

Кол. просмотров: общее - 2934 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects