- 21 Nov, 2019 2 commits
-
-
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
-
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.
-
- 16 Apr, 2019 3 commits
-
-
David Flynn authored
This commit adds an extra contextualisation bit for occupancy coding based on there being an unoccupied adjacent child neighbour, rather than just depending upon the number of occupied neighbours.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs.
-
David Flynn authored
The commit adds a flag to conditionally enable/disable the feature.
-
- 05 Feb, 2019 2 commits
-
-
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)
-
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|??|??
-
- 31 Oct, 2018 2 commits
-
-
David Flynn authored
This commit removes unnecessary include directives.
-
David Flynn authored
The geometry coder is quite large, especially with trisoup and has no benefit to being a header only implementation. This commit moves the geometry octree coder out of the header files and into geometry_octree_{en,de}coder.cpp.
-
- 20 Aug, 2018 1 commit
-
-