Difference between revisions of "X3D Binary Compression Capabilities and Plans"
From Web3D.org
(primary source instead of secondary everchanging "source") |
(→Network Streaming: JSON) |
||
Line 42: | Line 42: | ||
** Patented technologies can be considered, but only when eventual use will be royalty free for X3D use (if eventually accepted). | ** Patented technologies can be considered, but only when eventual use will be royalty free for X3D use (if eventually accepted). | ||
** Submitters can restrict access to patented submissions during member-only working group review, if desired. | ** Submitters can restrict access to patented submissions during member-only working group review, if desired. | ||
+ | |||
* TODO: Use cases and test examples can demonstrate whether http/https and local-file url retrieval are sufficient for a network protocol. | * TODO: Use cases and test examples can demonstrate whether http/https and local-file url retrieval are sufficient for a network protocol. | ||
** Other network protocols (Web sockets, P2P channels, etc.) might be possible, but only if security restrictions can be handled satisfactorily. | ** Other network protocols (Web sockets, P2P channels, etc.) might be possible, but only if security restrictions can be handled satisfactorily. | ||
+ | * Javascript Object Notation (JSON) might be suitable for simple streaming of X3D scene-graph data via Script node or external HTML page, which can be useful for progressive mesh and other incremental network-update approaches | ||
== X3D Implementations == | == X3D Implementations == |
Revision as of 15:41, 20 March 2013
Synopsis: Lots of work has been accomplished towards proper support of X3D Binary Compression for a wide variety of potential uses.
X3D appears to have have an 80% solution already available that meets various requirements for a general 3D transmission format.
- TODO: We are updating this page and creating a draft 2013 Call For Contributions to further progress these technical capabilities for X3D.
Contents
Existing Compression Usage for X3D and VRML97
- Approved ISO standard Compressed Binary Encoding (CBE) for X3D.
- Based on ISO standard Fast Infoset (FI) for XML compression.
- Optional, alternative gzip compression and MIME Type definitions for X3D.
- XML encoding (.x3dz/.x3d.gz), ClassicVRML encoding (.x3dvz/.x3dv.gz) and Compressed Binary encoding (.x3db.gz) file extensions.
- Optional, alternative gzip compression for VRML97.
- Original compression technique of applying gzip to .wrl compressed VRML97 files was called .wrz.
- This emerged as a common practice when gzip was originally used. No formal specification of .wrz or corresponding mime type was produced.
- Occasionally authors might also gzip .wrl files while retaining the .wrl file extension.
Polygon Reduction and Geometric Compression
Formal specifications:
- The X3D Compressed Binary Encoding defines extensible, repeatable compression and decompression algorithms for data-flow production chains. Multiple type-specific field encoders and geometric compression algorithms can be used in concert, but no specific geometric compression algorithms are referenced or required.
- X3D Canonicalization (C14N) provides standardized formatting so that digital signatures are not thwarted by whitespace variations.
Best practices:
- CAD Distillation Filter (CDF) technique allowing successive refinement of large X3D scenes into tighter X3D scenes.
- A highly effective exemplar algorithm for Coding Polygon Meshes as Compressable ASCII is demonstrated in the Experimental Binary Compression examples.
- Multiple CAD Distillation Filter (CDF) algorithms implemented in Xj3D and X3D-Edit as open-source.
- The Chisel VRML Optimisation Tool has an excellent set of data-reduction tools for VRML that are worth repeating for X3D.
- Multiple other conversion and translation tools available with supporting capabilities.
Data-Centric Binary Encodings
- Plan to add a further-improved X3D Compressed Binary Encoding using now-approved W3C Recommendation for Efficient XML Interchange (EXI).
- Web3D contributed to EXI working group and XML Binary Characterization working group efforts.
- 3D Model Compression, Serialization and Transmission use-case requirements are defined and met by EXI.
- Design includes compatibility with CDF techniques, XML Encryption, and XML Digital Signature for author authentication.
- Relevant example scenes maintained as part of X3D Basic Examples Archive - Security.
- These capabilities meets most needs of digital authors for digital rights management (DRM).
Network Streaming
- Multiple capabilities are already available in X3D for flexible network transmission.
- Anchor, Inline, LOD, LoadSensor, Script and Prototype nodes support successive retrieval of content once initial model is displayed.
- TODO: Willing to consider further addition of progressive-mesh geometric streaming technologies, perhaps by a public Call for Contributions. Note however that an effective progressive-mesh approach is likely dependent on the availability of a corresponding mesh compression algorithm.
- For example, the original August 2003 X3D Compressed Binary Encoding Request For Proposals (RFP).
- Intellectual Property Rights (IPR) protections for X3D specification.
- Patented technologies can be considered, but only when eventual use will be royalty free for X3D use (if eventually accepted).
- Submitters can restrict access to patented submissions during member-only working group review, if desired.
- TODO: Use cases and test examples can demonstrate whether http/https and local-file url retrieval are sufficient for a network protocol.
- Other network protocols (Web sockets, P2P channels, etc.) might be possible, but only if security restrictions can be handled satisfactorily.
- Javascript Object Notation (JSON) might be suitable for simple streaming of X3D scene-graph data via Script node or external HTML page, which can be useful for progressive mesh and other incremental network-update approaches
X3D Implementations
The following tools implement the X3D Compressed Binary Encoding (CBE) standard.
- Two independent open-source implementations available.
- C++ codebase: XIOT X3D Input Output Tool library.
- Java codebase: Xj3D.
- Ongoing status is maintained on Web3D-member wiki pages:
- Several thousand X3D Examples are available in .x3db form, encoded by Xj3D.
- TODO: Plan to similarly automate conversions and comparisons, using both Xj3D and XIOT, for cross-check interoperability and validation testing.
Looking Ahead
- Web3D's X3D and CAD Working Groups each have member commitments to pursue this continued innovative work in 2013.
- TODO: An open workshop on 3D Transmission Formats might be a thorough way to compare candidate technologies to complete these capabilities.
- Consider common, sharable technical strategies with MPEG-4 and Collada.