【问题标题】:ThreeJS shaders in UnityUnity 中的 ThreeJS 着色器
【发布时间】:2019-05-14 17:03:23
【问题描述】:

我正在 Unity 中开展一个项目,该项目使用 AR 将产品放置在现实世界中。这些产品(几何和材质)从 h​​ttp 服务器下载并在 Unity 中转换为游戏对象。

这些产品最初是在 ThreeJS 中创建的(不要问为什么),并且与 Unity 几何体/材料相比具有不同的几何体/材料结构。

我得到了几何图形,但我遇到了材料问题。 Unity 中的“Standard”着色器不包含创建材质的所有参数(如:alpha 贴图、环境贴图、折射、置换贴图、粗糙度贴图、双面等)。

我查看了 Asset Store/GitHub 中的不同插件/库(例如 LUXBit2GoodShader SandwichSimple Physical Shader),但似乎它们都缺少一些参数。我正在考虑自己编写 Phong/Physical 着色器,但这肯定需要我几个星期才能完成。

大家有什么建议吗?

【问题讨论】:

  • 编写基本的Phong 着色器不应该花费太长时间;网络上有很多与您提到的参数相关的数学示例。我也会看看FX Composer from NVIDIA。它可能会加快该过程,因为您可以实时查看着色器中的变化,唯一的缺点是 NVIDIA 不再为其提供支持。
  • Blinn-Phong 着色器确实应该很容易实现。我更担心物理着色器。我想知道是否有人有相同的想法在 Unity 中实现 ThreeJS 材料并将代码放在 GitHub(或 AssetStore)中。
  • 模型是如何格式化的?您是否考虑过将模型转换为更标准的格式,已经有像 GLTF 这样的加载器?
  • @GarrettJohnson 模型以自制格式转换。解析此格式后,几何部分将传递给自制加载程序(如果 repo 更稳定,将来将替换为Draco)。材质部分也将由使用统一的“标准”着色器的自制加载器解析。我想替换此着色器以使用我在上面的问题中描述的更多参数。此外,您refering 的 GLTF 加载程序似乎仍在 release1.0 的道路上

标签: unity3d three.js shader hlsl phong


【解决方案1】:

标准着色器中没有 Alpha 贴图 - 主纹理的 Alpha 通道用作 Alpha 贴图。

也没有环境贴图 - 使用 Cube Maps 作为反射探针。

标准着色器中没有折射 - 它是标准着色器。

标准着色器中的置换贴图称为高度贴图。

粗糙度贴图 - 不是标准的(您可以获得的最接近的是将其反转并用作遮挡贴图)。

双面 - 不。

您需要为所有这些编写自己的着色器。

建议是:

步骤 1. 为每个属性找到一个着色器

第二步,通过复制粘贴相关代码将它们组合起来

【讨论】:

  • 嗨 Nika,感谢您的快速回答!我已经知道 Unity 中的标准着色器不接受那些物理参数(接受高度图,谢谢!)。我希望某个地方的某个人对在 Unity 中实现 ThreeJS 材料有相同的想法,并且代码可以在 GitHub 上获得。恐怕我必须自己编写那些着色器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多