X3D è un linguaggio per la descrizione di ambienti virtuali interattivi. È stato sviluppato dal Web 3D Consortium come evoluzione del VRML, è basato su XML, è un formato non proprietario ed è stato standardizzato dall'ISO nel 2004.
Scopo
Lo scopo principale di X3D è la descrizione di ambienti virtuali interattivi.
Le entità che possono essere descritte sono:
Ambiente (descrive le caratteristiche dell'ambiente, come lo sfondo, la nebbia, ecc.)
Oggetti (descrive la posizione, la geometria e il colore degli oggetti)
Luci (descrive la posizione e le caratteristiche fisiche delle luci)
Suoni (descrive la posizione e le caratteristiche dei suoni)
Osservatore (descrive le caratteristiche dell'osservatore)
Animazioni (descrive le eventuali animazioni degli oggetti, delle luci, dei suoni, dell'osservatore, ecc.)
Interattività (descrive l'interazione dell'ambiente con l'osservatore, ad esempio il click su di un oggetto)
Scripting (permette di manipolare, attraverso linguaggi di scripting come JavaScript o attraverso linguaggi come Java, l'ambiente virtuale)
Struttura
Un file X3D è un file XML in cui viene descritto l'ambiente virtuale attraverso quello che viene definito grafo della scena.
Il grafo della scena è sostanzialmente un albero i cui nodi interni rappresentano le trasformazioni spaziali delle entità definite nell'ambiente virtuale, mentre le foglie sono le entità stesse. Il fatto che si usi il termine grafo invece che albero deriva dal fatto che quando due nodi distinti fanno riferimento alla stessa entità si definisce un collegamento tra i due, ottenendo di fatto un grafo.
Nella visualizzazione della scena il player esegue una visita dell'albero inserendo nella scena le entità man mano che vengono incontrate.
Esempio
Un piccolo esempio [che però non è funzionante] può essere il seguente:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE X3D PUBLIC "http://www.web3d.org/specifications/x3d-3.0.dtd" "file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd"><X3Dprofile="Immersive"xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd"><head></head><Scene><Transform><Shape><Cylinder/><Appearance><MaterialdiffuseColor="1.0 0.4 0.0"/></Appearance></Shape></Transform></Scene></X3D>
Quello che si ottiene è un normale cilindro di colore arancio scuro, come evidenziato nella figura.