##Protocol mesh object
A 3-Dimensional (3D) mesh file format based on Google's protobuf library.
Create a more robust and extensible 3D file format that is similar to Stanford PLY but less cumbersome to extend and easily adaptable to multiple languages like C++, Python, and Java. The format should be similar in flexibility to JSON or XML but compact (binary) and much faster.
There is nothing inherently wrong with Stanford PLY and it's certainly well supported by most commercial applications. The issue is that not all implementations of the PLY library are consistent because, frankly, it's old and maintained by fringe graphics users. Google's protocol buffers are a future-proof way of efficiently encoding structured data in a way that is obvious to most engineers.
required
field specifiers are not allowed. As the docs say, "Required is forever". Useoptional
orrepeated
instead.repeated
fields should note whether they should have 0 elements or not. protobuf allows repeated fields to have any number of elements, including 0. However for certain fields you may wish to stipulate that if they are 0 any implementation should flag this as an error. This is a social agreement, protobuf has not mechanism to control this behavior.- Extensions must be supported and should start at a sufficiently high index to avoid future collisions
optional
fields must explicitly define a default value. protobuf will revert to a type-specific value if default is not specified.- repeated fields of basic numeric types will include [packed=true] to provide more efficient packing when available.
- Do not normalize data if it isn't necessary. e.g. Store RGB colors as
int32s
, notfloats
. This allows protobuf's optimizer to use variable length encoding for a smaller footprint. - The core .proto file should never be changed once established. protobuf extensions will provide support for future enhancements but that means the core must have group consensus.
- Export tools must exist before the format is distributed. This includes standalone tools and plugins for Blender, MeshLab, Maya, and 3DS Max.
Hi, I'm also working on a 3D format using protobuff (I just found your page). If
want to take a look the current name is pgex (can change this month).
I also work on a Blender exporter (part of blender_external_renderer ) and a jMonkeyEngine importer (part of jme3_ext_remote_editor)
Any feeback is welcome, maybe I'll try your store of RGB.
Can I link your page ?