我们可以在 Autodesk forge 中选择和剖切点云吗?

Posted

技术标签:

【中文标题】我们可以在 Autodesk forge 中选择和剖切点云吗?【英文标题】:Can we select and section point cloud in autodesk forge? 【发布时间】:2021-12-31 13:01:55 【问题描述】:

我们必须用 forge 开发一个工具来完成以下任务

    我们应该从本地硬盘显示大点云 我们应该能够选择点 我们应该能够分割/剪辑点云

如果我们使用 Autodesk forge 完成上述任务,请告诉我

提前致谢

【问题讨论】:

请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

不幸的是,Forge Viewer 没有内置支持渲染大规模点云。以下是您可能要考虑的一些选项,但我认为没有任何解决方案可以为您勾选所有选项:

选项 1

通过Scene Builder 扩展将点作为THREE.PointCloud 插入场景:

function generatePointCloud() 
    const GridWidth = 1000;
    const GridHeight = 1000;
    const PointsCount = GridWidth * GridHeight;
    const PointSize = 0.1;
    const positions = new Float32Array(PointsCount * 3);
    const colors = new Float32Array(PointsCount * 3);
    let i = 0;
    for (var x = 0; x < GridWidth; x++) 
        for (var y = 0; y < GridHeight; y++) 
            const u = x / GridWidth, v = y / GridHeight;
            positions[3 * i] = (u - 0.5) * 100;
            positions[3 * i + 1] = (v - 0.5) * 100;
            positions[3 * i + 2] = 0.0;
            colors[3 * i] = u;
            colors[3 * i + 1] = v;
            colors[3 * i + 2] = 0.0;
            i++;
        
    

    const geometry = new THREE.BufferGeometry();
    geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));
    geometry.addAttribute('color', new THREE.BufferAttribute(colors, 3));
    geometry.computeBoundingBox();
    geometry.isPoints = true; // This flag is important! It will force Forge Viewer to render the geometry as gl.POINTS

    const material = new THREE.PointCloudMaterial( size: PointSize, vertexColors: THREE.VertexColors );
    return new THREE.PointCloud(geometry, material);


// ...

const sceneBuilder = await viewer.loadExtension('Autodesk.Viewing.SceneBuilder');
const modelBuilder = await sceneBuilder.addNewModel(
    conserveMemory: false,
    modelNameOverride: 'My Point Cloud'
);
const points = generatePointCloud();
points.dbId = 12345;
modelBuilder.addMesh(points);

这样,点云对象的行为将与任何其他 Forge 模型一样 - 它会在悬停时突出显示,在单击时被选中,并且还可以被分割。不幸的是,THREE.PointCloud 对象将所有点都保存在内存中,因此这种方法不适合大规模点云。

选项 2

使用 Potree 将大型点云加载到 Forge Viewer:https://github.com/petrbroz/forge-potree-demo。

通过这种方式,您可以将大规模点云流式传输到场景中,但在这种情况下,选择和/或切片将不可用。您必须自己在 Potree 对象上实现该功能。

【讨论】:

以上是关于我们可以在 Autodesk forge 中选择和剖切点云吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Autodesk Forge 查看器中更改选择颜色?

Autodesk forge SVF2 dbid

Autodesk forge 查看其他 3d 视图和选项

选择要在 Autodesk forge 查看器中显示的特定 3d 视图

Forge 查看器:Autodesk.BoxSelection 扩展错误

Autodesk Forge Viewer PDF 捕捉和缩放问题