【问题标题】:How set transparenty of element in autodesk-viewer?如何在 Autodesk-viewer 中设置元素的透明度?
【发布时间】:2019-08-11 23:58:38
【问题描述】:

我正在尝试设置模型元素的透明度,但我做不到。我正在寻找可以做到这一点的方法,但是我尝试的方法不起作用。

【问题讨论】:

    标签: autodesk-viewer


    【解决方案1】:

    Viewer 并没有真正提供任何本机/内置功能来执行此操作,但就图形操作而言,THREE.js 始终是您的朋友,只要您可以在观众:

    var fragList = viewer.model.getFragmentList();    
    
    var fragIds = []
    
    model.getData().instanceTree.enumNodeFragments(
      dbid, (fragId) => {
       fragIds.push(fragId)
    });
    
        fragIds.forEach((fragId) => {
          //grab the material
          var material = fragList.getMaterial(fragId);
    
          if(material) {
            //set transparency
            material.opacity = 0.5;
            material.transparent = true;
            //mark for update
            material.needsUpdate = true
          }
        })
      });
      viewer.impl.invalidate(true, true, true) //notify renderer to update
    }
    

    【讨论】:

    • 非常感谢,但我不明白为什么 enumNodeFragments 未定义?
    • 你用的是什么版本?刚刚在 v6.0-6.5 上尝试过并且工作正常。您是否等到模型清单加载(GEOMETRY_LOADED_EVENT 或更高版本)才能访问其数据?
    • 抱歉,我不知道 GEOMETRY_LOADED_EVENT 是如何加载的。
    • 加上这段代码( viewerApp.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () { instanceTree = viewerApp.model.getData().instanceTree; console.log(instanceTree); });)在这个函数(函数onDocumentLoadSuccess(doc))中,现在我得到了instanceTree,但和以前一样没有enumNodeFragments。
    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 2018-03-09
    • 2013-09-08
    • 2012-01-01
    • 2017-05-05
    • 2016-11-28
    • 2011-01-22
    • 2012-01-26
    相关资源
    最近更新 更多