X3D

Walec w X3D

X3D (ang. eXtensible 3D), pol. rozszerzalny trójwymiar – wolny od tantiem standard ISO/IEC służący do deklaratywnej reprezentacji komputerowej grafiki 3D. X3D obejmuje wiele formatów plików graficznych, definicje języka programowania API oraz specyfikacje dla czasu uruchamiania, zarówno w celu dostarczania, jak i integracji interaktywnych danych 3D z obsługą sieci. Standard X3D w wersji 4.0 został zatwierdzony przez Konsorcjum Web3D i jest poddany ostatecznemu przeglądowi przez ISO/IEC jako poprawiony standard międzynarodowy.

X3D został specjalnie zaprojektowany do pracy na różnych urządzeniach przy użyciu architektury sieciowej. X3D zapewnia szereg funkcji 3D poprzez profile, począwszy od podstawowego profilu Asset Interchange i CADInterchange a kończywszy na Interactive, MPEG-4 Interactive, Medical, Immersive, i Full. Anatomicznie dokładne wsparcie jest również dostępne dla struktury ciała i ruchu w profilu Humanoid Animation (HAnim). „X” w X3D oznacza „Extensible” czyli rozszerzalny: do standardowej funkcjonalności można dodawać niestandardowe rozszerzenia komponentów dostawców i komponentów eksperymentalnych.

Wsparcie skryptowych formatów plików obejmuje XML, ClassicVRML, Compressed Binary Encoding (CBE) i podstawowe kodowanie JSON. Wsparcie Semantic Web zostało również zademonstrowane przez składnię kodowania żółwia. X3D został następcą Virtual Reality Modeling Language (VRML) w roku 2001[1]. X3D wprowadza rozszerzenia do VRML (np. CAD, Geospatial, GeoVRML, Humanoid animation, NURBS itp.), zdolność do kodowania sceny zarówno w składni XML, jak i w składni analogicznej do składni programu Open Inventor używanej w VRML97, lub też w formatowaniu binarnym, a także rozszerzone interfejsy programowania aplikacji (API), w tym ECMAScript, Java, Python i inne języki programowania.

Rozszerzenie X3D wspiera wielostopniowe i wieloteksturowe renderowanie, ono także obsługuje cieniowanie w oparciu o mapy świetlne i mapy normalnych. Począwszy od 2010 X3D zaczął wspierać odroczone architektury renderingu. Obecnie X3D może importować SSAO, CSM i Realtime Environment Reflection/Lighting, ale nie musi troszczyć się bardzo o liczbę wielokątów. Użytkownik może również używać optymalizacji w tym BSP/QuadTree/OctTree lub redukcji trójkątów w scenie X3D.

Renderowanie X3D obejmuje zarówno klasyczne (np. Blinn-Phong), jak i nowoczesny rendering bazujący na fizyce pasujący do możliwości glTF 2.0. Użycie niestandardowych shaderów przy użyciu trzech języków shaderów specyficznych dla platformy jest także zdefiniowane. Autorzy mogą korzystać z bogatych możliwości multimedialnych, zawierających różne formaty obrazów i filmów. W pełni przestrzenne renderowanie dźwiękowe wykorzystuje możliwości dźwięku API Web Audio od W3C oraz wejścia audio digitalizowane przy użyciu MIDI 2.0 lub innych formatów dźwięku.

Wszystkie kodowania plików X3D i interfejsy API języka programowania mają równoważną moc ekspresji, odpowiadającą definicjom funkcjonalnym w standardzie architektury X3D. Dlatego X3D może pracować z otwartymi standardami, w tym XML, Document Object Model (DOM), XPath i innymi.

X3D może współdziałać z innymi standardami Open Source, w tym XML, DOM i XPath. Użytkownik może łatwo rozwijać narzędzia treści takie jak eksporter i edytor, te narzędzia 3D czynią tworzenia treści i optymalizację łatwymi zadaniami.

Przykład

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "http://www.web3d.org/specifications/x3d-4.0.dtd">

<X3D profile="Interchange" version="4.0"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
     xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-4.0.xsd">
  <Scene>
    <Shape DEF="MyTriangle">
      <IndexedFaceSet coordIndex="0 1 2">
        <Coordinate point="0 0 0 1 0 0 0.5 1 0"/>
      </IndexedFaceSet>
    </Shape>
  </Scene>
</X3D>

