贴花未显示在 Autodesk 查看器中

Posted

技术标签:

【中文标题】贴花未显示在 Autodesk 查看器中【英文标题】:Decals not displaying in Autodesk Viewer 【发布时间】:2017-09-16 17:13:03 【问题描述】:

使用 Autodesk 查看器时,贴花似乎没有按预期显示。上图正确显示贴花(未在 Autodesk Viewer 中渲染),下图没有贴花(在 Autodesk 查看器中渲染)。

为什么会这样?如何使贴花在 Autodesk Viewer 中工作?

源文件here.

【问题讨论】:

您使用的是哪种文件格式? Forge 默认不会为今天的大多数格式导入纹理,这可能是那里的问题。但是对于像 Fusion360 这样的少数文件格式。有一种解决方法,您可以将纹理重新应用到 f​​ragId,如 example 所示。 您在链接示例中解释的代码是什么行号?我正在使用位于此处的步骤文件grabcad.com/library/audio-clock-generator-pcb-1 有任何更新@cyrille? 我给你写个例子- 【参考方案1】:

这是我的代码示例。我在 Forge 上导入了 STEP 文件,并在我的 node.js 服务器上复制了 RefdFile_1.png 文件。

var attenuationVertexShader =`
  varying vec2 vUv;
  varying vec3 vPosition;
  void main() 
    vUv = uv;
    vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);
    gl_Position = projectionMatrix * mvPosition;
  
  ` ;

var attenuationFragmentShader = `
  varying vec2 vUv;
  uniform sampler2D checkerboard;
  void main() 
    gl_FragColor = texture2D(checkerboard, vec2 (vUv.x * 0.1263, vUv.y * 0.166)) ;
  
` ;

var dbId =4 ;
var fragId =0 ;
var texturePath ="/RefdFile_1.png" ;
var material =null ;

oViewer =new Autodesk.Viewing.Private.GuiViewer3D ($("#viewer") [0], ) ; // With toolbar
Autodesk.Viewing.Initializer (options, function () 
    oViewer.initialize () ;
    oViewer.addEventListener (Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function (event) 
        oViewer.fitToView (true) ;
        setTimeout (function ()  oViewer.autocam.setHomeViewFrom (oViewer.navigation.getCamera ()) ; , 1000) ;
        setTimeout (createTexture, 500) ;
    ) ;
    oViewer.setGroundReflection (false) ;
    oViewer.setGroundShadow (false) ;
    oViewer.load (myurn) ;
) ;

function createTexture () 
    var loader =new THREE.TextureLoader () ;
    loader.load (texturePath, function (texture) 
        texture.minFilter =THREE.LinearMipMapLinearFilter ; // THREE.LinearMipMapLinearFilter
        texture.magFilter =THREE.LinearFilter ;

        var uniforms =
            checkerboard: 
                type: 't',
                value: texture
            
         ;
        material =new THREE.ShaderMaterial (
          uniforms: uniforms,
          vertexShader: attenuationVertexShader,
          fragmentShader: attenuationFragmentShader,
          side: THREE.DoubleSide
        ) ;
        oViewer.impl.matman ().removeMaterial ('shaderMaterial') ;
        oViewer.impl.matman ().addMaterial ('shaderMaterial', material, true) ;
        var floor_mesh_render =oViewer.impl.getRenderProxy (oViewer.model, fragId) ;
        oViewer.model.getFragmentList ().setMaterial (fragId, material) ;
        oViewer.impl.invalidate (true) ;
    ) ;

【讨论】:

感谢西里尔。您能否使用完整的工作代码示例链接到您的存储库,而不仅仅是一个 sn-p? 进一步你是如何提取RefdFile_1.png的? 嗨 Cyrille,您能否链接包含您的工作代码示例的存储库? 嗨@sabrehagen,我会的,但是这周去旅行 - 再给我几天时间

以上是关于贴花未显示在 Autodesk 查看器中的主要内容,如果未能解决你的问题,请参考以下文章

在 Autodesk 查看器中出现 webGL 错误

如何使用纯 Javascript Autodesk 在查看器中离线显示 2d (.dwg) 文件

选择要在 Autodesk forge 查看器中显示的特定 3d 视图

在 Forge Autodesk 查看器中获取节点的属性

在 Autodesk 查看器中使用 dbids 在对象上绘制标记

模型伪造查看器中缺少 Autodesk.AEC.ModelData