31 SoUnits* u2 =
new SoUnits();
32 u2->units = SoUnits::MILLIMETERS;
35 const Eigen::Matrix4f initialPose = Eigen::Matrix4f::Identity();
37 origin =
new SoMatrixTransform;
38 SbMatrix mat(
reinterpret_cast<const SbMat*
>(initialPose.data()));
39 origin->matrix.setValue(mat);
42 SoSeparator* pGrid =
new SoSeparator;
44 SoUnits* u =
new SoUnits();
45 u->units = SoUnits::MILLIMETERS;
56 SoFaceSet* pSoFaceSet =
new SoFaceSet;
57 pSoFaceSet->numVertices.set1Value(0, 4);
59 SoTextureCoordinateBinding* pSoTextureCoordinateBinding =
new SoTextureCoordinateBinding;
60 pSoTextureCoordinateBinding->value.setValue(SoTextureCoordinateBinding::PER_VERTEX);
65 pGrid->addChild(pSoTextureCoordinateBinding);
68 pGrid->addChild(pSoFaceSet);
71 node->addChild(pGrid);
79 Eigen::Isometry3f pose = Eigen::Isometry3f::Identity();
80 pose.translation() = Eigen::Vector3f(element.pose.x, element.pose.y, element.pose.z);
82 element.pose.qw, element.pose.qx, element.pose.qy, element.pose.qz};
83 pose.linear() =
q.toRotationMatrix();
90 SbMatrix mat(
reinterpret_cast<const SbMat*
>(pose.data()));
91 origin->matrix.setValue(mat);
97 const float X = element.sizeY * element.resolution;
98 const float Y = element.sizeX * element.resolution;
109 using Color = std::array<unsigned char, 4>;
111 std::vector<Color> pixels(element.sizeX * element.sizeY);
113 for (std::size_t
x = 0; x < static_cast<std::size_t>(element.sizeX);
x++)
115 for (std::size_t y = 0; y < static_cast<std::size_t>(element.sizeY); y++)
117 const std::size_t idx = (
x * element.sizeY) + y;
119 const auto& color = element.colors.at(idx);
120 pixels.at(idx) =
Color{color.r, color.g, color.b, color.a};
125 pSoTexture2->image.setValue(SbVec2s{
static_cast<std::int16_t
>(element.sizeX),
126 static_cast<std::int16_t
>(element.sizeY)},
128 reinterpret_cast<const unsigned char*
>(pixels.data()));