空间对象网格观察器:网格数据

Spatial Object Mesh Observer: Mesh Data

对于学院项目,我必须找到对象的各个部分(相对于对象的位置/角度)。该对象标有二维码。

目前我还停留在基础知识上。我扫描了一个房间并用“空间对象网格观察器”加载了这个房间。

但是这位观察员没有给出相关信息: 将网格发送到应用程序时,观察者不会尝试查找 3D 模型 LOD。

有人提示我可以从哪里开始吗?

带盒子的扫描房间(要查找的对象):

var observer = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();

// Loop through all known Meshes
foreach (SpatialAwarenessMeshObject meshObject in observer.Meshes.Values)
{
    Mesh mesh = meshObject.Filter.mesh;
    var vertices = mesh.vertices;
    // mesh.vertexCount -> 15978
    // mesh.vertices -> empty
    // mesh.triangles -> empty
    // Do something with the Mesh object
}

编辑:2021 年 4 月 29 日

根据我们的理解,您无法在运行时获取空间网格的顶点和三角形属性。所以,我们尝试在SpatialAwarenessMeshDemo场景(Assets/MRTK/Examples/Demos/SpatialAwareness/Scenes)的基础上做一些修改来重现这个问题。我们将以下代码添加到 ToggleObservers() 方法中,并使其在单击球体时被调用。

        var observer = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();

        foreach (SpatialAwarenessMeshObject meshObject in observer.Meshes.Values)
        {
            Mesh mesh = meshObject.Filter.mesh;
            Debug.Log(mesh.vertexCount);
            Debug.Log(mesh.vertices);
            Debug.Log(mesh.triangles);
        }

经过我们的测试,HoloLens2 Device 和 Unity Holographic Remoting 一切正常,始终输出预期值。因此我们建议您在设置中检查更新,查看是否有适用于 HoloLens 2 的系统更新。然后按照我们的步骤进行简单测试,看看是否有效。这可能会帮助您定位项目中的问题。

我将代码移到了“void OnBecameVisible()”,现在可以获取信息了