Upload
tana-guerra
View
88
Download
6
Embed Size (px)
DESCRIPTION
Мултимедия и основи на уеб дизайна. а с.Елена Първанова. Създаване на сложни фигури с VRML. Поставяне на текст в 3D сцената. 2011. ТЕМА 1 2. Геометрични възли. PointSet node. Синтаксис. PointSet { exposedField SFNode color NULL exposedField SFNode coord NULL }. - PowerPoint PPT Presentation
Citation preview
Създаване на сложни фигури с VRML. Поставяне на текст в 3D сцената.
МУЛТИМЕДИЯ И ОСНОВИ НА УЕБ ДИЗАЙНА
ас.Елена Първанова
2011
ТЕМА 12
ГЕОМЕТРИЧНИ ВЪЗЛИ
PointSet node• PointSet node определя набор
от 3D точки с цвят в локалната координатна система.
• Възела съдържа две полета color и coord.
• Полето color определя цвета на точките с Color node: Color { color [ ] }
• Полето coord определя местоположението на точките с Coordinate node :Coordinate { point [ ] }
Синтаксис
PointSet { exposedField SFNode color NULLexposedField SFNode coord NULL
}
PointSet node#VRML V2.0 utf8 Shape {
appearance Appearance {material Material {
emissiveColor 1.0 1.0 1.0 }
} geometry PointSet {
coord Coordinate { point [ # координати за горната повърхност на куба
-1.0 1.0 1.0, 1.0 1.0 1.0, 1.0 1.0 -1.0, -1.0 1.0 -1.0,
# координати за долната повърхност на куба-1.0 -1.0 1.0, 1.0 -1.0 1.0, 1.0 -1.0 -1.0, -1.0 -1.0 -1.0 ]
} }
}
Пример – куб от точки
Фиг.12.1 Изображение на примераКуб от точки
Виж 3D модела
ГЕОМЕТРИЧНИ ВЪЗЛИ
IndexedLineSet node• IndexedLineSet node определя набор
от линии с цвят в локалната координатна система.
• Възелът съдържа 5 полета: coord, coordIndex, color, colorIndex и colorPerVertex.
• Полето coordIndex определя списък от координатни индекси, дефиниращи изрисуването на линиите.
• ColorIndex изпълнява същата функция като coordIndex, но относно цветовете.
• ColorPerVertex дефинира как цветовете да бъдат прилагани: colorPerVertex е TRUE – цветовете се
прилагат към всеки връх; colorPerVertex е FALSE - цветовете се
прилагат към всяка линия.
Синтаксис
IndexedLineSet { coord NULL coordIndex [ ] color NULL colorIndex [ ] colorPerVertex TRUE
}
ГЕОМЕТРИЧНИ ВЪЗЛИ
IndexedLineSet nodeПример – куб от линии
#VRML V2.0 utf8Shape {
appearance Appearance { material MaterialemissiveColor 1.0 1.0 1.0 }
}geometry IndexedLineSet {
coord Coordinate { point [
# координати за горната повърхност на куба1.0 1.0 1.0, 1.0 1.0 1.0, 1.0 1.0 -1.0, -1.0 1.0 -1.0,
# координати за долната повърхност на куба1.0 -1.0 1.0, 1.0 -1.0 1.0, 1.0 -1.0 -1.0, -1.0 -1.0 -1.0 ]
}coordIndex [
0, 1, 2, 3, 0, -1, # отгоре 4, 5, 6, 7, 4, -1, # отдолу 0, 4, -1, # вертикални ръбове1, 5, -1,2, 6, -1, 3, 7
] }
}
Фиг.12.2 Изображение на примераКуб от линии
Виж 3D модела
ГЕОМЕТРИЧНИ ВЪЗЛИ
IndexedFaceSet node• IndexedFaceSet node определя набор от повърхнини в
локалната координатна система.• Полето coord се представят 3D координатите.• Полето coordIndex определя списък от координатни индекси,
които се използват за изчертаване на повърхнината.• Маркерът -1 показва, че дадената повърхнина е създадена и
започва другата.• texCoordIndex се използва за прилагане на текстура по
зададени координати.• Полето ccw определя дали точките дефиниращи
повърхнината да се представят обратно (TRUE) или по часовниковата стрелка (FALSE).
• Полето solid обуславя дали браузъра да изчертава двете страни на повърхнината (FALSE) или само предната (TRUE).
• Полето convex определя дали повърхнините дефинирани coordIndex да бъдат изпъкнали или не.
• Полето creaseAngle определя ъгъла на закръгление.
Синтаксис
IndexedFaceSet { coord NULL coordIndex [ ] color NULL colorIndex [ ] colorPerVertex TRUE normal NULL normalIndex [ ] normalPerVertex TRUE texCoord NULL texCoordIndex [ ] ccw TRUE Convex TRUE solid TRUE creaseAngle 0.0
}
ГЕОМЕТРИЧНИ ВЪЗЛИ
Пример – куб от повърхнини
#VRML V2.0 utf8Shape {
appearance Appearance {material Material { }
}geometry IndexedFaceSet {
coord Coordinate { point [
# координати за горната повърхност на куба -1.0 1.0 1.0, 1.0 1.0 1.0, 1.0 1.0 -1.0, -1.0 1.0 -1.0,
# координати за долната повърхност на куба -1.0 -1.0 1.0, 1.0 -1.0 1.0, 1.0 -1.0 -1.0, -1.0 -1.0 -1.0 ]
}coordIndex [0, 1, 2, 3, -1, # отгоре 7, 6, 5, 4, -1, # отдолу 0, 4, 5, 1, -1, # отпред 1, 5, 6, 2, -1, # дясно 2, 6, 7, 3, -1, #отзад3, 7, 4, 0 # ляво ]
} }
IndexedFaceSet node
Фиг.12.3 Изображение на примераКуб от повърхнини
Виж 3D модела
ГЕОМЕТРИЧНИ ВЪЗЛИ
ElevationGrid node• ElevationGrid node определя
мрежа от точки, всяка със зададена височина.
• Изгражда се в XZ повърхнина и има следните полета: xDimension: броя на точките в
мрежата по оста X. zDimension: броя на точките в
мрежата по оста Z. xSpacing: разстоянието между
две съседни точки по посока на оста X.
zSpacing: разстоянието между две съседни точки по посока на оста Z.
height: височина на всяка точка от мержата.
Синтаксис
ElevationGrid { xDimension 0 xSpacing 0.0 zDimension 0 zSpacing 0.0 height [ ] color NULL colorPerVertex TRUE normal NULL normalPerVertex TRUE texCoord NULL ccw TRUE convex TRUE solid TRUEcreaseAngle 0.0
}
ГЕОМЕТРИЧНИ ВЪЗЛИ
Пример - планина
#VRML V2.0 utf8Shape {
appearance Appearance { material Material { }
} geometry ElevationGrid {
xDimension 9 zDimension 9 xSpacing 1.0 zSpacing 1.0 solid FALSE creaseAngle 0.785 height [0.0, 0.0, 0.5, 1.0, 0.5, 0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0,0.0, 0.0, 0.5, 0.5, 3.0, 1.0, 0.5, 0.0, 1.0,0.0, 0.0, 0.5, 2.0, 4.5, 2.5, 1.0, 1.5, 0.5,1.0, 2.5, 3.0, 4.5, 5.5, 3.5, 3.0, 1.0, 0.0,0.5, 2.0, 2.0, 2.5, 3.5, 4.0, 2.0, 0.5, 0.0,0.0, 0.0, 0.5, 1.5, 1.0, 2.0, 3.0, 1.5, 0.0,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.5, 0.5,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0,]
} }
ElevationGrid node
Фиг.11.3 Изображение на примераПланина
Виж 3D модела
ГЕОМЕТРИЧНИ ВЪЗЛИ
Extrusion node• Extrusion Node мощен възел, който
позволява дефинирането на много сложни фигури.
• Основата на екструдираната фигура е 2D сечението на крайната фигура, дефинирано в XZ повърхнина (фиг.12.4).
• Полето spine (гръбнак) определя пътя по който сечението се движи, за да създаде фигура (фиг.12.5).
Фиг.12.4 Сечение на кубФиг.12.5 Spine на куб и перспективен път
на сеченивто
ГЕОМЕТРИЧНИ ВЪЗЛИ
• Браузъра визуализира фигурата с две spine точки:
• Преместване на сечението към първата spine точка;
• Ориентиране на сечението;• Преместване на сечението към
последната spine точка;
Синтаксис
Extrusion { beginCap TRUE endCap TRUE ccw TRUE convex TRUE creaseAngle 0 crossSection [1 1,1 -1, -1-1, -1 0, 1 1] orientation 0 0 1 0 scale 1 1 solid TRUE spine [0 0 0, 0 1 0]
}
Фиг.12.6 Куб създаден чрез Extrusion Node Виж 3D модела
Extrusion node
ГЕОМЕТРИЧНИ ВЪЗЛИ
• Полетата beginCap и endCap определят дали екструдираната форма да бъде отворена или затворена в краищата.
Пример - куб#VRML V2.0 utf8 Shape{
appearance Appearance { material Material {
diffuseColor .8 .16 0
specularColor .5 .5 .5emissiveColor .15 .03 0
ambientIntensity 0}
} geometry Extrusion{ crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 -1] spine [0 -1 0 , 0 1 0 ]
beginCap FALSE endCap FALSE
solid FALSE}
}
Фиг.12.7 Куб без горна и долна повърхнина Виж 3D модела
Extrusion node
ГЕОМЕТРИЧНИ ВЪЗЛИ
• Втората и следващата точки от полето spine ориентират сечението перпендикулярено на тангента (допирателната) към spine (фиг.12.8).
Пример – куб #VRML V2.0 utf8Shape{
appearance Appearance { material Material {diffuseColor .48 0 .8specularColor .5 .5 .5emissiveColor .09 0 .15ambientIntensity 0}
} geometry Extrusion{ crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 -1] spine [3 5 0 , 0 0 0, -3 5 0]
} }
Фиг.12.8 Тнагента на spine
Фиг.12.9 Куб с промяна тнагента на spineВиж 3D модела
Extrusion node
ГЕОМЕТРИЧНИ ВЪЗЛИ
• Полето orientation определя ориентацята на цялата фигура или на списък от ориентиращи фактори за всяка точка от spine.
Пример – куб #VRML V2.0 utf8 Shape{
appearance Appearance { material Material {diffuseColor .8 .63 0specularColor .5 .5 .5emissiveColor .14 .11 0ambientIntensity 0}}
geometry Extrusion{ crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 -1] spine [0 -1 0 , 0 1 0 ] orientation[0 1 0 0, 0 1 0 3.14]
} }
Фиг.12.10 Куб с промяна ориентацята (завъртане на 180 0 по ос Y)
Виж 3D модела
Extrusion node
ГЕОМЕТРИЧНИ ВЪЗЛИ
Text node• Text node позволява да представите
стрингове във VRML сцената.• Възела съдържа следните полета:
string съдържа текста, който трябва да бъде представен;
fontStyle определя как да бъде представен стринга посредством FontStyle Node:
FontStyle { family "SERIF" horizontal TRUE justify "BEGIN" language "" leftToRight TRUE size 1.0 spacing 1.0 topToBottom TRUE
}
Синтаксис
length определя дължината на всеки стринг във VRML единици;
maxLength ограничава, намалява всички стрингове в полето string.
Text { string [ ] fontStyle NULL length [ ] maxExtent 0.0
}
ГЕОМЕТРИЧНИ ВЪЗЛИ
Text node Пример - текст
#VRML V2.0 utf8Shape { appearance Appearance { material Material {diffuseColor 0.8 0 0} } geometry Text { string [ "Qwerty", "Qwerty" ] length [ 3.0, 4.0 ]
fontStyle FontStyle { family "SERIF" style "BOLD" } }}
Фиг.12.11 Текст във VRML
ГЕОМЕТРИЧНИ ВЪЗЛИ