本文整理汇总了C++中Renderable::pointcloud方法的典型用法代码示例。如果您正苦于以下问题:C++ Renderable::pointcloud方法的具体用法?C++ Renderable::pointcloud怎么用?C++ Renderable::pointcloud使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Renderable
的用法示例。
在下文中一共展示了Renderable::pointcloud方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getProtoScale
float PointCloudRenderer::getProtoScale(Renderable & renderable)
{
float factor = 1.0;
if(renderable.pointcloud().has_units())
{
factor = 1000.0/renderable.pointcloud().units();
}
return factor;
}
示例2: fillPointList
int PointCloudRenderer::fillPointList(Renderable & renderable,
std::vector<SbVec3f> &points,
std::vector<SbColor> &colors)
{
//Unpack the pointcloud just for future code berevity
const PointCloudXYZRGB & pc(renderable.pointcloud());
int pointNum = pc.points_size();
points.reserve(pointNum);
colors.reserve(pointNum);
for(int i = 0; i < pointNum; ++i)
{
//Unpack the data from the nested data structures
const PointXYZRGB & pc_colored_point(pc.points(i));
const PointXYZ & pc_point(pc_colored_point.point());
const ColorRGB & pc_color(pc_colored_point.color());
if (std::isnan(pc_point.x()))
continue;
//Put the data in the data structures
points.push_back(SbVec3f(pc_point.x(), pc_point.y(), pc_point.z()));
colors.push_back(SbColor(pc_color.red(), pc_color.green(), pc_color.blue()));
}
return pointNum;
}
示例3: setScale
void PointCloudRenderer::setScale(SoSeparator *ivRoot, Renderable &renderable)
{
float factor = 1.0;
factor = getProtoScale(renderable);
if(renderable.pointcloud().has_units())
{
factor = 1000.0/renderable.pointcloud().units();
}
if (ivRoot->getNumChildren() < 2 || ivRoot->getChild(1)->getTypeId() != SoScale::getClassTypeId())
{
ivRoot->insertChild(new SoScale(),1);
}
SoScale * cloudScale = static_cast<SoScale *>(ivRoot->getChild(1));
cloudScale->setName("PointCloudScale");
cloudScale->scaleFactor.setValue(factor, factor, factor);
}