Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draco Bitstream Specification #1721

Open
wants to merge 43 commits into
base: main
Choose a base branch
from

Conversation

UX3D-kanzler
Copy link
Contributor

No description provided.

@lexaknyazev
Copy link
Member

lexaknyazev commented Jan 28, 2020

Pushed a few language updates for the first sections of the bitstream spec.

Now, they contain all the information needed to decode header, metadata, and sequential connectivity encoding without even looking into "more formal" later parts that are much less readable, imo. Maybe remove them completely?

In the source-code driven parts, there are still errors of various severity from the original document reported earlier in the old Draco bitstream thread. For convenience, here they are:


  • Since local vars lack types, it's not obvious in some cases when division operator should be integer or float. Sure, this could be deduced from context, but I'd say that the spec should be explicit about that somehow.

  • PosOpposite and SetPosOpposite refer to undefined opposite_corners_ array. What length should it have? Draco source suggests that opposite_corners_ consists of int32 elements and its length is num_faces * 3.

  • MapCornerToVertex assigns to uninitialized corner_to_vertex_map_[0].

  • att_dec_data_id from ParseAttributeDecodersData isn't used in the spec. Moreover it's declared as signed integer in Draco sources and seems to be used for some purpose.

  • Values of att_connectivity_seam_opp are never used.

  • AttrOpposite declares two arguments but uses only one:
    image

  • face_id and local assigned in DecodeAttributeSeams are never used.

  • att_dec_decoder_type array is zero-based:

    image
    however its usage may imply otherwise. E.g. in IsOnBoundary:

    image

    Here, the value of att_dec_decoder_type[0] will never be read. Moreover, IsOnBoundary will never be called with att_dec == 0 because it's called only from EdgeBreakerAttributeTraverser_ProcessCorner:

    image

    which can be called only when curr_att_dec is not 0:

    image

    Similar concerns could be raised about Opposite:

    image

@donmccurdy
Copy link
Contributor

Checking in on this — what else is needed? Are we just waiting for more feedback?

@lexaknyazev
Copy link
Member

@donmccurdy
I'm doing another pass on the spec, should finish by the end of the week.

@UX3D-nopper UX3D-nopper added needs discussion Issue or PR requires working group discussion to resolve. and removed extension labels Oct 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs discussion Issue or PR requires working group discussion to resolve.
6 participants