空间对象网格观察器:网格数据
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 日
- Unity:Unity 2019.4.21f1
- MRTK:2.6.1
一切似乎都已正确加载,三角形在外部工具中被识别。
但是,此信息在 Unity 中不可用。
根据我们的理解,您无法在运行时获取空间网格的顶点和三角形属性。所以,我们尝试在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()”,现在可以获取信息了
对于学院项目,我必须找到对象的各个部分(相对于对象的位置/角度)。该对象标有二维码。
目前我还停留在基础知识上。我扫描了一个房间并用“空间对象网格观察器”加载了这个房间。
但是这位观察员没有给出相关信息: 将网格发送到应用程序时,观察者不会尝试查找 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 日
- Unity:Unity 2019.4.21f1
- MRTK:2.6.1
一切似乎都已正确加载,三角形在外部工具中被识别。
但是,此信息在 Unity 中不可用。
根据我们的理解,您无法在运行时获取空间网格的顶点和三角形属性。所以,我们尝试在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()”,现在可以获取信息了