| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | #include <openvdb/Types.h> | ||
| 5 | #include <openvdb/openvdb.h> | ||
| 6 | #include <openvdb/tools/Composite.h> | ||
| 7 | #include <openvdb/tools/LevelSetSphere.h> | ||
| 8 | #include <openvdb/util/CpuTimer.h> | ||
| 9 | #include "util.h" // for unittest_util::makeSphere() | ||
| 10 | |||
| 11 | #include <gtest/gtest.h> | ||
| 12 | |||
| 13 | #include <algorithm> // for std::max() and std::min() | ||
| 14 | #include <cmath> // for std::isnan() and std::isinf() | ||
| 15 | #include <limits> // for std::numeric_limits | ||
| 16 | #include <sstream> | ||
| 17 | #include <string> | ||
| 18 | #include <type_traits> | ||
| 19 | |||
| 20 | #define TEST_CSG_VERBOSE 0 | ||
| 21 | |||
| 22 | #if TEST_CSG_VERBOSE | ||
| 23 | #include <openvdb/util/CpuTimer.h> | ||
| 24 | #include <iostream> | ||
| 25 | #endif | ||
| 26 | |||
| 27 | namespace { | ||
| 28 | using Float433Tree = openvdb::tree::Tree4<float, 4, 3, 3>::Type; | ||
| 29 | using Float433Grid = openvdb::Grid<Float433Tree>; | ||
| 30 | } | ||
| 31 | |||
| 32 | |||
| 33 | 12 | class TestTreeCombine: public ::testing::Test | |
| 34 | { | ||
| 35 | public: | ||
| 36 | 12 | void SetUp() override { openvdb::initialize(); Float433Grid::registerGrid(); } | |
| 37 | 12 | void TearDown() override { openvdb::uninitialize(); } | |
| 38 | |||
| 39 | protected: | ||
| 40 | template<class TreeT, typename TreeComp, typename ValueComp> | ||
| 41 | void testComp(const TreeComp&, const ValueComp&); | ||
| 42 | |||
| 43 | template<class TreeT> | ||
| 44 | void testCompRepl(); | ||
| 45 | |||
| 46 | template<typename TreeT, typename VisitorT> | ||
| 47 | typename TreeT::Ptr | ||
| 48 | visitCsg(const TreeT& a, const TreeT& b, const TreeT& ref, const VisitorT&); | ||
| 49 | }; | ||
| 50 | |||
| 51 | |||
| 52 | //////////////////////////////////////// | ||
| 53 | |||
| 54 | |||
| 55 | namespace { | ||
| 56 | namespace Local { | ||
| 57 | |||
| 58 | template<typename ValueT> | ||
| 59 | struct OrderDependentCombineOp { | ||
| 60 | OrderDependentCombineOp() {} | ||
| 61 | 74750 | void operator()(const ValueT& a, const ValueT& b, ValueT& result) const { | |
| 62 |
4/18✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1014 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 8190 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 65534 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
74750 | result = a + ValueT(100) * b; // result is order-dependent on A and B |
| 63 | 74750 | } | |
| 64 | }; | ||
| 65 | |||
| 66 | /// Test Tree::combine(), which takes a functor that accepts three arguments | ||
| 67 | /// (the a, b and result values). | ||
| 68 | template<typename TreeT> | ||
| 69 | 8 | void combine(TreeT& a, TreeT& b) | |
| 70 | { | ||
| 71 | 8 | a.combine(b, OrderDependentCombineOp<typename TreeT::ValueType>()); | |
| 72 | 8 | } | |
| 73 | |||
| 74 | /// Test Tree::combineExtended(), which takes a functor that accepts a single | ||
| 75 | /// CombineArgs argument, in which the functor can return a computed active state | ||
| 76 | /// for the output value. | ||
| 77 | template<typename TreeT> | ||
| 78 | 8 | void extendedCombine(TreeT& a, TreeT& b) | |
| 79 | { | ||
| 80 | using ValueT = typename TreeT::ValueType; | ||
| 81 | struct ArgsOp { | ||
| 82 | 149500 | static void order(openvdb::CombineArgs<ValueT>& args) { | |
| 83 | // The result is order-dependent on A and B. | ||
| 84 | 149500 | args.setResult(args.a() + ValueT(100) * args.b()); | |
| 85 | 149500 | args.setResultIsActive(args.aIsActive() || args.bIsActive()); | |
| 86 | } | ||
| 87 | }; | ||
| 88 | a.combineExtended(b, ArgsOp::order); | ||
| 89 | 8 | } | |
| 90 | |||
| 91 | 8 | template<typename TreeT> void compMax(TreeT& a, TreeT& b) { openvdb::tools::compMax(a, b); } | |
| 92 | 8 | template<typename TreeT> void compMin(TreeT& a, TreeT& b) { openvdb::tools::compMin(a, b); } | |
| 93 | 8 | template<typename TreeT> void compSum(TreeT& a, TreeT& b) { openvdb::tools::compSum(a, b); } | |
| 94 | 8 | template<typename TreeT> void compMul(TreeT& a, TreeT& b) { openvdb::tools::compMul(a, b); }\ | |
| 95 | 8 | template<typename TreeT> void compDiv(TreeT& a, TreeT& b) { openvdb::tools::compDiv(a, b); }\ | |
| 96 | |||
| 97 | 36 | inline float orderf(float a, float b) { return a + 100.0f * b; } | |
| 98 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
|
18 | inline float maxf(float a, float b) { return std::max(a, b); } |
| 99 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
|
18 | inline float minf(float a, float b) { return std::min(a, b); } |
| 100 | 18 | inline float sumf(float a, float b) { return a + b; } | |
| 101 | 18 | inline float mulf(float a, float b) { return a * b; } | |
| 102 | 18 | inline float divf(float a, float b) { return a / b; } | |
| 103 | |||
| 104 | 36 | inline openvdb::Vec3f orderv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { return a+100.0f*b; } | |
| 105 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
|
18 | inline openvdb::Vec3f maxv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { |
| 106 | const float aMag = a.lengthSqr(), bMag = b.lengthSqr(); | ||
| 107 |
3/4✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 9 times.
|
18 | return (aMag > bMag ? a : (bMag > aMag ? b : std::max(a, b))); |
| 108 | } | ||
| 109 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
|
18 | inline openvdb::Vec3f minv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { |
| 110 | const float aMag = a.lengthSqr(), bMag = b.lengthSqr(); | ||
| 111 |
3/4✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 9 times.
|
18 | return (aMag < bMag ? a : (bMag < aMag ? b : std::min(a, b))); |
| 112 | } | ||
| 113 | 18 | inline openvdb::Vec3f sumv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { return a + b; } | |
| 114 | 18 | inline openvdb::Vec3f mulv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { return a * b; } | |
| 115 | 18 | inline openvdb::Vec3f divv(const openvdb::Vec3f& a, const openvdb::Vec3f& b) { return a / b; } | |
| 116 | |||
| 117 | } // namespace Local | ||
| 118 | } // unnamed namespace | ||
| 119 | |||
| 120 | |||
| 121 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCombine) |
| 122 | { | ||
| 123 | 1 | testComp<openvdb::FloatTree>(Local::combine<openvdb::FloatTree>, Local::orderf); | |
| 124 | 1 | testComp<openvdb::VectorTree>(Local::combine<openvdb::VectorTree>, Local::orderv); | |
| 125 | |||
| 126 | 1 | testComp<openvdb::FloatTree>(Local::extendedCombine<openvdb::FloatTree>, Local::orderf); | |
| 127 | 1 | testComp<openvdb::VectorTree>(Local::extendedCombine<openvdb::VectorTree>, Local::orderv); | |
| 128 | 1 | } | |
| 129 | |||
| 130 | |||
| 131 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompMax) |
| 132 | { | ||
| 133 | 1 | testComp<openvdb::FloatTree>(Local::compMax<openvdb::FloatTree>, Local::maxf); | |
| 134 | 1 | testComp<openvdb::VectorTree>(Local::compMax<openvdb::VectorTree>, Local::maxv); | |
| 135 | 1 | } | |
| 136 | |||
| 137 | |||
| 138 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompMin) |
| 139 | { | ||
| 140 | 1 | testComp<openvdb::FloatTree>(Local::compMin<openvdb::FloatTree>, Local::minf); | |
| 141 | 1 | testComp<openvdb::VectorTree>(Local::compMin<openvdb::VectorTree>, Local::minv); | |
| 142 | 1 | } | |
| 143 | |||
| 144 | |||
| 145 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompSum) |
| 146 | { | ||
| 147 | 1 | testComp<openvdb::FloatTree>(Local::compSum<openvdb::FloatTree>, Local::sumf); | |
| 148 | 1 | testComp<openvdb::VectorTree>(Local::compSum<openvdb::VectorTree>, Local::sumv); | |
| 149 | 1 | } | |
| 150 | |||
| 151 | |||
| 152 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompProd) |
| 153 | { | ||
| 154 | 1 | testComp<openvdb::FloatTree>(Local::compMul<openvdb::FloatTree>, Local::mulf); | |
| 155 | 1 | testComp<openvdb::VectorTree>(Local::compMul<openvdb::VectorTree>, Local::mulv); | |
| 156 | 1 | } | |
| 157 | |||
| 158 | |||
| 159 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompDiv) |
| 160 | { | ||
| 161 | 1 | testComp<openvdb::FloatTree>(Local::compDiv<openvdb::FloatTree>, Local::divf); | |
| 162 | 1 | testComp<openvdb::VectorTree>(Local::compDiv<openvdb::VectorTree>, Local::divv); | |
| 163 | 1 | } | |
| 164 | |||
| 165 | |||
| 166 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestTreeCombine, testCompDivByZero) |
| 167 | { | ||
| 168 | const openvdb::Coord c0(0), c1(1), c2(2), c3(3), c4(4); | ||
| 169 | |||
| 170 | // Verify that integer-valued grids behave well w.r.t. division by zero. | ||
| 171 | { | ||
| 172 | 1 | const openvdb::Int32 inf = std::numeric_limits<openvdb::Int32>::max(); | |
| 173 | |||
| 174 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | openvdb::Int32Tree a(/*background=*/1), b(0); |
| 175 | |||
| 176 | a.setValueOn(c0); | ||
| 177 | a.setValueOn(c1); | ||
| 178 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | a.setValueOn(c2, -1); |
| 179 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | a.setValueOn(c3, -1); |
| 180 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | a.setValueOn(c4, 0); |
| 181 | b.setValueOn(c1); | ||
| 182 | b.setValueOn(c3); | ||
| 183 | |||
| 184 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compDiv(a, b); |
| 185 | |||
| 186 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ( inf, a.getValue(c0)); // 1 / 0 |
| 187 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ( inf, a.getValue(c1)); // 1 / 0 |
| 188 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(-inf, a.getValue(c2)); // -1 / 0 |
| 189 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(-inf, a.getValue(c3)); // -1 / 0 |
| 190 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ( 0, a.getValue(c4)); // 0 / 0 |
| 191 | } | ||
| 192 | { | ||
| 193 | 1 | const openvdb::Index32 zero(0), inf = std::numeric_limits<openvdb::Index32>::max(); | |
| 194 | |||
| 195 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | openvdb::UInt32Tree a(/*background=*/1), b(0); |
| 196 | |||
| 197 | a.setValueOn(c0); | ||
| 198 | a.setValueOn(c1); | ||
| 199 | a.setValueOn(c2, zero); | ||
| 200 | b.setValueOn(c1); | ||
| 201 | |||
| 202 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compDiv(a, b); |
| 203 | |||
| 204 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ( inf, a.getValue(c0)); // 1 / 0 |
| 205 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ( inf, a.getValue(c1)); // 1 / 0 |
| 206 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(zero, a.getValue(c2)); // 0 / 0 |
| 207 | } | ||
| 208 | |||
| 209 | // Verify that non-integer-valued grids don't use integer division semantics. | ||
| 210 | { | ||
| 211 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | openvdb::FloatTree a(/*background=*/1.0), b(0.0); |
| 212 | |||
| 213 | a.setValueOn(c0); | ||
| 214 | a.setValueOn(c1); | ||
| 215 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | a.setValueOn(c2, -1.0); |
| 216 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | a.setValueOn(c3, -1.0); |
| 217 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | a.setValueOn(c4, 0.0); |
| 218 | b.setValueOn(c1); | ||
| 219 | b.setValueOn(c3); | ||
| 220 | |||
| 221 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compDiv(a, b); |
| 222 | |||
| 223 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(std::isinf(a.getValue(c0))); // 1 / 0 |
| 224 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(std::isinf(a.getValue(c1))); // 1 / 0 |
| 225 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(std::isinf(a.getValue(c2))); // -1 / 0 |
| 226 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(std::isinf(a.getValue(c3))); // -1 / 0 |
| 227 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(std::isnan(a.getValue(c4))); // 0 / 0 |
| 228 | } | ||
| 229 | 1 | } | |
| 230 | |||
| 231 | |||
| 232 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompReplace) |
| 233 | { | ||
| 234 | 1 | testCompRepl<openvdb::FloatTree>(); | |
| 235 | 1 | testCompRepl<openvdb::VectorTree>(); | |
| 236 | 1 | } | |
| 237 | |||
| 238 | |||
| 239 | template<typename TreeT, typename TreeComp, typename ValueComp> | ||
| 240 | void | ||
| 241 | 28 | TestTreeCombine::testComp(const TreeComp& comp, const ValueComp& op) | |
| 242 | { | ||
| 243 | using ValueT = typename TreeT::ValueType; | ||
| 244 | |||
| 245 | const ValueT | ||
| 246 | zero = openvdb::zeroVal<ValueT>(), | ||
| 247 | 28 | minusOne = zero + (-1), | |
| 248 | 28 | minusTwo = zero + (-2), | |
| 249 | 28 | one = zero + 1, | |
| 250 | 28 | three = zero + 3, | |
| 251 | 28 | four = zero + 4, | |
| 252 | 28 | five = zero + 5; | |
| 253 | |||
| 254 | { | ||
| 255 | 56 | TreeT aTree(/*background=*/one); | |
| 256 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 0), three); |
| 257 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 1), three); |
| 258 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 2), aTree.background()); |
| 259 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 1, 2), aTree.background()); |
| 260 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOff(openvdb::Coord(1, 0, 0), three); |
| 261 | ✗ | aTree.setValueOff(openvdb::Coord(1, 0, 1), three); | |
| 262 | |||
| 263 | 56 | TreeT bTree(five); | |
| 264 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 0, 0), minusOne); |
| 265 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 1, 0), four); |
| 266 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 1, 2), minusTwo); |
| 267 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOff(openvdb::Coord(1, 0, 0), minusOne); |
| 268 | ✗ | bTree.setValueOff(openvdb::Coord(1, 1, 0), four); | |
| 269 | |||
| 270 | // Call aTree.compMax(bTree), aTree.compSum(bTree), etc. | ||
| 271 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | comp(aTree, bTree); |
| 272 | |||
| 273 | // a = 3 (On), b = -1 (On) | ||
| 274 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(three, minusOne), aTree.getValue(openvdb::Coord(0, 0, 0))); |
| 275 | |||
| 276 | // a = 3 (On), b = 5 (bg) | ||
| 277 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(three, five), aTree.getValue(openvdb::Coord(0, 0, 1))); |
| 278 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 0, 1))); |
| 279 | |||
| 280 | // a = 1 (On, = bg), b = 5 (bg) | ||
| 281 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(one, five), aTree.getValue(openvdb::Coord(0, 0, 2))); |
| 282 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 0, 2))); |
| 283 | |||
| 284 | // a = 1 (On, = bg), b = -2 (On) | ||
| 285 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(one, minusTwo), aTree.getValue(openvdb::Coord(0, 1, 2))); |
| 286 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 1, 2))); |
| 287 | |||
| 288 | // a = 1 (bg), b = 4 (On) | ||
| 289 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(one, four), aTree.getValue(openvdb::Coord(0, 1, 0))); |
| 290 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 1, 0))); |
| 291 | |||
| 292 | // a = 3 (Off), b = -1 (Off) | ||
| 293 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(three, minusOne), aTree.getValue(openvdb::Coord(1, 0, 0))); |
| 294 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 0, 0))); |
| 295 | |||
| 296 | // a = 3 (Off), b = 5 (bg) | ||
| 297 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(three, five), aTree.getValue(openvdb::Coord(1, 0, 1))); |
| 298 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 0, 1))); |
| 299 | |||
| 300 | // a = 1 (bg), b = 4 (Off) | ||
| 301 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(one, four), aTree.getValue(openvdb::Coord(1, 1, 0))); |
| 302 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 1, 0))); |
| 303 | |||
| 304 | // a = 1 (bg), b = 5 (bg) | ||
| 305 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(one, five), aTree.getValue(openvdb::Coord(1000, 1, 2))); |
| 306 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1000, 1, 2))); |
| 307 | } | ||
| 308 | |||
| 309 | // As above, but combining the A grid into the B grid | ||
| 310 | { | ||
| 311 | 56 | TreeT aTree(/*bg=*/one); | |
| 312 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 0), three); |
| 313 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 1), three); |
| 314 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 0, 2), aTree.background()); |
| 315 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOn(openvdb::Coord(0, 1, 2), aTree.background()); |
| 316 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | aTree.setValueOff(openvdb::Coord(1, 0, 0), three); |
| 317 | ✗ | aTree.setValueOff(openvdb::Coord(1, 0, 1), three); | |
| 318 | |||
| 319 | 56 | TreeT bTree(five); | |
| 320 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 0, 0), minusOne); |
| 321 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 1, 0), four); |
| 322 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOn(openvdb::Coord(0, 1, 2), minusTwo); |
| 323 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | bTree.setValueOff(openvdb::Coord(1, 0, 0), minusOne); |
| 324 | ✗ | bTree.setValueOff(openvdb::Coord(1, 1, 0), four); | |
| 325 | |||
| 326 | // Call bTree.compMax(aTree), bTree.compSum(aTree), etc. | ||
| 327 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | comp(bTree, aTree); |
| 328 | |||
| 329 | // a = 3 (On), b = -1 (On) | ||
| 330 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(minusOne, three), bTree.getValue(openvdb::Coord(0, 0, 0))); |
| 331 | |||
| 332 | // a = 3 (On), b = 5 (bg) | ||
| 333 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(five, three), bTree.getValue(openvdb::Coord(0, 0, 1))); |
| 334 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 0, 1))); |
| 335 | |||
| 336 | // a = 1 (On, = bg), b = 5 (bg) | ||
| 337 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(five, one), bTree.getValue(openvdb::Coord(0, 0, 2))); |
| 338 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 0, 2))); |
| 339 | |||
| 340 | // a = 1 (On, = bg), b = -2 (On) | ||
| 341 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(minusTwo, one), bTree.getValue(openvdb::Coord(0, 1, 2))); |
| 342 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 1, 2))); |
| 343 | |||
| 344 | // a = 1 (bg), b = 4 (On) | ||
| 345 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(four, one), bTree.getValue(openvdb::Coord(0, 1, 0))); |
| 346 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 1, 0))); |
| 347 | |||
| 348 | // a = 3 (Off), b = -1 (Off) | ||
| 349 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(minusOne, three), bTree.getValue(openvdb::Coord(1, 0, 0))); |
| 350 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 0, 0))); |
| 351 | |||
| 352 | // a = 3 (Off), b = 5 (bg) | ||
| 353 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(five, three), bTree.getValue(openvdb::Coord(1, 0, 1))); |
| 354 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 0, 1))); |
| 355 | |||
| 356 | // a = 1 (bg), b = 4 (Off) | ||
| 357 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(four, one), bTree.getValue(openvdb::Coord(1, 1, 0))); |
| 358 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 1, 0))); |
| 359 | |||
| 360 | // a = 1 (bg), b = 5 (bg) | ||
| 361 |
3/20✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
42 | EXPECT_EQ(op(five, one), bTree.getValue(openvdb::Coord(1000, 1, 2))); |
| 362 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 14 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
28 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1000, 1, 2))); |
| 363 | } | ||
| 364 | 28 | } | |
| 365 | |||
| 366 | |||
| 367 | //////////////////////////////////////// | ||
| 368 | |||
| 369 | |||
| 370 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestTreeCombine, testCombine2) |
| 371 | { | ||
| 372 | using openvdb::Coord; | ||
| 373 | using openvdb::Vec3d; | ||
| 374 | |||
| 375 | struct Local { | ||
| 376 | 37375 | static void floatAverage(const float& a, const float& b, float& result) | |
| 377 | 37375 | { result = 0.5f * (a + b); } | |
| 378 | 37375 | static void vec3dAverage(const Vec3d& a, const Vec3d& b, Vec3d& result) | |
| 379 | 37375 | { result = 0.5 * (a + b); } | |
| 380 | 37375 | static void vec3dFloatMultiply(const Vec3d& a, const float& b, Vec3d& result) | |
| 381 | 37375 | { result = a * b; } | |
| 382 | 37375 | static void vec3dBoolMultiply(const Vec3d& a, const bool& b, Vec3d& result) | |
| 383 | 37375 | { result = a * b; } | |
| 384 | }; | ||
| 385 | |||
| 386 | const Coord c0(0, 0, 0), c1(0, 0, 1), c2(0, 1, 0), c3(1, 0, 0), c4(1000, 1, 2); | ||
| 387 | |||
| 388 | 2 | openvdb::FloatTree aFloatTree(/*bg=*/1.0), bFloatTree(5.0), outFloatTree(1.0); | |
| 389 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | aFloatTree.setValue(c0, 3.0); |
| 390 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | aFloatTree.setValue(c1, 3.0); |
| 391 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | bFloatTree.setValue(c0, -1.0); |
| 392 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | bFloatTree.setValue(c2, 4.0); |
| 393 | outFloatTree.combine2(aFloatTree, bFloatTree, Local::floatAverage); | ||
| 394 | |||
| 395 | const float tolerance = 0.0; | ||
| 396 | // Average of set value 3 and set value -1 | ||
| 397 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_NEAR(1.0, outFloatTree.getValue(c0), tolerance); |
| 398 | // Average of set value 3 and bg value 5 | ||
| 399 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_NEAR(4.0, outFloatTree.getValue(c1), tolerance); |
| 400 | // Average of bg value 1 and set value 4 | ||
| 401 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_NEAR(2.5, outFloatTree.getValue(c2), tolerance); |
| 402 | // Average of bg value 1 and bg value 5 | ||
| 403 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(outFloatTree.isValueOff(c3)); |
| 404 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(outFloatTree.isValueOff(c4)); |
| 405 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_NEAR(3.0, outFloatTree.getValue(c3), tolerance); |
| 406 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_NEAR(3.0, outFloatTree.getValue(c4), tolerance); |
| 407 | |||
| 408 | // As above, but combining vector grids: | ||
| 409 | const Vec3d zero(0), one(1), two(2), three(3), four(4), five(5); | ||
| 410 | 2 | openvdb::Vec3DTree aVecTree(/*bg=*/one), bVecTree(five), outVecTree(one); | |
| 411 | aVecTree.setValue(c0, three); | ||
| 412 | aVecTree.setValue(c1, three); | ||
| 413 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | bVecTree.setValue(c0, -1.0 * one); |
| 414 | bVecTree.setValue(c2, four); | ||
| 415 | outVecTree.combine2(aVecTree, bVecTree, Local::vec3dAverage); | ||
| 416 | |||
| 417 | // Average of set value 3 and set value -1 | ||
| 418 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(one, outVecTree.getValue(c0)); |
| 419 | // Average of set value 3 and bg value 5 | ||
| 420 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(four, outVecTree.getValue(c1)); |
| 421 | // Average of bg value 1 and set value 4 | ||
| 422 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(2.5 * one, outVecTree.getValue(c2)); |
| 423 | // Average of bg value 1 and bg value 5 | ||
| 424 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(outVecTree.isValueOff(c3)); |
| 425 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(outVecTree.isValueOff(c4)); |
| 426 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(three, outVecTree.getValue(c3)); |
| 427 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(three, outVecTree.getValue(c4)); |
| 428 | |||
| 429 | // Multiply the vector tree by the scalar tree. | ||
| 430 | { | ||
| 431 | 2 | openvdb::Vec3DTree vecTree(one); | |
| 432 | vecTree.combine2(outVecTree, outFloatTree, Local::vec3dFloatMultiply); | ||
| 433 | |||
| 434 | // Product of set value (1, 1, 1) and set value 1 | ||
| 435 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c0)); |
| 436 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(one, vecTree.getValue(c0)); |
| 437 | // Product of set value (4, 4, 4) and set value 4 | ||
| 438 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c1)); |
| 439 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(4 * 4 * one, vecTree.getValue(c1)); |
| 440 | // Product of set value (2.5, 2.5, 2.5) and set value 2.5 | ||
| 441 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c2)); |
| 442 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(2.5 * 2.5 * one, vecTree.getValue(c2)); |
| 443 | // Product of bg value (3, 3, 3) and bg value 3 | ||
| 444 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOff(c3)); |
| 445 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOff(c4)); |
| 446 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(3 * 3 * one, vecTree.getValue(c3)); |
| 447 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(3 * 3 * one, vecTree.getValue(c4)); |
| 448 | } | ||
| 449 | |||
| 450 | // Multiply the vector tree by a boolean tree. | ||
| 451 | { | ||
| 452 | 2 | openvdb::BoolTree boolTree(0); | |
| 453 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | boolTree.setValue(c0, true); |
| 454 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | boolTree.setValue(c1, false); |
| 455 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | boolTree.setValue(c2, true); |
| 456 | |||
| 457 | 2 | openvdb::Vec3DTree vecTree(one); | |
| 458 | vecTree.combine2(outVecTree, boolTree, Local::vec3dBoolMultiply); | ||
| 459 | |||
| 460 | // Product of set value (1, 1, 1) and set value 1 | ||
| 461 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c0)); |
| 462 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(one, vecTree.getValue(c0)); |
| 463 | // Product of set value (4, 4, 4) and set value 0 | ||
| 464 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c1)); |
| 465 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(zero, vecTree.getValue(c1)); |
| 466 | // Product of set value (2.5, 2.5, 2.5) and set value 1 | ||
| 467 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOn(c2)); |
| 468 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(2.5 * one, vecTree.getValue(c2)); |
| 469 | // Product of bg value (3, 3, 3) and bg value 0 | ||
| 470 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOff(c3)); |
| 471 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(vecTree.isValueOff(c4)); |
| 472 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(zero, vecTree.getValue(c3)); |
| 473 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(zero, vecTree.getValue(c4)); |
| 474 | } | ||
| 475 | |||
| 476 | // Verify that a vector tree can't be combined into a scalar tree | ||
| 477 | // (although the reverse is allowed). | ||
| 478 | { | ||
| 479 | struct Local2 { | ||
| 480 | static void f(const float& a, const Vec3d&, float& result) { result = a; } | ||
| 481 | }; | ||
| 482 | 2 | openvdb::FloatTree floatTree(5.0), outTree; | |
| 483 | 2 | openvdb::Vec3DTree vecTree(one); | |
| 484 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
2 | EXPECT_THROW(outTree.combine2(floatTree, vecTree, Local2::f), openvdb::TypeError); |
| 485 | } | ||
| 486 | 1 | } | |
| 487 | |||
| 488 | |||
| 489 | //////////////////////////////////////// | ||
| 490 | |||
| 491 | |||
| 492 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestTreeCombine, testBoolTree) |
| 493 | { | ||
| 494 | openvdb::BoolGrid::Ptr sphere = openvdb::BoolGrid::create(); | ||
| 495 | |||
| 496 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<openvdb::BoolGrid>(/*dim=*/openvdb::Coord(32), |
| 497 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | /*ctr=*/openvdb::Vec3f(0), |
| 498 | /*radius=*/20.0, *sphere, | ||
| 499 | unittest_util::SPHERE_SPARSE_NARROW_BAND); | ||
| 500 | |||
| 501 | openvdb::BoolGrid::Ptr | ||
| 502 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | aGrid = sphere->copy(), |
| 503 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | bGrid = sphere->copy(); |
| 504 | |||
| 505 | // CSG operations work only on level sets with a nonzero inside and outside values. | ||
| 506 |
4/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
|
2 | EXPECT_THROW(openvdb::tools::csgUnion(aGrid->tree(), bGrid->tree()), |
| 507 | openvdb::ValueError); | ||
| 508 |
4/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
|
2 | EXPECT_THROW(openvdb::tools::csgIntersection(aGrid->tree(), bGrid->tree()), |
| 509 | openvdb::ValueError); | ||
| 510 |
4/22✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
|
2 | EXPECT_THROW(openvdb::tools::csgDifference(aGrid->tree(), bGrid->tree()), |
| 511 | openvdb::ValueError); | ||
| 512 | |||
| 513 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compSum(aGrid->tree(), bGrid->tree()); |
| 514 | |||
| 515 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | bGrid = sphere->copy(); |
| 516 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compMax(aGrid->tree(), bGrid->tree()); |
| 517 | |||
| 518 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | int mismatches = 0; |
| 519 | openvdb::BoolGrid::ConstAccessor acc = sphere->getConstAccessor(); | ||
| 520 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | for (openvdb::BoolGrid::ValueAllCIter it = aGrid->cbeginValueAll(); it; ++it) { |
| 521 | ✗ | if (*it != acc.getValue(it.getCoord())) ++mismatches; | |
| 522 | } | ||
| 523 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(0, mismatches); |
| 524 | 1 | } | |
| 525 | |||
| 526 | |||
| 527 | //////////////////////////////////////// | ||
| 528 | |||
| 529 | |||
| 530 | template<typename TreeT> | ||
| 531 | void | ||
| 532 | 4 | TestTreeCombine::testCompRepl() | |
| 533 | { | ||
| 534 | using ValueT = typename TreeT::ValueType; | ||
| 535 | |||
| 536 | const ValueT | ||
| 537 | zero = openvdb::zeroVal<ValueT>(), | ||
| 538 | 4 | minusOne = zero + (-1), | |
| 539 | 4 | one = zero + 1, | |
| 540 | 4 | three = zero + 3, | |
| 541 | 4 | four = zero + 4, | |
| 542 | 4 | five = zero + 5; | |
| 543 | |||
| 544 | { | ||
| 545 | 8 | TreeT aTree(/*bg=*/one); | |
| 546 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 0), three); |
| 547 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 1), three); |
| 548 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 2), aTree.background()); |
| 549 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 1, 2), aTree.background()); |
| 550 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOff(openvdb::Coord(1, 0, 0), three); |
| 551 | ✗ | aTree.setValueOff(openvdb::Coord(1, 0, 1), three); | |
| 552 | |||
| 553 | 8 | TreeT bTree(five); | |
| 554 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 0, 0), minusOne); |
| 555 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 1, 0), four); |
| 556 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 1, 2), minusOne); |
| 557 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOff(openvdb::Coord(1, 0, 0), minusOne); |
| 558 | ✗ | bTree.setValueOff(openvdb::Coord(1, 1, 0), four); | |
| 559 | |||
| 560 | // Copy active voxels of bTree into aTree. | ||
| 561 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | openvdb::tools::compReplace(aTree, bTree); |
| 562 | |||
| 563 | // a = 3 (On), b = -1 (On) | ||
| 564 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(minusOne, aTree.getValue(openvdb::Coord(0, 0, 0))); |
| 565 | |||
| 566 | // a = 3 (On), b = 5 (bg) | ||
| 567 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(three, aTree.getValue(openvdb::Coord(0, 0, 1))); |
| 568 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 0, 1))); |
| 569 | |||
| 570 | // a = 1 (On, = bg), b = 5 (bg) | ||
| 571 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(one, aTree.getValue(openvdb::Coord(0, 0, 2))); |
| 572 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 0, 2))); |
| 573 | |||
| 574 | // a = 1 (On, = bg), b = -1 (On) | ||
| 575 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(minusOne, aTree.getValue(openvdb::Coord(0, 1, 2))); |
| 576 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 1, 2))); |
| 577 | |||
| 578 | // a = 1 (bg), b = 4 (On) | ||
| 579 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(four, aTree.getValue(openvdb::Coord(0, 1, 0))); |
| 580 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOn(openvdb::Coord(0, 1, 0))); |
| 581 | |||
| 582 | // a = 3 (Off), b = -1 (Off) | ||
| 583 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(three, aTree.getValue(openvdb::Coord(1, 0, 0))); |
| 584 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 0, 0))); |
| 585 | |||
| 586 | // a = 3 (Off), b = 5 (bg) | ||
| 587 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(three, aTree.getValue(openvdb::Coord(1, 0, 1))); |
| 588 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 0, 1))); |
| 589 | |||
| 590 | // a = 1 (bg), b = 4 (Off) | ||
| 591 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(one, aTree.getValue(openvdb::Coord(1, 1, 0))); |
| 592 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1, 1, 0))); |
| 593 | |||
| 594 | // a = 1 (bg), b = 5 (bg) | ||
| 595 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(one, aTree.getValue(openvdb::Coord(1000, 1, 2))); |
| 596 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(aTree.isValueOff(openvdb::Coord(1000, 1, 2))); |
| 597 | } | ||
| 598 | |||
| 599 | // As above, but combining the A grid into the B grid | ||
| 600 | { | ||
| 601 | 8 | TreeT aTree(/*background=*/one); | |
| 602 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 0), three); |
| 603 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 1), three); |
| 604 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 0, 2), aTree.background()); |
| 605 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOn(openvdb::Coord(0, 1, 2), aTree.background()); |
| 606 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | aTree.setValueOff(openvdb::Coord(1, 0, 0), three); |
| 607 | ✗ | aTree.setValueOff(openvdb::Coord(1, 0, 1), three); | |
| 608 | |||
| 609 | 8 | TreeT bTree(five); | |
| 610 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 0, 0), minusOne); |
| 611 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 1, 0), four); |
| 612 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOn(openvdb::Coord(0, 1, 2), minusOne); |
| 613 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | bTree.setValueOff(openvdb::Coord(1, 0, 0), minusOne); |
| 614 | ✗ | bTree.setValueOff(openvdb::Coord(1, 1, 0), four); | |
| 615 | |||
| 616 | // Copy active voxels of aTree into bTree. | ||
| 617 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | openvdb::tools::compReplace(bTree, aTree); |
| 618 | |||
| 619 | // a = 3 (On), b = -1 (On) | ||
| 620 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(three, bTree.getValue(openvdb::Coord(0, 0, 0))); |
| 621 | |||
| 622 | // a = 3 (On), b = 5 (bg) | ||
| 623 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(three, bTree.getValue(openvdb::Coord(0, 0, 1))); |
| 624 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 0, 1))); |
| 625 | |||
| 626 | // a = 1 (On, = bg), b = 5 (bg) | ||
| 627 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(one, bTree.getValue(openvdb::Coord(0, 0, 2))); |
| 628 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 0, 2))); |
| 629 | |||
| 630 | // a = 1 (On, = bg), b = -1 (On) | ||
| 631 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(one, bTree.getValue(openvdb::Coord(0, 1, 2))); |
| 632 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 1, 2))); |
| 633 | |||
| 634 | // a = 1 (bg), b = 4 (On) | ||
| 635 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(four, bTree.getValue(openvdb::Coord(0, 1, 0))); |
| 636 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOn(openvdb::Coord(0, 1, 0))); |
| 637 | |||
| 638 | // a = 3 (Off), b = -1 (Off) | ||
| 639 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(minusOne, bTree.getValue(openvdb::Coord(1, 0, 0))); |
| 640 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 0, 0))); |
| 641 | |||
| 642 | // a = 3 (Off), b = 5 (bg) | ||
| 643 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(five, bTree.getValue(openvdb::Coord(1, 0, 1))); |
| 644 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 0, 1))); |
| 645 | |||
| 646 | // a = 1 (bg), b = 4 (Off) | ||
| 647 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(four, bTree.getValue(openvdb::Coord(1, 1, 0))); |
| 648 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1, 1, 0))); |
| 649 | |||
| 650 | // a = 1 (bg), b = 5 (bg) | ||
| 651 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
4 | EXPECT_EQ(five, bTree.getValue(openvdb::Coord(1000, 1, 2))); |
| 652 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
4 | EXPECT_TRUE(bTree.isValueOff(openvdb::Coord(1000, 1, 2))); |
| 653 | } | ||
| 654 | 4 | } | |
| 655 | |||
| 656 | |||
| 657 | //////////////////////////////////////// | ||
| 658 | |||
| 659 | |||
| 660 | #ifdef DWA_OPENVDB | ||
| 661 | TEST_F(TestTreeCombine, testCsg) | ||
| 662 | { | ||
| 663 | using TreeT = openvdb::FloatTree; | ||
| 664 | using TreePtr = TreeT::Ptr; | ||
| 665 | using GridT = openvdb::Grid<TreeT>; | ||
| 666 | |||
| 667 | struct Local { | ||
| 668 | static TreePtr readFile(const std::string& fname) { | ||
| 669 | std::string filename(fname), gridName("LevelSet"); | ||
| 670 | size_t space = filename.find_last_of(' '); | ||
| 671 | if (space != std::string::npos) { | ||
| 672 | gridName = filename.substr(space + 1); | ||
| 673 | filename.erase(space); | ||
| 674 | } | ||
| 675 | |||
| 676 | TreePtr tree; | ||
| 677 | openvdb::io::File file(filename); | ||
| 678 | file.open(); | ||
| 679 | if (openvdb::GridBase::Ptr basePtr = file.readGrid(gridName)) { | ||
| 680 | if (GridT::Ptr gridPtr = openvdb::gridPtrCast<GridT>(basePtr)) { | ||
| 681 | tree = gridPtr->treePtr(); | ||
| 682 | } | ||
| 683 | } | ||
| 684 | file.close(); | ||
| 685 | return tree; | ||
| 686 | } | ||
| 687 | |||
| 688 | //static void writeFile(TreePtr tree, const std::string& filename) { | ||
| 689 | // openvdb::io::File file(filename); | ||
| 690 | // openvdb::GridPtrVec grids; | ||
| 691 | // GridT::Ptr grid = openvdb::createGrid(tree); | ||
| 692 | // grid->setName("LevelSet"); | ||
| 693 | // grids.push_back(grid); | ||
| 694 | // file.write(grids); | ||
| 695 | //} | ||
| 696 | |||
| 697 | static void visitorUnion(TreeT& a, TreeT& b) { openvdb::tools::csgUnion(a, b); } | ||
| 698 | static void visitorIntersect(TreeT& a, TreeT& b) { openvdb::tools::csgIntersection(a, b); } | ||
| 699 | static void visitorDiff(TreeT& a, TreeT& b) { openvdb::tools::csgDifference(a, b); } | ||
| 700 | }; | ||
| 701 | |||
| 702 | TreePtr smallTree1, smallTree2, largeTree1, largeTree2, refTree, outTree; | ||
| 703 | |||
| 704 | #if TEST_CSG_VERBOSE | ||
| 705 | openvdb::util::CpuTimer timer; | ||
| 706 | timer.start(); | ||
| 707 | #endif | ||
| 708 | |||
| 709 | const std::string testDir("/work/rd/fx_tools/vdb_unittest/TestGridCombine::testCsg/"); | ||
| 710 | smallTree1 = Local::readFile(testDir + "small1.vdb2 LevelSet"); | ||
| 711 | EXPECT_TRUE(smallTree1.get() != nullptr); | ||
| 712 | smallTree2 = Local::readFile(testDir + "small2.vdb2 Cylinder"); | ||
| 713 | EXPECT_TRUE(smallTree2.get() != nullptr); | ||
| 714 | largeTree1 = Local::readFile(testDir + "large1.vdb2 LevelSet"); | ||
| 715 | EXPECT_TRUE(largeTree1.get() != nullptr); | ||
| 716 | largeTree2 = Local::readFile(testDir + "large2.vdb2 LevelSet"); | ||
| 717 | EXPECT_TRUE(largeTree2.get() != nullptr); | ||
| 718 | |||
| 719 | #if TEST_CSG_VERBOSE | ||
| 720 | std::cerr << "file read: " << timer.milliseconds() << " msec\n"; | ||
| 721 | #endif | ||
| 722 | |||
| 723 | #if TEST_CSG_VERBOSE | ||
| 724 | std::cerr << "\n<union>\n"; | ||
| 725 | #endif | ||
| 726 | refTree = Local::readFile(testDir + "small_union.vdb2"); | ||
| 727 | outTree = visitCsg(*smallTree1, *smallTree2, *refTree, Local::visitorUnion); | ||
| 728 | //Local::writeFile(outTree, "small_union_out.vdb2"); | ||
| 729 | refTree = Local::readFile(testDir + "large_union.vdb2"); | ||
| 730 | outTree = visitCsg(*largeTree1, *largeTree2, *refTree, Local::visitorUnion); | ||
| 731 | //Local::writeFile(outTree, "large_union_out.vdb2"); | ||
| 732 | |||
| 733 | #if TEST_CSG_VERBOSE | ||
| 734 | std::cerr << "\n<intersection>\n"; | ||
| 735 | #endif | ||
| 736 | refTree = Local::readFile(testDir + "small_intersection.vdb2"); | ||
| 737 | outTree = visitCsg(*smallTree1, *smallTree2, *refTree, Local::visitorIntersect); | ||
| 738 | //Local::writeFile(outTree, "small_intersection_out.vdb2"); | ||
| 739 | refTree = Local::readFile(testDir + "large_intersection.vdb2"); | ||
| 740 | outTree = visitCsg(*largeTree1, *largeTree2, *refTree, Local::visitorIntersect); | ||
| 741 | //Local::writeFile(outTree, "large_intersection_out.vdb2"); | ||
| 742 | |||
| 743 | #if TEST_CSG_VERBOSE | ||
| 744 | std::cerr << "\n<difference>\n"; | ||
| 745 | #endif | ||
| 746 | refTree = Local::readFile(testDir + "small_difference.vdb2"); | ||
| 747 | outTree = visitCsg(*smallTree1, *smallTree2, *refTree, Local::visitorDiff); | ||
| 748 | //Local::writeFile(outTree, "small_difference_out.vdb2"); | ||
| 749 | refTree = Local::readFile(testDir + "large_difference.vdb2"); | ||
| 750 | outTree = visitCsg(*largeTree1, *largeTree2, *refTree, Local::visitorDiff); | ||
| 751 | //Local::writeFile(outTree, "large_difference_out.vdb2"); | ||
| 752 | } | ||
| 753 | #endif | ||
| 754 | |||
| 755 | |||
| 756 | template<typename TreeT, typename VisitorT> | ||
| 757 | typename TreeT::Ptr | ||
| 758 | TestTreeCombine::visitCsg(const TreeT& aInputTree, const TreeT& bInputTree, | ||
| 759 | const TreeT& refTree, const VisitorT& visitor) | ||
| 760 | { | ||
| 761 | using TreePtr = typename TreeT::Ptr; | ||
| 762 | |||
| 763 | #if TEST_CSG_VERBOSE | ||
| 764 | openvdb::util::CpuTimer timer; | ||
| 765 | timer.start(); | ||
| 766 | #endif | ||
| 767 | TreePtr aTree(new TreeT(aInputTree)); | ||
| 768 | TreeT bTree(bInputTree); | ||
| 769 | #if TEST_CSG_VERBOSE | ||
| 770 | std::cerr << "deep copy: " << timer.milliseconds() << " msec\n"; | ||
| 771 | #endif | ||
| 772 | |||
| 773 | #if (TEST_CSG_VERBOSE > 1) | ||
| 774 | std::cerr << "\nA grid:\n"; | ||
| 775 | aTree->print(std::cerr, /*verbose=*/3); | ||
| 776 | std::cerr << "\nB grid:\n"; | ||
| 777 | bTree.print(std::cerr, /*verbose=*/3); | ||
| 778 | std::cerr << "\nExpected:\n"; | ||
| 779 | refTree.print(std::cerr, /*verbose=*/3); | ||
| 780 | std::cerr << "\n"; | ||
| 781 | #endif | ||
| 782 | |||
| 783 | // Compute the CSG combination of the two grids. | ||
| 784 | #if TEST_CSG_VERBOSE | ||
| 785 | timer.start(); | ||
| 786 | #endif | ||
| 787 | visitor(*aTree, bTree); | ||
| 788 | #if TEST_CSG_VERBOSE | ||
| 789 | std::cerr << "combine: " << timer.milliseconds() << " msec\n"; | ||
| 790 | #endif | ||
| 791 | #if (TEST_CSG_VERBOSE > 1) | ||
| 792 | std::cerr << "\nActual:\n"; | ||
| 793 | aTree->print(std::cerr, /*verbose=*/3); | ||
| 794 | #endif | ||
| 795 | |||
| 796 | std::ostringstream aInfo, refInfo; | ||
| 797 | aTree->print(aInfo, /*verbose=*/2); | ||
| 798 | refTree.print(refInfo, /*verbose=*/2); | ||
| 799 | |||
| 800 | EXPECT_EQ(refInfo.str(), aInfo.str()); | ||
| 801 | |||
| 802 | EXPECT_TRUE(aTree->hasSameTopology(refTree)); | ||
| 803 | |||
| 804 | return aTree; | ||
| 805 | } | ||
| 806 | |||
| 807 | |||
| 808 | //////////////////////////////////////// | ||
| 809 | |||
| 810 | |||
| 811 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestTreeCombine, testCsgCopy) |
| 812 | { | ||
| 813 | const float voxelSize = 0.2f; | ||
| 814 | const float radius = 3.0f; | ||
| 815 | openvdb::Vec3f center(0.0f, 0.0f, 0.0f); | ||
| 816 | |||
| 817 | openvdb::FloatGrid::Ptr gridA = | ||
| 818 | 1 | openvdb::tools::createLevelSetSphere<openvdb::FloatGrid>(radius, center, voxelSize); | |
| 819 | |||
| 820 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | openvdb::Coord ijkA = gridA->transform().worldToIndexNodeCentered(center); |
| 821 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(gridA->tree().getValue(ijkA) < 0.0f); // center is inside |
| 822 | |||
| 823 | 1 | center.x() += 3.5f; | |
| 824 | |||
| 825 | openvdb::FloatGrid::Ptr gridB = | ||
| 826 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::createLevelSetSphere<openvdb::FloatGrid>(radius, center, voxelSize); |
| 827 | |||
| 828 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | openvdb::Coord ijkB = gridA->transform().worldToIndexNodeCentered(center); |
| 829 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(gridB->tree().getValue(ijkB) < 0.0f); // center is inside |
| 830 | |||
| 831 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::FloatGrid::Ptr unionGrid = openvdb::tools::csgUnionCopy(*gridA, *gridB); |
| 832 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::FloatGrid::Ptr intersectionGrid = openvdb::tools::csgIntersectionCopy(*gridA, *gridB); |
| 833 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::FloatGrid::Ptr differenceGrid = openvdb::tools::csgDifferenceCopy(*gridA, *gridB); |
| 834 | |||
| 835 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(unionGrid.get() != nullptr); |
| 836 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(intersectionGrid.get() != nullptr); |
| 837 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(differenceGrid.get() != nullptr); |
| 838 | |||
| 839 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!unionGrid->empty()); |
| 840 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!intersectionGrid->empty()); |
| 841 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!differenceGrid->empty()); |
| 842 | |||
| 843 | // test inside / outside sign | ||
| 844 | |||
| 845 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(unionGrid->tree().getValue(ijkA) < 0.0f); |
| 846 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(unionGrid->tree().getValue(ijkB) < 0.0f); |
| 847 | |||
| 848 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!(intersectionGrid->tree().getValue(ijkA) < 0.0f)); |
| 849 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!(intersectionGrid->tree().getValue(ijkB) < 0.0f)); |
| 850 | |||
| 851 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(differenceGrid->tree().getValue(ijkA) < 0.0f); |
| 852 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!(differenceGrid->tree().getValue(ijkB) < 0.0f)); |
| 853 | 1 | } | |
| 854 | |||
| 855 | |||
| 856 | //////////////////////////////////////// | ||
| 857 | |||
| 858 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestTreeCombine, testCompActiveLeafVoxels) |
| 859 | { | ||
| 860 | {//replace float tree (default argument) | ||
| 861 | 2 | openvdb::FloatTree srcTree(0.0f), dstTree(0.0f); | |
| 862 | |||
| 863 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dstTree.setValue(openvdb::Coord(1,1,1), 1.0f); |
| 864 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValue(openvdb::Coord(1,1,1), 2.0f); |
| 865 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | srcTree.setValue(openvdb::Coord(8,8,8), 3.0f); |
| 866 | |||
| 867 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1, int(dstTree.leafCount())); |
| 868 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(srcTree.leafCount())); |
| 869 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 870 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 871 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 872 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 873 | |||
| 874 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compActiveLeafVoxels(srcTree, dstTree); |
| 875 | |||
| 876 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(dstTree.leafCount())); |
| 877 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0, int(srcTree.leafCount())); |
| 878 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 879 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 880 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(3.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 881 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 882 | } | ||
| 883 | {//replace float tree (lambda expression) | ||
| 884 | 2 | openvdb::FloatTree srcTree(0.0f), dstTree(0.0f); | |
| 885 | |||
| 886 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dstTree.setValue(openvdb::Coord(1,1,1), 1.0f); |
| 887 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValue(openvdb::Coord(1,1,1), 2.0f); |
| 888 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | srcTree.setValue(openvdb::Coord(8,8,8), 3.0f); |
| 889 | |||
| 890 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1, int(dstTree.leafCount())); |
| 891 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(srcTree.leafCount())); |
| 892 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 893 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 894 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 895 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 896 | |||
| 897 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | openvdb::tools::compActiveLeafVoxels(srcTree, dstTree, [](float &d, float s){d=s;}); |
| 898 | |||
| 899 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(dstTree.leafCount())); |
| 900 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0, int(srcTree.leafCount())); |
| 901 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 902 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 903 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(3.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 904 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 905 | } | ||
| 906 | {//add float tree | ||
| 907 | 2 | openvdb::FloatTree srcTree(0.0f), dstTree(0.0f); | |
| 908 | |||
| 909 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dstTree.setValue(openvdb::Coord(1,1,1), 1.0f); |
| 910 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValue(openvdb::Coord(1,1,1), 2.0f); |
| 911 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | srcTree.setValue(openvdb::Coord(8,8,8), 3.0f); |
| 912 | |||
| 913 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1, int(dstTree.leafCount())); |
| 914 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(srcTree.leafCount())); |
| 915 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 916 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 917 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 918 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 919 | |||
| 920 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | openvdb::tools::compActiveLeafVoxels(srcTree, dstTree, [](float &d, float s){d+=s;}); |
| 921 | |||
| 922 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(dstTree.leafCount())); |
| 923 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0, int(srcTree.leafCount())); |
| 924 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(3.0f, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 925 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 926 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(3.0f, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 927 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 928 | } | ||
| 929 | { | ||
| 930 | using BufferT = openvdb::FloatTree::LeafNodeType::Buffer; | ||
| 931 | EXPECT_TRUE((std::is_same<BufferT::ValueType, BufferT::StorageType>::value)); | ||
| 932 | } | ||
| 933 | { | ||
| 934 | using BufferT = openvdb::Vec3fTree::LeafNodeType::Buffer; | ||
| 935 | EXPECT_TRUE((std::is_same<BufferT::ValueType, BufferT::StorageType>::value)); | ||
| 936 | } | ||
| 937 | { | ||
| 938 | using BufferT = openvdb::BoolTree::LeafNodeType::Buffer; | ||
| 939 | EXPECT_TRUE(!(std::is_same<BufferT::ValueType, BufferT::StorageType>::value)); | ||
| 940 | } | ||
| 941 | { | ||
| 942 | using BufferT = openvdb::MaskTree::LeafNodeType::Buffer; | ||
| 943 | EXPECT_TRUE(!(std::is_same<BufferT::ValueType, BufferT::StorageType>::value)); | ||
| 944 | } | ||
| 945 | {//replace bool tree | ||
| 946 | 2 | openvdb::BoolTree srcTree(false), dstTree(false); | |
| 947 | |||
| 948 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dstTree.setValue(openvdb::Coord(1,1,1), true); |
| 949 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValue(openvdb::Coord(1,1,1), false); |
| 950 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValue(openvdb::Coord(8,8,8), true); |
| 951 | //(9,8,8) is inactive but true so it should have no effect | ||
| 952 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | srcTree.setValueOnly(openvdb::Coord(9,8,8), true); |
| 953 | |||
| 954 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1, int(dstTree.leafCount())); |
| 955 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(srcTree.leafCount())); |
| 956 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 957 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 958 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(false, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 959 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 960 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, srcTree.getValue(openvdb::Coord(9, 8, 8))); |
| 961 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!srcTree.isValueOn(openvdb::Coord(9, 8, 8))); |
| 962 | |||
| 963 | using Word = openvdb::BoolTree::LeafNodeType::Buffer::WordType; | ||
| 964 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compActiveLeafVoxels(srcTree, dstTree, [](Word &d, Word s){d=s;}); |
| 965 | |||
| 966 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(dstTree.leafCount())); |
| 967 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0, int(srcTree.leafCount())); |
| 968 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(false, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 969 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 970 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 971 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 972 | } | ||
| 973 | {// mask tree | ||
| 974 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | openvdb::MaskTree srcTree(false), dstTree(false); |
| 975 | |||
| 976 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dstTree.setValueOn(openvdb::Coord(1,1,1)); |
| 977 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValueOn(openvdb::Coord(1,1,1)); |
| 978 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | srcTree.setValueOn(openvdb::Coord(8,8,8)); |
| 979 | |||
| 980 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(1, int(dstTree.leafCount())); |
| 981 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(srcTree.leafCount())); |
| 982 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 983 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 984 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(false, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 985 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 986 | |||
| 987 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | openvdb::tools::compActiveLeafVoxels(srcTree, dstTree); |
| 988 | |||
| 989 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(2, int(dstTree.leafCount())); |
| 990 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(0, int(srcTree.leafCount())); |
| 991 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, dstTree.getValue(openvdb::Coord(1, 1, 1))); |
| 992 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(1, 1, 1))); |
| 993 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(true, dstTree.getValue(openvdb::Coord(8, 8, 8))); |
| 994 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(dstTree.isValueOn(openvdb::Coord(8, 8, 8))); |
| 995 | } | ||
| 996 | 1 | } | |
| 997 | |||
| 998 | |||
| 999 | //////////////////////////////////////// | ||
| 1000 | |||
| 1001 |