Autodesk Forge Viewer:在IFC模型中更改纹理

问题描述

我们使用Autodesk Forge运行Web应用程序。在Web应用程序中,我们想更改表面外观。因此,我们使用以下Audodesk函数

xargs -n 1 aws cloudformation list-stacks --region

代码对于Autodesk Revit导入的模型运行正常。使用导入的IFC模型无法正常工作。这两种模型都是通过ADs模型派生api导入到AD Forge查看器的。

为了达到预期的结果,我们尝试使用MeshBasicMaterial和MeshphongMaterial。两者具有相同的结果:Revit模型很好,IFC模型不是。

为了查找一些解决方法,我们尝试复制片段网格并使用相同的混搭和更改的材质创建覆盖。代码就像

...
event.fragIdsArray.forEach(frag => {
const model = this.viewer.model;
model.getFragmentList().setMaterial(frag,this.material)
var object = this.viewer.impl.getFragmentProxy(this.viewer.impl.model,frag)
object.updateAnimTransform()
}

结果显示在图像中(右侧是预期结果):

left side: Texture added to IFC. Right side: Same with rvt model

以某种方式看起来图像纹理没有足够“详细”显示...

提前感谢您的任何建议!

解决方法

从问题上我不能完全确定问题是什么。将自定义材料应用于IFC模型时,没有可见的变化吗?还是应用了自定义材料,但是以“错误的方式”?

如果根本没有应用自定义材料,请确保模型未整合。您可以确保使用viewer.model.unconsolidate();

如果应用了自定义材质,但是其材质看起来不正确,则可能是因为IFC模型中的土工不包含正确的材质坐标。在这种情况下,您将必须自己映射纹理,例如,使用自定义着色器:https://github.com/petrbroz/forge-basic-app/blob/custom-texture-mapping/public/CustomTextureExtension.js