3D on the web: X3d Ruth Aylett
Topics 3D on the web History of X3d Overview of X3d
What is the problem? How to produce interactive 3D web-based applications? – Running in everybody ’ s browsers – On whatever platform – Acceptably fast interaction Answer: find an encoding for a scenegraph and download it – Reasonable file size? – Model IPR? – Handles dynamic interaction?
What is X3d? An ISO standard VR modelling language – NOT a programming language! Reimplementation of VRML97 with XML syntax: – Open standard (1997) for Internet sharing of 3D files and Virtual Worlds A Scene Description Language A file in UTF-8
X3d supports: 3D graphics – Polygonal geometry, parametric geometry, hierarchical transformations, lighting, materials and multi- pass/multi- stage texture mapping 2D graphics – Text, 2D vector and planar shapes displayed within the 3D transformation hierarchy Animation – Timers and interpolators to drive continous animations; humanoid animation and morphing Spatialized audio and video – Audiovisual sources mapped onto geometry in the scene User interaction – Mouse-based picking and dragging; keyboard input
History - 1 1994: Mark Pesce presents 3D Web Prototype – VRML email list established Open Inventor established as VRML basis – SGI (Silicon Graphics) – VRML 1.0 • No interaction, just navigation 1995: VRML Architecture Group (VAG) – request-for-proposals (RFP) for VRML 2.0
History - 2 1996: VRML 2.0 – based on SGI ‘Moving Worlds’ proposal – VRML Consortium formed 1997: ISO Standard – VRML 97 VRML consortium -> Web3D – Work started on successor to VRML 2004: X3d becomes ISO standard
Basic X3d concepts Scene graph – hierarchical data structure: nodes and links – describes virtual world Nodes – shape, geometry, appearance, location etc Fields – each Node is a list of fields – contains values and parameters
Simple example <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "http://www.web3d.org/specifications/ x3d-3.2.dtd"> � <X3D profile="Interchange" version="3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema- instance" xsd:noNamespaceSchemaLocation=" http://www.web3d.org/specifications/x3d-3.2.xsd " > <Scene> <Shape> <Appearance> <Material/> </Appearance> <Box/> </Shape> </Scene> </X3D> � �
Nodes Grouping nodes – Group, Transform, Collision, Billboard, Anchor Bindable nodes – Viewpoint, NavifgationInfo, Fog, Background
Transform Node Transforms its children – applies in turn scales, rotations, and translations Transform nodes may be nested – but computationally expensive Negative scaling (for reflection) not allowed
Appearance Node Specifies visual properties of geometry – Material properties • ambient, diffuse, emissive,shininess, specular, transparency – texture • image, picture, movie
The Sound Model maxBack � maxFront � Decreasing intensity � Location � Direction � No Sound � minBack � minFront �
Light Nodes DirectionalLight – At infinity, illuminates a scene with parallel rays, all from one direction PointLight – Located at a specific point in space – Illuminates from all directions SpotLight – At a specific point – Illuminates in a cone
Sensors Geometry sensors – CylinderSensor; PlaneSensor; SphereSensor; ProximitySensor; TouchSensor; VisibilitySensor TimeSensor Not sensors in the agent sense
Interpolators For Keyframe Animation – position; orientation; normal; scalar; coordinate; color Each interpolator node has a set of keys and a set of keyValues provides piece-wise linear interpolation
Routing and Events Most nodes contain events – Incoming: eventIn – Outgoing: eventOut A ROUTE connects eventOut of a node to eventIn of another Results in field value being changed
Prototypes Create a custom node type – Use the PROTO declaration Or in an external file – use EXTERNPROTO to declare a reference Can be used to extend x3D
Scripts For more complex interaction Usually in JAVA or JavaScript Script node has eventIns, eventOuts and Fields
External Authoring Interface EAI for interaction between X3d and JAVA applet Uses a browser plugin architecture
Other Features Billboards WorldInfo NavigationInfo Level of Detail (LOD) Viewpoints Fog ETC
What is missing? Obstacle detection – only automatic for the user Sensors – in the agent sense of the term Support for autonomy – aimed at supporting the user as a privileged object
Working groups Lots and lots! – JAVA3D and x3d – Compressed Binary format – Living Worlds – Biota – Humanoid Animation – GeoVRML – ETC
Creating X3d Worlds Text Editor x3d editor – x3d-edit: free – submarine: free Other modelling tools: Maya, 3ds studio – with File converter or exporter
Component-based architecture Profiles (as mpeg4) A collection of components, E.G: – CORE simple non-interactive animation – BASE compatible with VRML Components can be individually extended – Or new LEVELs added New components can be added – Formal mechanism for submission
Profiles Interchange profile – supports geometry, texturing, basic lighting, and animation – designed primarily to transfer data between applications. Interactive profile – adds additional lights, enhanced timing, and sensor nodes for interaction with the 3D environment. Immersive profile – adds audio, collision, fog, and scripting. Full profile – adds NURBS, H-Anim, and GeoSpatial components
Compatibility Any X3D-2 browser will play all VRML content (in principle!) – Add line: #X3D profile:base XML support not essential – Just an additional encoding
Using XML syntax Links to other web apps – VRML syntax was unique Makes authoring more accessible Links to browser development – XML support in new browser versions Stylesheets for conversion File converters VRML <--> X3D
X3D and Java.. X3D is NOT a programming language – It is a 3D scene graph specification Contrast with use of javascript as OpenGL interface – The HTML5 approach
Other Technologies HTML5: canvas – In most current browser versions: http:// html5test.com/ – https://developer.mozilla.org/en/ drawing_graphics_with_canvas JAVA 3D – see the sun java site at sun.java.com Flash/Flex – Become very popular: proprietary MPEG-4 v1 includes VRML 97
Recommend
More recommend