X3D: Extensible 3D Graphics for Web Authors

Brutzman, Don; Daly, Leonard

In stock
Regular price 11.500 KD inc. VAT
License
Table of contents
  • Contentsvii
  • Prefacexix
  • 1. Goalsxix
  • 2. Motivationxix
  • 3. Reader backgroundxxi
  • 4. Software supportxxi
  • 5. Book structurexxi
  • 5.1. Typographic conventionsxxi
  • 5.2. Chapter organizationxxii
  • 6. Chapter descriptionsxxii
  • 6.1. Chapter topicsxxii
  • 6.2. Appendicesxxiv
  • 6.3. How to use this bookxxiv
  • Contributor Listxxv
  • About the Authorsxxvii
  • Chapter 1: Technical Overview1
  • 1. Introduction1
  • 2. Concepts2
  • 2.1. Historical background: VRML, ISO, and the Web3D Consortium2
  • 2.2. X3D browsers3
  • 2.3. X3D specifications5
  • 2.4. Scene graph7
  • 2.5. File structure10
  • 2.5.1. File header10
  • 2.5.2. X3D header statement10
  • 2.5.3. Profile statements12
  • 2.5.4. Component statements14
  • 2.5.5. Meta statements15
  • 2.5.6. Scene graph body18
  • 2.6. Field types18
  • 2.7. Abstract node types20
  • 2.8. File encodings: XML, ClassicVRML, and Compressed20
  • 2.8.1. Extensible Markup Language (XML) encoding: .x3d files21
  • 2.8.1.1. XML motivations22
  • 2.8.1.2. XML design for X3D24
  • 2.8.1.3. XML validation25
  • 2.8.2. ClassicVRML encoding: .x3dv files27
  • 2.8.3. Binary encoding: .x3db files29
  • 2.9. Hello World example using X3D-Edit and an X3D browser32
  • 3. Summary35
  • 3.1. Key ideas35
  • 3.2. Next chapters35
  • Reference36
  • Chapter 2: Geometry Nodes, Part 1: Primitives37
  • 1. What this chapter covers37
  • 2. Concepts38
  • 2.1. Purpose and common functionality38
  • 2.2. Common fields40
  • 2.2.1. solid40
  • 2.3. Abstract node types41
  • 2.3.1. X3DShapeNode type41
  • 2.3.2. X3DGeometryNode type41
  • 2.3.3. X3DFontStyleNode type41
  • 2.4. Hints and warnings41
  • 3. Node descriptions42
  • 3.1. Shape node42
  • 3.1.1. Hints and warnings42
  • 3.2. Box node44
  • 3.2.1. size46
  • 3.2.2. Hints and warnings46
  • 3.3. Cone node46
  • 3.3.1. bottomRadius and height48
  • 3.3.2. bottom and side48
  • 3.3.3. Hints and warnings49
  • 3.4. Cylinder node49
  • 3.4.1. radius and height49
  • 3.4.2. bottom, side, and top50
  • 3.4.3. Hints and warnings50
  • 3.5. Sphere node50
  • 3.5.1. radius52
  • 3.5.2. Hints and warnings54
  • 3.6. Text node54
  • 3.6.1. string55
  • 3.6.2. length55
  • 3.6.3. maxExtent55
  • 3.6.4. Hints and warnings55
  • 3.7. FontStyle node55
  • 3.7.1. family59
  • 3.7.2. justify59
  • 3.7.3. language59
  • 3.7.4. style59
  • 3.7.5. size and spacing59
  • 3.7.6. horizontal, leftToRight, and topToBottom60
  • 3.7.7. Hints and warnings60
  • 3.7.8. Parameter combinations60
  • 4. Summary62
  • 4.1. Key ideas62
  • 4.2. Related nodes and concepts63
  • 4.3. Next chapter63
  • Chapter 3: Grouping Nodes65
  • 1. What this chapter covers65
  • 2. Concepts66
  • 2.1. Purpose and common functionality66
  • 2.2. Units of measurement and coordinate systems66
  • 2.3. Coordinate system details69
  • 2.3.1. Which way is up?69
  • 2.3.2. Right-hand ruleŽ rules!70
  • 2.3.3. Orientation71
  • 2.4. DEF and USE71
  • 2.5. Abstract node types72
  • 2.5.1. X3DChildNode type72
  • 2.5.2. X3DBoundedObject type73
  • 2.5.3. X3DGroupingNode type73
  • 2.5.4. X3DInfoNode type74
  • 2.5.5. X3DUrlObject abstract interface75
  • 3. Node descriptions75
  • 3.1. Group and StaticGroup nodes75
  • 3.2. Transform node77
  • 3.2.1. translation78
  • 3.2.2. rotation78
  • 3.2.3. center78
  • 3.2.4. scale78
  • 3.2.5. scaleOrientation78
  • 3.2.6. Order of translation, rotation, scaling, and center operations80
  • 3.2.7. Hints and warnings82
  • 3.3. Inline node82
  • 3.3.1. Uniform resource locator (url) field83
  • 3.3.2. load84
  • 3.3.3. Hints and warnings85
  • 3.4. LOD node85
  • 3.4.1. center87
  • 3.4.2. forceTransitions88
  • 3.4.3. level_changed88
  • 3.4.4. range88
  • 3.4.5. Hints and warnings89
  • 3.5. Switch node89
  • 3.5.1. whichChoice90
  • 3.5.2. Hints and warnings91
  • 4. Summary93
  • 4.1. Key ideas93
  • 4.2. Related nodes and concepts93
  • 4.3. Next chapter93
  • Chapter 4: Viewing and Navigation95
  • 1. What this chapter covers95
  • 2. Concepts95
  • 2.1. Purpose and common functionality96
  • 2.2. Viewing model96
  • 2.3. Navigation model97
  • 2.4. Collision detection and terrain following97
  • 2.5. Abstract node types97
  • 2.5.1. X3DBindableNode type97
  • 3. Node descriptions101
  • 3.1. Viewpoint node101
  • 3.1.1. description105
  • 3.1.2. position105
  • 3.1.3. orientation105
  • 3.1.4. fieldOfView105
  • 3.1.5. jump105
  • 3.1.6. centerOfRotation106
  • 3.1.7. Hints and warnings106
  • 3.2. NavigationInfo node106
  • 3.2.1. type106
  • 3.2.2. speed109
  • 3.2.3. headlight109
  • 3.2.4. transitionType, transitionTime and transitionComplete109
  • 3.2.5. visibilityLimit109
  • 3.2.6. avatarSize110
  • 3.2.7. Hints and warnings110
  • 3.3. Anchor node111
  • 3.3.1. description112
  • 3.3.2. url112
  • 3.3.3. parameter113
  • 3.3.4. Keyboard emulation of pointing device113
  • 3.3.5. Hints and warnings114
  • 3.4. Billboard node114
  • 3.4.1. axisOfRotation115
  • 3.4.2. Hints and warnings115
  • 3.5. Collision node117
  • 3.5.1. collideTime118
  • 3.5.2. proxy118
  • 3.5.3. Hints and warnings118
  • 4. Summary118
  • 4.1. Key ideas118
  • 4.2. Related nodes and concepts120
  • 4.3. Next chapter120
  • Chapter 5: Appearance, Material, and Textures121
  • 1. What this chapter covers121
  • 2. Concepts122
  • 2.1. Purpose and common functionality122
  • 2.1.1. Texture coordinates123
  • 2.2. Abstract node types123
  • 2.2.1. X3DAppearanceNode and X3DAppearanceChildNode types123
  • 2.2.2. X3DMaterialNode type124
  • 2.2.3. X3DTextureNode, X3DTextureCoordinateNode, and X3DTextureTransformNode types124
  • 2.2.4. X3DTexture2DNode type124
  • 2.2.5. X3DTextureTransform2DNode type125
  • 3. Node descriptions125
  • 3.1. Appearance node125
  • 3.1.1. Hints and warnings125
  • 3.2. Material node126
  • 3.2.1. ambientIntensity129
  • 3.2.2. diffuseColor129
  • 3.2.3. emissiveColor129
  • 3.2.4. specularColor and shininess130
  • 3.2.5. transparency130
  • 3.2.6. Hints and warnings131
  • 3.3. FillProperties node132
  • 3.3.1. filled132
  • 3.3.2. hatched133
  • 3.3.3. hatchColor133
  • 3.3.4. hatchStyle133
  • 3.3.5. Hints and warnings134
  • 3.4. LineProperties node134
  • 3.4.1. applied135
  • 3.4.2. linewidthScaleFactor135
  • 3.4.3. linetype137
  • 3.4.4. Hints and warnings137
  • 3.5. ImageTexture node137
  • 3.5.1. url138
  • 3.5.2. Hints and warnings139
  • 3.6. MovieTexture node140
  • 3.6.1. loop142
  • 3.6.2. speed142
  • 3.6.3. startTime and stopTime142
  • 3.6.4. pauseTime and resumeTime142
  • 3.6.5. isActive and isPaused142
  • 3.6.6. duration_changed and elapsedTime142
  • 3.6.7. Hints and warnings142
  • 3.7. PixelTexture node143
  • 3.7.1. SFImage Type143
  • 3.7.2. image144
  • 3.7.3. Hints and warnings146
  • 3.8. TextureTransform node146
  • 3.8.1. translation148
  • 3.8.2. center and rotation148
  • 3.8.3. scale149
  • 3.8.4. Hints and warnings149
  • 3.9. TextureCoordinate node150
  • 3.9.1. point152
  • 3.9.2. Hints and warnings152
  • 3.10. TextureCoordinateGenerator node152
  • 3.10.1. mode and parameter153
  • 3.10.2. Hints and warnings153
  • 4. Summary155
  • 4.1. Key ideas155
  • 4.2. Related nodes and concepts155
  • 4.3. Next chapter155
  • Chapter 6: Geometry Nodes, Part 2: Points, Lines, and Polygons157
  • 1. What this chapter covers157
  • 2. Concepts158
  • 2.1. Purpose and common functionality158
  • 2.2. Common geometry fields159
  • 3. Node descriptions162
  • 3.1. Color and ColorRGBA nodes162
  • 3.2. Coordinate and CoordinateDouble nodes163
  • 3.3. PointSet node165
  • 3.4. IndexedLineSet node167
  • 3.5. LineSet node170
  • 3.6. IndexedFaceSet node172
  • 3.7. ElevationGrid node174
  • 3.8. Extrusion node178
  • 4. Summary184
  • 4.1. Key ideas184
  • 4.2. Related nodes and concepts185
  • 4.3. Next chapter185
  • Chapter 7: Event Animation and Interpolation187
  • 1. What this chapter covers187
  • 2. Concepts188
  • 2.1. Animation as scene-graph modification188
  • 2.2. Purpose and common functionality188
  • 2.3. ROUTE connections189
  • 2.3.1. Hints and warnings190
  • 2.4. Interpolation190
  • 2.5. Constructing animation chains: 10 steps192
  • 2.6. Abstract node types196
  • 2.6.1. X3DTimeDependentNode type196
  • 2.6.2. X3DSensorNode type196
  • 2.6.3. X3DInterpolatorNode type196
  • 3. Node descriptions200
  • 3.1. TimeSensor node200
  • 3.1.1. enabled201
  • 3.1.2. startTime202
  • 3.1.3. stopTime202
  • 3.1.4. cycleInterval203
  • 3.1.5. loop203
  • 3.1.6. cycleTime203
  • 3.1.7. isActive203
  • 3.1.8. isPaused203
  • 3.1.9. pauseTime203
  • 3.1.10. resumeTime203
  • 3.1.11. elapsedTime203
  • 3.1.12. Hints and warnings203
  • 3.2. ScalarInterpolator Node204
  • 3.2.1. key and keyValue204
  • 3.2.2. Hints and warnings205
  • 3.3. ColorInterpolator node205
  • 3.3.1. Example206
  • 3.3.2. key and keyValue207
  • 3.3.3. Hints and warnings208
  • 3.4. PositionInterpolator node210
  • 3.4.1. key and keyValue210
  • 3.4.2. Hints and warnings211
  • 3.5. OrientationInterpolator node211
  • 3.5.1. key and keyValue214
  • 3.5.2. Hints and warnings214
  • 3.6. NormalInterpolator node214
  • 3.6.1. key and keyValue215
  • 3.6.2. Hints and warnings215
  • 3.7. CoordinateInterpolator node215
  • 3.7.1. key and keyValue215
  • 3.7.2. Hints and warnings215
  • 3.8. PositionInterpolator2D node216
  • 3.8.1. key and keyValue217
  • 3.8.2. Hints and warnings217
  • 3.9. CoordinateInterpolator2D node218
  • 3.9.1. key and keyValue218
  • 3.9.2. Hints and warnings218
  • 4. Summary219
  • 4.1. Key ideas219
  • 4.2. Related nodes and concepts220
  • 4.3. Next chapter220
  • Chapter 8: User Interactivity Nodes221
  • 1. What this chapter covers221
  • 2. Concepts222
  • 2.1. Purpose and common functionality222
  • 2.2. X3DSensorNode type223
  • 2.3. X3DPointingDeviceSensorNode type223
  • 2.4. X3DTouchSensorNode type225
  • 2.5. X3DDragSensorNode type225
  • 2.6. X3DKeyDeviceSensorNode type226
  • 3. Node descriptions227
  • 3.1 TouchSensor node227
  • 3.2. PlaneSensor node231
  • 3.3. CylinderSensor node234
  • 3.4. SphereSensor node239
  • 3.5. KeySensor node241
  • 3.6. StringSensor node244
  • 4. Summary246
  • 4.1. Key ideas246
  • 4.2. Related nodes and concepts247
  • 4.3. Next chapter247
  • Chapter 9: Event Utilities and Scripting249
  • 1. What this chapter covers249
  • 2. Concepts250
  • 2.1. Purpose and common functionality250
  • 2.2. X3DScriptNode type251
  • 2.3. X3DSequencerNode type251
  • 2.4. X3DTriggerNode type254
  • 3. Node Descriptions254
  • 3.1. BooleanFilter node254
  • 3.2. BooleanSequencer node256
  • 3.3. BooleanToggle node258
  • 3.4. BooleanTrigger node259
  • 3.5. IntegerSequencer node259
  • 3.6. IntegerTrigger node261
  • 3.7. TimeTrigger node263
  • 3.8. Script node264
  • 4. Summary278
  • 4.1. Key ideas278
  • 4.2. Related nodes and concepts278
  • 4.3. Next chapter278
  • Chapter 10: Geometry Nodes, Part 3: Geometry2D Nodes279
  • 1. What this chapter covers279
  • 2. Concepts280
  • 2.1. Purpose and common functionality280
  • 2.2. Common geometry fields281
  • 3. Node descriptions281
  • 3.1. Arc2D node281
  • 3.2. ArcClose2D node282
  • 3.3. Circle2D node285
  • 3.4. Disk2D node287
  • 3.5. Polyline2D node289
  • 3.6. Polypoint2D node291
  • 3.7. Rectangle2D node292
  • 3.8. TriangleSet2D node293
  • 4. Summary296
  • 4.1. Key ideas296
  • 4.2. Related nodes and concepts296
  • 4.3. Next chapter296
  • Chapter 11: Lighting and Environment Nodes299
  • 1. What this chapter covers299
  • 2. Concepts300
  • 2.1. Purpose and common functionality302
  • 2.2. X3DLightNode type303
  • 2.3. X3DBackgroundNode type306
  • 3. Node descriptions308
  • 3.1. DirectionalLight node308
  • 3.2. Headlight309
  • 3.3 PointLight node311
  • 3.4. SpotLight node315
  • 3.5. Background node319
  • 3.6. TextureBackground node321
  • 3.7. Fog node322
  • 4. Summary325
  • 4.1. Key ideas325
  • 4.2. Related nodes and concepts326
  • 4.3. Next chapter326
  • Chapter 12: Environment Sensor and Sound Nodes327
  • 1. What this chapter covers327
  • 2. Concepts328
  • 2.1. X3DEnvironmentSensorNode type328
  • 2.2. X3DNetworkSensorNode type329
  • 2.3. X3DSoundNode type330
  • 2.4. X3DSoundSourceNode type330
  • 3. Node descriptions330
  • 3.1. LoadSensor node330
  • 3.2. ProximitySensor node334
  • 3.3. VisibilitySensor node339
  • 3.4. Sound node340
  • 3.5. AudioClip node347
  • 4. Summary351
  • 4.1. Key ideas351
  • 4.2. Related nodes and concepts351
  • 4.3. Next chapter351
  • Chapter 13: Geometry Nodes, Part 4: Triangles and Quadrilaterals353
  • 1. What this chapter covers353
  • 2. Concepts354
  • 2.1. Purpose and common functionality354
  • 2.2. Abstract node types355
  • 2.2.1. X3DColorNode, X3DCoordinateNode, X3DGeometricPropertyNode, X3DGeometryNode, and X3DNormalNode355
  • 2.2.2. X3DComposedGeometryNode type356
  • 2.3. Common geometry fields356
  • 2.3.1. Two-sided rendering versus backface culling, using the ccw and solid fields358
  • 2.3.2. Ordering or indexing of vertices, index, and set_index fields358
  • 2.3.3. colorPerVertex359
  • 2.3.4. normalPerVertex359
  • 2.3.5. Hints and warnings360
  • 3. Node descriptions361
  • 3.1. Normal node361
  • 3.1.1. Hints and warnings363
  • 3.2. TriangleSet node363
  • 3.3. TriangleFanSet node366
  • 3.3.1. fanCount366
  • 3.3.2. Hints and warnings366
  • 3.4. TriangleStripSet node368
  • 3.4.1. stripCount368
  • 3.4.2. Hints and warnings370
  • 3.5. QuadSet node370
  • 3.5.1. Hints and warnings370
  • 3.6. IndexedTriangleSet node370
  • 3.6.1. Hints and warnings372
  • 3.7. IndexedTriangleFanSet node373
  • 3.7.1. Hints and warnings375
  • 3.8. IndexedTriangleStripSet node375
  • 3.8.1. Hints and warnings377
  • 3.9. IndexedQuadSet node377
  • 3.9.1. Hints and warnings377
  • 4. Summary378
  • 4.1. Key ideas378
  • 4.2. Related nodes and concepts379
  • 4.3. Next chapter379
  • Chapter 14: Creating Prototype Nodes381
  • 1. What this chapter covers381
  • 2. Concepts382
  • 2.1. Extensibility382
  • 2.2. Strong typing of nodes383
  • 2.3. Comparison with Inline node383
  • 2.4. Syntax alert383
  • 3. Functional descriptions384
  • 3.1. Prototype declarations: ProtoDeclare384
  • 3.2. External prototype declarations: ExternProtoDeclare394
  • 3.3. Prototype instances: ProtoInstance397
  • 4. Summary398
  • 4.1. Key ideas398
  • 4.2. Related nodes and concepts399
  • Afterword: Getting Involved401
  • Learning X3D401
  • Building Software401
  • Creating Content402
  • X3D Development402
  • Other Web3D Activities402
  • Appendix403
  • A. Online Resources403
  • Web Site Description403
  • B. Help: X3D/VRML Examples405
  • Applications, Players, and Plugins for X3D/VRML Viewing405
  • Web3D Consortium Members405
  • Not (yet) Web3D Consortium Members406
  • Authoring Tools406
  • Authoring Support407
  • Conversion and Translation Tools407
  • Examples408
  • License409
  • PowerPoint Support409
  • References409
  • C. X3D Scene Authoring Hints411
  • Authoring practices411
  • Credits414
  • Dates414
  • HTML415
  • Images415
  • Inline and Prototype Subscenes416
  • License417
  • meta tags418
  • Naming Conventions418
  • Naming of Multiple Similar Autogenerated Files419
  • Scripts419
  • URL Links420
  • Viewpoints421
  • List of References423
  • Index425
