1. 21 Nov, 2019 2 commits
    • Xiang Zhang's avatar
      geom/m49231: add support for non-cubic nodes with implicit qtbt · 667f9209
      Xiang Zhang authored and David Flynn's avatar David Flynn committed
      This adoption permits coding geometry with non-cubic bounding boxes.
      Since the depth of the tree remains constant for cubic and non-cubic
      bounding boxes with identical largest dimensions, quad-tree and
      binary-tree partitions are introduced to avoid coding 'fractional'
      positions.
      
      The following configuration options control the placement of non-octree
      partitions within the coding tree:
      
       --max_num_implicit_qtbt_before_ot
       --min_implicit_qtbt_size_log2
      667f9209
    • David Flynn's avatar
      geom: use single level based tree position representation · a8e8d3e6
      David Flynn authored
      The geometry tree nodes contain a position element (pos) that identifies
      the spatial position of the node.  At internal nodes this node position
      is the partial position of a point and may either be represented using
      the magnitude of the decoded points, or the magnitude of the current
      depth.
      
      The first form equates to:
       nextPos = curPos | (xyz << currentNodeSize)
      
      The second:
       nextPos = (curPos << 1) | xyz
      
      Where xyz represents a position bit from the coded occupancy.
      
      In order to use the first form to determine neighbour relationships,
      curPos must be shifted down to represent position within the current
      depth.  This repeated shifting, along with the introduction of
      simultaneous quantised and unquantised positions becomes increasingly
      difficult to follow when adding non-cubic nodes (via OtQtBt).
      
      This commit switches the representation to the second form above,
      eliminating various shifted forms and duplicate state.  A decoded
      positions is inverse quantised when reaching a leaf node.
      a8e8d3e6
  2. 16 Apr, 2019 3 commits
  3. 05 Feb, 2019 2 commits
    • David Flynn's avatar
      geom/m44753: contextualisation of occupancy using adjacency · 82a0c430
      David Flynn authored
      Each occupancy bit is contextualised based on the number of occupied
      (directly) adjacent child nodes in the (x-1), (y-1), and (z-1)
      neighbour nodes used to generate the neighbour pattern.
      
      Three contextualisation states are added:
       - no adjacent neighbours
       - one adjacent neigbour (=adjacencyGt0)
       - two adjacent neighoburs (=adjacencyGt1)
      82a0c430
    • David Flynn's avatar
      geom/m44752: false occupancy aware neighbour determination · 62b05926
      David Flynn authored
      The neighbour pattern for a node indicates occupied neighbouring nodes.
      
      This commit updates the definition of occupancy for the (x-1), (y-1),
      and (z-1) neighbours to be occupied if the neighbour's adjoining
      children (ie sharing a face with the current node) are occupied.
      
      In the 1-D figure below, at a depth d, the node 'X' has two occupied
      neighbours 'R' and 'L'.  When determining the neighbour pattern of X,
      the (x-1) state of the neighbour's adjoining child ('r') is used
      instead.  For completeness, nodes marked with '?' are not causally
      available.
      
        d+0:   R|X|L
        d+1:  Rr|??|??
      62b05926
  4. 31 Oct, 2018 2 commits
  5. 20 Aug, 2018 1 commit