3

我想创建一个 Web 应用程序,让用户可以在 Archilogic 3D 场景中的地板和墙壁的不同预设之间进行选择。

https://spaces.archilogic.com/model/template/new?modelResourceId=f67ffde0-278e-11e4-9f8c-7dda0d61ae4a&mode=edit&view-menu=camera-bookmarks&main-menu=interior&logo=false

然而,就像在这个编辑器中一样,我需要更简单的材质菜单(用户从管理员之前上传的不同预设纹理中进行选择,并带有相应的漫反射、规格、法线和 alpha 贴图)。

我浏览了archilogic的所有repos,但找不到3D编辑器的源代码以使其更简单。

有谁知道它是否可用,如果没有,我应该朝着哪个方向开发这样的应用程序?

4

1 回答 1

1

这是一个仍在路线图上但尚未完成的功能,但有一些方法可以完成类似的事情。

所以最重要的是,下面的描述是由于这一切还没有准备好和完善。这是实现目标的一种实验方式。

让我们分解一下。

预定义材料

Archilogic 现在有一长串预定义的材料供您选择。它们与建筑元素的类型无关,因此您可以在任何元素上使用任何材料。这是可用材料的清单

地板和天花板

地板和天花板包含在具有io3d-floor组件的单个元素中。

因此,假设您在elem元素中有地板和天花板,您可以执行以下操作来选择预定义的材料:

elem.components['io3d-floor'].data.material_top = 'wood_parquet_oak';
elem.components['io3d-floor'].update()

这会将地板材料更改为给定的预定义材料,在本例中为“wood_parquet_oak”。对于天花板材料,更改material_topmaterial_ceiling

墙壁

墙的工作原理几乎相同,但属性是material_frontandmaterial_back而不是material_topand 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 版本。

“源”图像是可选的,但其他两个必须存在,否则它将不起作用。

总结一下:这个功能还没有完全准备好(正如你可以通过让它工作的相当人为的方式来判断的那样),但是这个解决方法将一直有效,直到有更好的方法可用。

于 2018-02-19T16:41:42.167 回答