Wed, Feb 18, 2015
What …
What are the units, coordinate system ?
- Coordinate system : Right Handled
- object : Y up, Z forward, X left
- camera : Y up, Z lookAt direction, X left
- orthogonal-axes
- uniform axis unit
- front face: CCW (counter-clock-wise), back face: CW
- Distance unit : meter (float)
- Time unit : millisecond (int32)
- Angle unit : radian (float)
I try to collect same data for game engine, tools, to help create importer/exporter. Help me to complete the table
What is the file extension ?
.xbuf
I don’t know ;-)
But there some ideas :
- Integrate some community’ suggestions
- Ingrate compression like glTF: Open 3D Graphics Compression
- Define an archive format to store complementary data : textures, shaders, …
How …
How can I protect my content ?
- Change the file extension
- Modify the file content, example of modifications (can be combined) :
- wrap into your own proto Message
- add an header at the begin of the file (a fixed or variable size of useless bytes, some license info)
- encrypt : rot13, pgp, …
- wrap into an archive (but without the reguler extension): tar, zip,…
- compress (but without the reguler extension) : snappy, gzip, bzip, lzma,…
Why …
- Rxcept if you use OpenGEX Import Template (C++ only), it requires to write parser and low level writer, and writing good parser is hard.
- Text based, not optimal for network and realtime update
- Importer should support several metrics, several orientations (Z up, Y up,…)
- Moving and heavy spec ;-)
- Json based format requires to write “semantic” parser, converter.
Why no configurable metrics (like in OpenGEX) ?
- To simplify the loader (less composition to implement loader, less confusion) : “convention over configuration”
- To ease share and merge of data (eg: merge multiples xbuf file)
- It’s the responsability of the exporter to write shareable data (from internal format to xbuf)
Why no configurable up ?
- See Why no configurable metrics (like in OpenGEX) ? (above).
- To avoid branch in loader code like in this response on unity forum.
see discussion glTF : unify scenes axis-up.
- See Why no configurable metrics (like in OpenGEX) ? (above).
- I don’t want too freedom (simple loader, more work on exporter), so I have to choose between matrix or translation / rotation / scale
- Extracting translation / rotation / scale from a 4×4 matrix is harder than creating a 4×4 matrix from translation / rotation / scale.
- Quaternion is often more animation friendly.