迁移到MRTK2:混合现实工具包标准着色器“breaks”


此时此刻,我正试图尽可能多地了解新的Mixed Reality Toolkit 2为。。。作好准备HoloLens2当它来的时候。我选择了使用一种相当残酷的冷火鸡学习方法:我把我现有的AMS HoloATC应用程序,撕掉了ye goode旧的全息工具包,取而代之的是新的MRTK2--从GitHub新鲜出炉。不出所料,这打破了很多。我不确定这是不是想要的迁移方式--这就像翻修房子一样,从几堵墙外的推土机开始。但这是我选择的方式,因为它迫使我坚持新的风格,学习如何工作,而不妥协。它也非常清楚,当我这样做的时候,事情会在哪里破裂客户应用程序。

因此,我开始了一系列简短的博客文章,这些文章基本上记录了我在道路上遇到的任何颠簸,以及我是如何解决它们的。我希望其他人也能从中受益,尤其是我将展示很多动了奶酪的作品。说到。。。

救命啊!我的标准着色器坏了!

所以,你有一个很好的Mixed Reality显示这些令人敬畏的全息图的应用程序:

然后,您决定升级到Mixed Reality Toolkit2:

你没想到会看到这个。这是典型的颜色统一显示时,一个材料丢失或着色器中的东西被彻底破坏。事实上,如果你看一下材料:

的确,有些东西坏了。

如何解决这个问题

有好消息,也有坏消息,还有稍微好一点的消息。

  • 好消息是:它很容易修复。
  • 坏消息是:你必须这样做应用程序中使用旧的'HTK标准着色器
  • 稍微好一点的消息是:你可以一次完成多个材料的操作。前提是它们都在一个文件夹中,或者你用搜索做些漂亮的事情

因此,在您的资产中,选择您的材料:

然后,在检查器中,选择Mixed Reality Toolkit Standard Shader(再次):

然后轰。一切看起来都是应该的。

或者几乎是这样,因为虽然它的名字相同,但实际上它是一个不同的着色器。东西看起来可能有点不一样。在我的样例应用程序中,尤其是蓝色,看起来似乎有点不一样。

那么,发生了什么?

如果查看Git标记为更改的内容,只有树材料本身标记为更改:

如果您查看一个diff,您将看到着色器的引用文件GUID被更改。所以实际上,尽管它有着相同的名字(混合现实工具包标准),但就Unity而言,它是一个不同的着色器。

(您可能想点击图片,以便能够实际阅读此内容)。

当你通过diff向下滚动时,你会看到很多添加的内容,所以这不仅仅是一个不同的着色器ID,它实际上是一个不同的或新的着色器以及。为什么他们故意选择打破着色器ID-我很难理解。也许是为了让从一个着色器升级到另一个着色器成为可能,或者让新旧两个着色器同时在一个项目中工作,从而使升级变得更容易?但由于它们有相同的名称,这也可能引起混淆。不管怎么说--但这是导致着色器在升级时“坏掉”的原因,现在,你也知道如何修复它了。

结论

我希望今天能消除一个困惑的根源,祝你们玩得开心watching the //BUILD 2019 keynote

你可以find a demo project here

  • 分支“master“显示带有HoloToolkit的原始项目
  • 分支“broken“显示升级到MRTK2的项目-着色器损坏
  • 分支“fixed“显示固定项目