1. 21 Nov, 2019 8 commits
    • David Flynn's avatar
      2f0bcac0
    • David Flynn's avatar
      maths: be explicit in the computation type of Vec3::getNorm2 + friends · ee064ec9
      David Flynn authored
      The result and computation types of Vec3<T>::getNorm2 were assumed to
      be T.  This works fine for floating point types, but leads to overflow
      when the underlying vector is Vec3<int32_t>.  This commit requires the
      caller to supply the result of the computation type as a template
      parameter to getNorm2.
      ee064ec9
    • David Flynn's avatar
      maths: allow the usual numeric conversions between Vec3<T> and Vec3<U> · 52848dbf
      David Flynn authored
      This makes Vec3<T> perform more like the usual arithmetic types, in
      order to avoid having to explicitly perform element wise conversions
      when two Vec3<>s have different numeric types.
      
      For instance:
        _i = int16_t() + int()                // typeof(_i) == int
        vi = Vec3<int16_t>() + Vec3<int>()    // typeof(vi) == Vec3<int>
      
        _d = 1 + 2.0                          // typeof(_d) == double
        vd = Vec3<int>(1) + Vec3<double>(2.0) // typeof(vd) == Vec3<double>
      
        vi = Vec3<int>(Vec3<double>())        // typeof(vi) == Vec3<int>
        vd = Vec3<double>(Vec3<int>())        // typeof(vd) == Vec3<double>
      
      Be aware, however, that the usual implicit conversions can result
      in a loss of precision:
      
              int _i = 1 + 1.5                          // _i == 2;
        Vec3<int> vi = Vec3<int>(1) + Vec3<double>(1.5) // vi == Vec3<int>(2)
      52848dbf
    • David Flynn's avatar
      maths: use operator[] in Vec3<> arithmetic operators · 6dcd6f29
      David Flynn authored
      This commit works around an issue in gcc-5 where template friends
      do not grant friendship.
      6dcd6f29
    • 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
    • David Flynn's avatar
      attr: change RGB coding order to GBR · c963fede
      David Flynn authored
      The GBR coding order matches the description in ISO/IEC 23001-8 for
      the identity matrix (MatrixCoefficients=0).
      c963fede
    • Yiting Shao's avatar
      attr/m48894: introduce neighbour bias LoD predictor construction · 9d34012b
      Yiting Shao authored and David Flynn's avatar David Flynn committed
      This adoption allows determining the weights of each point's
      predicting neighbours with a reduced influence of the, for
      instance, z component.
      9d34012b
  2. 12 Aug, 2019 2 commits
  3. 16 Apr, 2019 8 commits
  4. 05 Feb, 2019 2 commits
  5. 01 Nov, 2018 1 commit
  6. 31 Oct, 2018 1 commit
  7. 20 Aug, 2018 1 commit
  8. 23 Jul, 2018 1 commit
  9. 05 Jun, 2018 1 commit
  10. 10 May, 2018 2 commits
    • David Flynn's avatar
      m42239/geometry: inferred direct position coding mode · 76d35c23
      David Flynn authored
      This commit provides an implementation of m42239, permitting early
      coding termination of sub-trees that contain few points:
      
       - the so-called IDCM feature uses an eligibility criteria prior
         to permitting an encoder mode decision.
      
       - the feature may be controlled via the command line / config file
         using the --inferredDirectCodingMode=1|0 option
      76d35c23
    • David Flynn's avatar
      m42238/geometry: neighbour contextualised coding of occupancy · ca4ac3f9
      David Flynn authored
      This commit provides an implementation of m42238 to code occupancy:
      
       - a node's child occupancy is contextualised based on the adjacent
         neighbours of the parent node.
      
       - when an isolated node is occupied by only a single child, the
         sub-node address [0,7] is directly coded instead of the 8-bit
         occupancy word.
      
       - collection of neighbour occupancy is performed using a scatter/
         gather operation upon the insertion of each child node into the
         fifo queue.
      
       - the feature may be controlled via the command line / config file
         using the --neighbourContextualisation=1|0 option
      ca4ac3f9
  11. 09 May, 2018 1 commit
    • David Flynn's avatar
      remove unused functions/classes/methods · 129e2f1f
      David Flynn authored
      Unused code can get in the way of refactoring.  This commit removes the
      following classes, methods and utility functions:
      
       - PCCStaticKdTree3
       - PCCMatrix3
       - PCCDiagonalize
      
       - PCCPointSet3::setPosition(...)
       - PCCPointSet3::addPoint(...)
       - PCCPointSet3::computeCentroid(...)
      
       - PCCVector3::normalize(...)
       - PCCVector3::operator^(...)
      
       - PCCIncrementalKdTree3::append(...)
      
       - PCCDivideRange()
       - PCCGetNumberOfBitsInFixedLengthRepresentation()
      129e2f1f
  12. 06 May, 2018 1 commit
  13. 11 Dec, 2017 1 commit