【问题标题】:How to create points in forge viewer using SceneBuilder and BufferGeometry?如何使用 SceneBuilder 和 BufferGeometry 在伪造查看器中创建点?
【发布时间】:2021-09-12 10:07:01
【问题描述】:

在开发者指南here 中,forge 提到我们可以使用 SceneBuilder 扩展和 BufferGeometry 创建点。为此,我们需要将 BufferGeometry 的 isPoint 设置为 true。我在场景中只创建一个点的方法如下

async function addASinglePoint() {

await viewer.loadExtension('Autodesk.Viewing.SceneBuilder');
const ext = viewer.getExtension('Autodesk.Viewing.SceneBuilder');



modelBuilder = await ext.addNewModel({
    conserveMemory: false,
    modelNameOverride: 'A Single Marker'
  });

  const red = new THREE.MeshPhongMaterial({
    color: new THREE.Color(1, 0, 0)
  }); 

  const geometry = new THREE.BufferGeometry();
  geometry.addAttribute('position', new THREE.BufferAttribute([0, 0, 0], 3));
  geometry.isPoints = true; 

  let mesh = new THREE.Mesh(geometry, red);

  mesh.matrix = new THREE.Matrix4().compose(
    new THREE.Vector3(0, 0, 0),
    new THREE.Quaternion(0, 0, 0, 1),
    new THREE.Vector3(1, 1, 1)
  );

  mesh.dbId = 234543;
  modelBuilder.addMesh(mesh);

}

但我在查看器中看不到任何点。在 Model 浏览器中,我可以看到该项目已添加,如果单击该项目,则查看器似乎导航到该项目。但除了枢轴点,我什么都看不到。可能是我没有设置点大小。我找不到任何方法来设置点的大小。如何设置点的大小并将其显示在查看器中?如果我需要添加更多点(100-200),那么正确的方法是什么? TIA

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    如果您有兴趣向查看器添加点云,有以下几种选择:

    【讨论】:

    • 我尝试使用 PointCloud 并成功。但未能与积分互动。现在我正在尝试使用 SceneBuilder。我需要展示一些交互式标记。问题是 SceneBuilder 仅支持某些材质类型(MeshPhong、MeshBasic、LineBasic 和 Prism),不支持 PointCloudMaterial。
    • 啊,我明白了...如果您需要互动的观点,请考虑以下内容:forge.autodesk.com/blog/3d-markup-icons-and-info-card
    • 是的,这是我最初关注的博客。但是得到了错误的相交对象。有时是空数组。我为此发布了一个问题 - stackoverflow.com/questions/66890954/…
    • 您是否尝试过其他 SO 问题中提到的建议?
    • 是的,我尝试了 PointCloud 的不同方法,例如更改阈值和与单个点相交。但对我没有用。正如我所说,它有时会给我一个空数组。但没有尝试过 html 标记。因为 html 标记有一些开销,比如更改标记位置等。我们希望点云能够工作。
    猜你喜欢
    • 2020-04-10
    • 2021-09-29
    • 2018-11-12
    • 2021-11-15
    • 2014-10-30
    • 2021-04-25
    • 2021-04-23
    • 2018-06-28
    • 2018-10-22
    相关资源
    最近更新 更多