此功能仍在路线图上,尚未完成,但有一些方法可以完成类似的事情。
所以最重要的是,下面的描述是由于这一切还没有准备好和完善。这是实现目标的一种实验方式。
让我们分解一下。
预定义材质
Archilogic 现在有一长串预定义的材料供您选择。它们与建筑元素的类型无关,因此您可以在任何元素上使用任何材料。 Here is the list of available materials.
地板和天花板
地板和天花板包含在具有io3d-floor 组件的单个元素中。
因此,假设您在 elem 元素中设置了地板和天花板,您可以执行以下操作来选择预定义材质:
elem.components['io3d-floor'].data.material_top = 'wood_parquet_oak';
elem.components['io3d-floor'].update()
这会将地板材料更改为给定的预定义材料,在本例中为“wood_parquet_oak”。吊顶材质,将material_top改为material_ceiling。
墙壁
墙的工作原理几乎相同,但属性是 material_front 和 material_back 而不是 material_top 和 material_ceiling。
其他建筑元素
对于其他元素,您可能可以通过查看相关组件的.data 中的可用属性来解决问题(例如,io3d-wall 用于墙壁)。
自定义材质
这有点难以正确处理,因为制作自定义材料涉及很多属性。
假设您已在某处上传纹理,您将像这样定义材质:
elem.components['io3d-floor'].data.material_top = {
mapDiffuse: "https://example.org/texture.hi-res.gz.dds",
mapDiffusePreview: "https://example.org/texture.lo-res.jpg",
mapDiffuseSource: "https://example.org/texture.source.jpg"
}
您还可以给它额外的参数,例如size: [3,3] 缩放纹理以覆盖模型中的 3x3 米,然后再重复或传递法线贴图或高光贴图,但为简洁起见,我排除了这些。
注意:您可以将这种材料定义用于也接受上述预定义材料的任何事物。 遵循命名约定很重要,并且您需要有可用的 gzip 压缩 DDS 纹理以及 JPEG 版本。
“源”图像是可选的,但其他两个必须存在,否则将不起作用。
总结一下:这个功能还没有完全准备好(你可以通过让它工作的非常人为的方式来判断),但这个解决方法将一直有效,直到有更好的方法可用。