如何在Cesium中使用Material.fromType

Zac*_*Zac 3 cesiumjs

Cesium.Material.fromType我在使用该函数使用类型和制服创建材质时遇到问题。

我指的是这里的文档:链接

我有以下示例,我正在尝试开始工作,但是我接下来想使用Dot动态类型而不是颜色。目前颜色似乎更容易。

沙堡示例

这有效: material : Cesium.Color.GREEN

这不会:

material : Cesium.Material.fromType('Color', {
  color : new Cesium.Color(1.0, 0.0, 0.0, 1.0)
})
Run Code Online (Sandbox Code Playgroud)

我收到此错误:
Uncaught DeveloperError: Unable to infer material type: [object Object]

实体上的材质属性似乎不能是对象,我是否缺少将材质转换为原始类型的步骤?

ema*_*key 5

所以我这里没有什么好消息,但我至少可以解释一下出了什么问题。如您所知,Cesium 有两个独立的 API 层,“Entity”层(用于复杂对象,如移动车辆)和“Primitive”层(用于图形基元,如广告牌或网格的集合)。您在这里所做的是直接从 Primitive 层构建材质并尝试将其分配给实体,这是行不通的。

在实体层,材质由从MaterialProperty抽象基类派生的类描述。派生类是该文档链接中列出的所有实体层类,例如,有一个用于纯色的ColorMaterialProperty类。位于实体层使这些东西具有时间动态性,因此例如,当模拟时间为 时,纯色可能为蓝色,04:00并在 时变为红色06:00,等等。原始材质没有时间烘焙的概念,并且颜色要浅得多- 重量结果。

DotMaterialProperty现在有坏消息:目前 Cesium 中似乎没有类。这意味着 Dot 材质仅存在于原始层 API 中,并且不连接到实体层。团队喜欢在这一点上说“欢迎贡献”,如果您愿意的话,您可能可以通过复制 或StripeMaterialPropertyGridMaterialProperty编辑它以连接到 Dot 来连接它。

但在短期内,如果您需要点材质超过实体层,您可以将代码转换为图形基元。您可以在下拉框下的Material Sandcastle 演示中找到示例代码。Procedural Textures