Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright Contributors to the OpenVDB Project | ||
2 | // SPDX-License-Identifier: MPL-2.0 | ||
3 | |||
4 | #include "TestHarness.h" | ||
5 | |||
6 | #include <openvdb_ax/ax.h> | ||
7 | |||
8 | #include <openvdb/points/PointDataGrid.h> | ||
9 | #include <openvdb/points/PointGroup.h> | ||
10 | #include <openvdb/points/PointConversion.h> | ||
11 | #include <openvdb/points/AttributeArray.h> | ||
12 | |||
13 | #include <openvdb/math/Transform.h> | ||
14 | #include <openvdb/openvdb.h> | ||
15 | |||
16 | #include <cppunit/extensions/HelperMacros.h> | ||
17 | |||
18 | #include <limits> | ||
19 | |||
20 | using namespace openvdb::points; | ||
21 | |||
22 |
2/4✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
|
3 | class TestWorldSpaceAccessors: public unittest_util::AXTestCase |
23 | { | ||
24 | public: | ||
25 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
4 | CPPUNIT_TEST_SUITE(TestWorldSpaceAccessors); |
26 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
6 | CPPUNIT_TEST(testWorldSpaceAssign); |
27 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
6 | CPPUNIT_TEST(testWorldSpaceAssignComponent); |
28 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
6 | CPPUNIT_TEST(testWorldSpaceAssignBound); |
29 | |||
30 |
4/8✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
|
4 | CPPUNIT_TEST_SUITE_END(); |
31 | |||
32 | void testWorldSpaceAssign(); | ||
33 | void testWorldSpaceAssignComponent(); | ||
34 | void testWorldSpaceAssignBound(); | ||
35 | }; | ||
36 | |||
37 | CPPUNIT_TEST_SUITE_REGISTRATION(TestWorldSpaceAccessors); | ||
38 | |||
39 | void | ||
40 | 1 | TestWorldSpaceAccessors::testWorldSpaceAssign() | |
41 | { | ||
42 | std::vector<openvdb::Vec3d> positions = | ||
43 | {openvdb::Vec3d(0.0, 0.0, 0.0), | ||
44 | openvdb::Vec3d(0.0, 0.0, 0.05), | ||
45 | openvdb::Vec3d(0.0, 1.0, 0.0), | ||
46 | 1 | openvdb::Vec3d(1.0, 1.0, 0.0)}; | |
47 | |||
48 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
1 | CPPUNIT_ASSERT(mHarness.mInputPointGrids.size() > 0); |
49 | PointDataGrid::Ptr grid = mHarness.mInputPointGrids.back(); | ||
50 | |||
51 | openvdb::points::PointDataTree* tree = &(grid->tree()); | ||
52 | |||
53 | // @note snippet moves all points to a single leaf node | ||
54 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
1 | CPPUNIT_ASSERT_EQUAL(openvdb::points::pointCount(*tree), openvdb::Index64(4)); |
55 | |||
56 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | const std::string code = unittest_util::loadText("test/snippets/worldspace/worldSpaceAssign"); |
57 |
5/36✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
|
4 | CPPUNIT_ASSERT_NO_THROW(openvdb::ax::run(code.c_str(), *grid)); |
58 | |||
59 | // Tree is modified if points are moved | ||
60 | tree = &(grid->tree()); | ||
61 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
|
1 | CPPUNIT_ASSERT_EQUAL(openvdb::points::pointCount(*tree), openvdb::Index64(4)); |
62 | |||
63 | // test that P_original has the world-space value of the P attribute prior to running this snippet. | ||
64 | // test that P_new has the expected world-space P value | ||
65 | |||
66 | PointDataTree::LeafCIter leaf = tree->cbeginLeaf(); | ||
67 | const openvdb::math::Transform& transform = grid->transform(); | ||
68 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2 | for (; leaf; ++leaf) |
69 | { | ||
70 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
|
2 | CPPUNIT_ASSERT(leaf->pointCount() == 4); |
71 | |||
72 |
4/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pOriginalHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P_original")); |
73 |
4/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pNewHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P_new")); |
74 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P")); |
75 | |||
76 |
2/2✓ Branch 1 taken 512 times.
✓ Branch 2 taken 1 times.
|
514 | for (auto voxel = leaf->cbeginValueAll(); voxel; ++voxel) { |
77 |
1/2✓ Branch 1 taken 512 times.
✗ Branch 2 not taken.
|
512 | const openvdb::Coord& coord = voxel.getCoord(); |
78 | auto iter = leaf->beginIndexVoxel(coord); | ||
79 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 512 times.
|
516 | for (; iter; ++iter) { |
80 | |||
81 | const openvdb::Index idx = *iter; | ||
82 | |||
83 | // test that the value for P_original | ||
84 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& oldPosition = positions[idx]; |
85 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pOriginal = pOriginalHandle->get(idx); |
86 | |||
87 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.x(), pOriginal.x()); |
88 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.y(), pOriginal.y()); |
89 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.z(), pOriginal.z()); |
90 | |||
91 | // test that the value for P_new, which should be the world space value of the points | ||
92 | const openvdb::Vec3f newPosition = openvdb::Vec3f(2.22f, 3.33f, 4.44f); | ||
93 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pNew = pNewHandle->get(idx); |
94 | |||
95 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.x(), pNew.x()); |
96 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.y(), pNew.y()); |
97 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.z(), pNew.z()); |
98 | |||
99 | // test that the value for P, which should be the updated voxel space value of the points | ||
100 | const openvdb::Vec3f voxelSpacePosition = openvdb::Vec3f(0.2f, 0.3f, 0.4f); | ||
101 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pVoxelSpace = pHandle->get(idx); |
102 | // @todo: look at improving precision | ||
103 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.x(), pVoxelSpace.x(), 1e-5); |
104 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.y(), pVoxelSpace.y(), 1e-5); |
105 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.z(), pVoxelSpace.z(), 1e-5); |
106 | |||
107 | // test that the value for P, which should be the updated world space value of the points | ||
108 | const openvdb::Vec3f positionWS = openvdb::Vec3f(2.22f, 3.33f, 4.44f); | ||
109 |
1/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
4 | const openvdb::Vec3f pWS = transform.indexToWorld(coord.asVec3d() + pHandle->get(idx)); |
110 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.x(), pWS.x(), std::numeric_limits<float>::epsilon()); |
111 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.y(), pWS.y(), std::numeric_limits<float>::epsilon()); |
112 |
6/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 3 times.
✓ Branch 16 taken 1 times.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.z(), pWS.z(), std::numeric_limits<float>::epsilon()); |
113 | } | ||
114 | } | ||
115 | } | ||
116 | 1 | } | |
117 | |||
118 | |||
119 | void | ||
120 | 1 | TestWorldSpaceAccessors::testWorldSpaceAssignComponent() | |
121 | { | ||
122 | std::vector<openvdb::Vec3d> positions = | ||
123 | {openvdb::Vec3d(0.0, 0.0, 0.0), | ||
124 | openvdb::Vec3d(0.0, 0.0, 0.05), | ||
125 | openvdb::Vec3d(0.0, 1.0, 0.0), | ||
126 | 1 | openvdb::Vec3d(1.0, 1.0, 0.0)}; | |
127 | |||
128 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
1 | CPPUNIT_ASSERT(mHarness.mInputPointGrids.size() > 0); |
129 | PointDataGrid::Ptr grid = mHarness.mInputPointGrids.back(); | ||
130 | |||
131 | openvdb::points::PointDataTree& tree = grid->tree(); | ||
132 | |||
133 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | const openvdb::Index64 originalCount = pointCount(tree); |
134 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
1 | CPPUNIT_ASSERT(originalCount > 0); |
135 | |||
136 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | const std::string code = unittest_util::loadText("test/snippets/worldspace/worldSpaceAssignComponent"); |
137 |
5/36✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
|
4 | CPPUNIT_ASSERT_NO_THROW(openvdb::ax::run(code.c_str(), *grid)); |
138 | |||
139 | // test that P_original has the world-space value of the P attribute prior to running this snippet. | ||
140 | // test that P_new has the expected world-space P value | ||
141 | |||
142 | PointDataTree::LeafCIter leaf = grid->tree().cbeginLeaf(); | ||
143 | const openvdb::math::Transform& transform = grid->transform(); | ||
144 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (; leaf; ++leaf) |
145 | { | ||
146 |
4/8✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
|
4 | AttributeHandle<float>::Ptr pXOriginalHandle = AttributeHandle<float>::create(leaf->attributeArray("Px_original")); |
147 |
4/8✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
|
4 | AttributeHandle<float>::Ptr pNewHandle = AttributeHandle<float>::create(leaf->attributeArray("Px_new")); |
148 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
|
4 | AttributeHandle<openvdb::Vec3f>::Ptr pHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P")); |
149 | |||
150 |
2/2✓ Branch 1 taken 1024 times.
✓ Branch 2 taken 2 times.
|
1028 | for (auto voxel = leaf->cbeginValueAll(); voxel; ++voxel) { |
151 |
1/2✓ Branch 1 taken 1024 times.
✗ Branch 2 not taken.
|
1024 | const openvdb::Coord& coord = voxel.getCoord(); |
152 | auto iter = leaf->beginIndexVoxel(coord); | ||
153 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1024 times.
|
1028 | for (; iter; ++iter) { |
154 | const openvdb::Index idx = *iter; | ||
155 | |||
156 | //@todo: requiring the point order, we should check the values of the px_original | ||
157 | // test that the value for P_original | ||
158 | // const float oldPosition = positions[idx].x(); | ||
159 | // const float pXOriginal = pXOriginalHandle->get(idx); | ||
160 | |||
161 | // CPPUNIT_ASSERT_EQUAL(oldPosition, pOriginal.x()); | ||
162 | |||
163 | // test that the value for P_new, which should be the world space value of the points | ||
164 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const float newX = 5.22f; |
165 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const float pNewX = pNewHandle->get(idx); |
166 | |||
167 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newX, pNewX); |
168 | |||
169 | // test that the value for P, which should be the updated voxel space value of the points | ||
170 | const float voxelSpacePosition = 0.2f; | ||
171 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pVoxelSpace = pHandle->get(idx); |
172 | // @todo: look at improving precision | ||
173 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition, pVoxelSpace.x(), 1e-5); |
174 | //@todo: requiring point order, check the y and z components are unchanged | ||
175 | // CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.y(), pVoxelSpace.y(), 1e-6); | ||
176 | // CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.z(), pVoxelSpace.z(), 1e-6); | ||
177 | |||
178 | // test that the value for P, which should be the updated world space value of the points | ||
179 | const float positionWSX = 5.22f; | ||
180 |
1/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
4 | const openvdb::Vec3f pWS = transform.indexToWorld(coord.asVec3d() + pHandle->get(idx)); |
181 |
6/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 3 times.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWSX, pWS.x(), std::numeric_limits<float>::epsilon()); |
182 | //@todo: requiring point order, check the y and z components are unchanged | ||
183 | // CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.y(), pWS.y(), std::numeric_limits<float>::epsilon()); | ||
184 | // CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.z(), pWS.z(), std::numeric_limits<float>::epsilon()); | ||
185 | } | ||
186 | } | ||
187 | } | ||
188 | 1 | } | |
189 | |||
190 | void | ||
191 | 1 | TestWorldSpaceAccessors::testWorldSpaceAssignBound() | |
192 | { | ||
193 | std::vector<openvdb::Vec3d> positions = | ||
194 | {openvdb::Vec3d(0.0, 0.0, 0.0), | ||
195 | openvdb::Vec3d(0.0, 0.0, 0.05), | ||
196 | openvdb::Vec3d(0.0, 1.0, 0.0), | ||
197 | 1 | openvdb::Vec3d(1.0, 1.0, 0.0)}; | |
198 | |||
199 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
1 | CPPUNIT_ASSERT(mHarness.mInputPointGrids.size() > 0); |
200 | PointDataGrid::Ptr grid = mHarness.mInputPointGrids.back(); | ||
201 | |||
202 | openvdb::points::PointDataTree* tree = &(grid->tree()); | ||
203 | |||
204 | // @note snippet moves all points to a single leaf node | ||
205 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
1 | CPPUNIT_ASSERT_EQUAL(openvdb::points::pointCount(*tree), openvdb::Index64(4)); |
206 | |||
207 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | const std::string code = unittest_util::loadText("test/snippets/worldspace/worldSpaceAssignBound"); |
208 |
9/44✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✓ Branch 24 taken 1 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
|
5 | CPPUNIT_ASSERT_NO_THROW(openvdb::ax::run(code.c_str(), *grid, {{"pos","P"}})); |
209 | |||
210 | // Tree is modified if points are moved | ||
211 | tree = &(grid->tree()); | ||
212 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
|
1 | CPPUNIT_ASSERT_EQUAL(openvdb::points::pointCount(*tree), openvdb::Index64(4)); |
213 | |||
214 | // test that P_original has the world-space value of the P attribute prior to running this snippet. | ||
215 | // test that P_new has the expected world-space P value | ||
216 | |||
217 | PointDataTree::LeafCIter leaf = tree->cbeginLeaf(); | ||
218 | const openvdb::math::Transform& transform = grid->transform(); | ||
219 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2 | for (; leaf; ++leaf) |
220 | { | ||
221 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
|
2 | CPPUNIT_ASSERT(leaf->pointCount() == 4); |
222 | |||
223 |
4/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pOriginalHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P_original")); |
224 |
4/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pNewHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P_new")); |
225 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | AttributeHandle<openvdb::Vec3f>::Ptr pHandle = AttributeHandle<openvdb::Vec3f>::create(leaf->attributeArray("P")); |
226 | |||
227 |
2/2✓ Branch 1 taken 512 times.
✓ Branch 2 taken 1 times.
|
514 | for (auto voxel = leaf->cbeginValueAll(); voxel; ++voxel) { |
228 |
1/2✓ Branch 1 taken 512 times.
✗ Branch 2 not taken.
|
512 | const openvdb::Coord& coord = voxel.getCoord(); |
229 | auto iter = leaf->beginIndexVoxel(coord); | ||
230 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 512 times.
|
516 | for (; iter; ++iter) { |
231 | |||
232 | const openvdb::Index idx = *iter; | ||
233 | |||
234 | // test that the value for P_original | ||
235 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& oldPosition = positions[idx]; |
236 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pOriginal = pOriginalHandle->get(idx); |
237 | |||
238 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.x(), pOriginal.x()); |
239 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.y(), pOriginal.y()); |
240 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(oldPosition.z(), pOriginal.z()); |
241 | |||
242 | // test that the value for P_new, which should be the world space value of the points | ||
243 | const openvdb::Vec3f newPosition = openvdb::Vec3f(2.22f, 3.33f, 4.44f); | ||
244 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pNew = pNewHandle->get(idx); |
245 | |||
246 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.x(), pNew.x()); |
247 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.y(), pNew.y()); |
248 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_EQUAL(newPosition.z(), pNew.z()); |
249 | |||
250 | // test that the value for P, which should be the updated voxel space value of the points | ||
251 | const openvdb::Vec3f voxelSpacePosition = openvdb::Vec3f(0.2f, 0.3f, 0.4f); | ||
252 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | const openvdb::Vec3f& pVoxelSpace = pHandle->get(idx); |
253 | // @todo: look at improving precision | ||
254 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.x(), pVoxelSpace.x(), 1e-5); |
255 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.y(), pVoxelSpace.y(), 1e-5); |
256 |
5/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(voxelSpacePosition.z(), pVoxelSpace.z(), 1e-5); |
257 | |||
258 | // test that the value for P, which should be the updated world space value of the points | ||
259 | const openvdb::Vec3f positionWS = openvdb::Vec3f(2.22f, 3.33f, 4.44f); | ||
260 |
1/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
4 | const openvdb::Vec3f pWS = transform.indexToWorld(coord.asVec3d() + pHandle->get(idx)); |
261 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.x(), pWS.x(), std::numeric_limits<float>::epsilon()); |
262 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.y(), pWS.y(), std::numeric_limits<float>::epsilon()); |
263 |
6/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 3 times.
✓ Branch 16 taken 1 times.
|
4 | CPPUNIT_ASSERT_DOUBLES_EQUAL(positionWS.z(), pWS.z(), std::numeric_limits<float>::epsilon()); |
264 | } | ||
265 | } | ||
266 | } | ||
267 | 1 | } | |
268 | |||
269 | |||
270 | |||
271 |