Reprezentacja VRML jest taka sama jak powyższy przykład, z wyjątkiem zmiany linii wersji na treść odzwierciedlającą najnowszy standard X3D (#X3D V4.0 utf8). Identyfikacyjna nazwa DEF jest też zastosowana jako identyfikator węzła.

Dla formatów binarnego i JSON, do obejrzenia jest lista narzędzi Web3D[2].

Aplikacje

Istnieje szereg aplikacji, z których większość z nich jest programami o otwartym kodzie źródłowym[3], które natywnie przetwarzają i interpretują pliki X3D, w tym edytor grafiki 3D i animacji Blender[4] i klient świata wirtualnego Project Wonderland Sun Microsystems[5]. Applet X3D jest oprogramowaniem, które działa w przeglądarce internetowej i wyświetla zawartość w 3D używając technologii grafiki 3D OpenGL do wyświetlania treści X3D w kilku różnych przeglądarkach (IE, Safari, Firefox) poprzez kilka różnych systemów operacyjnych[6] (Windows, Mac OS X, Linux). Jednak zastosowanie X3D nie zyskało szerszej popularności jaką mają inne, bardziej popularne i własnościowe aplikacje programowe, takie jak Second Life.

W dekadzie 2000, wiele firm takich jak Bitmanagement udoskonaliło poziom jakości efektów wirtualnych w X3D do poziomu jakości DirectX 9.0c, chociaż za cenę używania własnościowych rozwiązań. Wszystkie główne cechy, w tym modelowanie gry, są już od dawna gotowe. Zaliczają się do nich wielościeżkowe renderowanie z niskopoziomowymi ustawieniami Bufor Z, BlendOp, AlphaOp, Stencil[7], Multiteksturowanie[8], Cieniowanie ze wsparciem dla HLSL oraz GLSL[9], Renderowanie do tekstur w czasie rzeczywistym, wsparcie dla Multi Render Target (MRT) i postprocesingu[10]. Wiele dem pokazuje, że X3D od dawna wspiera mapy świetlne, mapowanie normalnych, SSAO, CSM oraz odbicia środowiskowe w czasie rzeczywistym, wraz z innymi efektami wirtualnymi[11].

X3DOM

Walcząc o stanie się standardem 3D dla sieci internetowej, X3D jest zaprojektowany jako standard nadający się do zintegrowania ze stronami HTML 5, na tej samej zasadzie, jak będące z nimi zintegrowane inne standardy XML, takie jak już tam zaimplementowane MathML i SVG. X3DOM jest proponowanym modelem składni i jego implementacja jako biblioteka skryptowa[12], która pokazuje jak ta integracja może być osiągnięta bez wtyczki przeglądarkowej, używa tylko WebGL i JavaScript[13].

Standaryzacja

X3D definiuje szereg profili (zestawów komponentów) dla różnych poziomów obsługi, takich jak X3D Core, X3D Interchange, X3D Interactive, X3D CADInterchange, X3D Immersive, X3D Geospatial i X3D Full. Producenci przeglądarek mogą zdefiniować własne rozszerzenia komponentów przed zgłoszeniem ich do standaryzacji przez Konsorcjum Web3D. Formalna recenzja i akceptacja jest wtedy dokonywana przez International Organization for Standardization (ISO) oraz przez International Electrotechnical Commission (IEC).

Współpraca i porozumienia o współpracy są także na miejscu pomiędzy Web3D Consortium i World Wide Web Consortium (W3C), Open Geospatial Consortium (OGC), Digital Imaging and Communications in Medicine (DICOM) i Khronos Group.

Podzbiorem X3D jest XMT-A, wariant XMT zdefiniowany w MPEG-4 Część 11. Został on skonstruowany w celu ustanowienia połączenia między X3D i treścią 3D w MPEG-4 (BIFS)[14].

Abstrakcyjna specyfikacja dla X3D (ISO/IEC 19775) została po raz pierwszy zatwierdzona przez ISO w 2004 roku. Kodowania XML i ClassicVRML dla X3D (ISO/IEC 19776) zostały po raz pierwszy zatwierdzone w 2005 roku[15]. Powyższe zagadnienia są omówione na stronie X3D FAQ – „What is the status of the X3D specification?”.

Zobacz też

Przypisy

  1. Paul Festa and John Borland – Is a 3D web more than just empty promises?. [dostęp 2009-11-12]. [zarchiwizowane z tego adresu (2009-11-12)].
  2. X3D to JSON Stylesheet Converter www.web3d.org
  3. X3D Open Source Projects. web3d.org. [zarchiwizowane z tego adresu (2014-06-23)]..
  4. Blender Model Export to X3D. savage.nps.edu. [zarchiwizowane z tego adresu (2016-03-03)]..
  5. Project Wonderland. research.sun.com. [zarchiwizowane z tego adresu (2009-07-17)]..
  6. X3D applet. web3d.org. [zarchiwizowane z tego adresu (2012-09-16)]..
  7. DrawGroup & DrawOp.
  8. Multitexturing. web3d.org. [zarchiwizowane z tego adresu (2012-01-03)]..
  9. Programmable shaders component. web3d.org. [zarchiwizowane z tego adresu (2011-11-28)]..
  10. Scene postprocessing support.
  11. VRML X3D and Realtime Web3D.
  12. X3DOM JavaScript library.
  13. X3D and HTML5: X3DOM proposal. web3d.org. [zarchiwizowane z tego adresu (2010-06-12)]., wiki Web3D.
  14. www.web3d.org PDF
  15. X3D FAQ – What is the status of the X3D specification?. [dostęp 2014-02-01]. [zarchiwizowane z tego adresu (2014-02-01)].

Linki zewnętrzne

  • Oficjalna strona Konsorcjum Web3D (ang.)
  • Oficjalna strona standardu X3D (ang.)
  • Specyfikacje X3D, walidacje Schema i Doctype (ang.)
  • Wiki X3D (ang.)
  • Listy zasobów X3D zebrane na www.web3d.org (książki, przykłady, zastosowania, itp). (ang.)
  • X3D w katalogu Open Directory Project (ang.)
  • VRML (Virtual Reality Modeling Language) i X3D (ang.)
  • Extensible 3D XML meets VRML (ang.)
  • Oficjalna strona X3DOM (ang.)
  • Dokumentacja X3DOM (ang.)
Kontrola autorytatywna (język znaczników):
  • LCCN: sh2006008671
  • J9U: 987007540031105171