Book details
  • Vendor Elsevier S & T
  • SKU 9780120885008R90
  • ISBN-13 9780080489889
  • Author Brutzman, Don; Daly, Leonard
  • Category Computers
  • Subject Computer Graphics

Do you have questions about this book?

Ask an expert!

In the early days of the Web a need was recognized for a language to display 3D objects through a browser. An HTML-like language, VRML, was proposed in 1994 and became the standard for describing interactive 3D objects and worlds on the Web. 3D Web courses were started, several best-selling books were published, and VRML continues to be used today. However VRML, because it was based on HTML, is a stodgy language that is not easy to incorporate with other applications and has been difficult to add features to. Meanwhile, applications for interactive 3D graphics have been exploding in areas such as medicine, science, industry, and entertainment. There is a strong need for a set of modern Web-based technologies, applied within a standard extensible framework, to enable a new generation of modeling & simulation applications to emerge, develop, and interoperate. X3D is the next generation open standard for 3D on the web. It is the result of several years of development by the Web 3D Consortium's X3D Task Group. Instead of a large monolithic specification (like VRML), which requires full adoption for compliance, X3D is a component-based architecture that can support applications ranging from a simple non-interactive animation to the latest streaming or rendering applications. X3D replaces VRML, but also provides compatibility with existing VRML content and browsers. Don Brutzman organized the first symposium on VRML and is playing a similar role with X3D; he is a founding member of the consortium. Len Daly is a professional member of the consortium and both Len and Don have been involved with the development of the standard from the start.

* The first book on the new way to present interactive 3D content over the Web, written by two of the designers of the standard
* Plentiful illustrations and screen shots in the full color text
* Companion website with extensive content, including the X3D specification, sample code and applications, content creation tools, and demos of compatible Web browsers