【发布时间】:2020-12-14 12:15:02
【问题描述】:
我们使用 Autodesk Forge 运行 Web 应用程序。在 web 应用程序中,我们想更改表面外观。因此我们使用以下 Audodesk 函数
...
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()
}
代码适用于 Autodesk Revit 导入的模型。使用导入的 IFC 模型无法按预期工作。这两个模型都是通过 ADs model derivate api 导入到 AD Forge 查看器中的。
为了得到我们预期的结果,我们尝试使用 MeshBasicMaterial 和 MeshPhongMaterial。两者都具有相同的结果:Revit 模型很好,IFC 模型不是这样。
为了寻找一些解决方法,我们尝试复制片段网格并使用相同的混搭和更改的材质创建叠加层。代码就像
...
var obj = this.viewer.impl.getRenderProxy(this.viewer.impl.model, frag)
var meshProxy = new THREE.Mesh(obj.geometry, this.material);
meshProxy.matrix.copy(obj.matrixWorld);
meshProxy.matrixWorldNeedsUpdate = true;
meshProxy.matrixAutoUpdate = false;
meshProxy.frustumCulled = false;
this.viewer.impl.addOverlay("parkett", meshProxy);
...
结果如图(右侧为预期结果):
不知何故,看起来图像纹理显示得不够“详细”...
提前感谢您的任何建议!
【问题讨论】:
标签: autodesk-forge autodesk-viewer ifc