我想创建一个网页应用程序,让用户选择不同的预置地板和墙壁在一个令人毛骨悚然的3D场景。
然而,就像在这个编辑器中一样,我需要更简单的材料菜单(用户从不同的预置纹理中选择,这些纹理是由管理员用相应的漫射、规格、法线和阿尔法映射上传的)。
我浏览了所有的回放,但找不到3D编辑器的源代码,以使它更简单。
有没有人知道它是否可用,如果没有,我应该朝哪个方向去开发这样的应用程序?
发布于 2018-02-19 16:41:42
这是一个仍然在路线图上的特性,还没有完成,但是有一些方法可以完成类似的任务。
因此,最重要的是,下面的描述是由于所有这些还没有准备好和抛光。这是一种实现目标的实验性方法。。
让我们把这个拆开。
预定义材料
阿奇洛格有一长串预先定义的材料,现在你可以从中挑选。它们与架构元素的类型无关,所以您可以在任何元素上使用任何材料。这是可用材料的清单。
地板和天花板
地板和天花板包含在一个带有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米,然后再重复自己或传递普通映射或镜面映射,但为了简洁起见,我将它们排除在外。
注:您可以使用这种材料定义的任何东西,也接受上述预定义的材料。--遵循命名约定非常重要,和您需要有一个gzipped纹理以及JPEG版本。
“Source”图像是可选的,但其他两个必须存在,否则就无法工作。
总结一下:这个功能还没有完全准备好(正如您可以从相当人为的方法来判断的那样),但是在更好的方法可用之前,这个解决方案就可以了。
https://stackoverflow.com/questions/48844852
复制相似问题