【问题标题】:MRTK - Changing Spatial Awareness material at runtimeMRTK - 在运行时更改空间意识材料
【发布时间】:2021-03-18 09:58:52
【问题描述】:

我想在运行时更改所有空间网格的材质:

如果我在 Room1 中启动应用程序,然后走到 Room2 并将材料更改为“newMaterial”,我可以使用以下代码来做到这一点:

foreach (SpatialAwarenessMeshObject meshObject in observer.Meshes.Values)
{
    if (meshObject?.GameObject == null)
        continue;

    meshObject.Renderer.sharedMaterial = newMaterial;

}

但是上面的代码只改变了可见的网格(所以 Room2 中的网格)。因为如果我走回 Room1,我仍然有旧材料。

那么我如何确保材质随着所有网格而变化,而不仅仅是可见的?

  • 我正在使用 MRTK v2.53 和 XR SDK 管道
  • 空间观察者是:WindowsMixedRealitySpatialMeshObserver

【问题讨论】:

    标签: hololens mrtk


    【解决方案1】:

    要设置显示网格时使用的材质,建议更改空间感知网格观察器的配置,而不是更改每个网格对象。请参考以下代码:

        IMixedRealityDataProviderAccess dataProviderAccess = 
        CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;
    if (dataProviderAccess != null)
    {
        IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
        dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();
        foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
        {
            // Update the visible material
            observer.VisibleMaterial = myMaterial;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2018-02-07
      • 1970-01-01
      • 2016-02-24
      • 2019-12-04
      • 2022-08-13
      相关资源
      最近更新 更多