Autodesk forge forge viewer中的剪裁平面无法使用ShaderMaterial剪裁对象

Autodesk forge forge viewer中的剪裁平面无法使用ShaderMaterial剪裁对象,autodesk-forge,autodesk-viewer,forge,Autodesk Forge,Autodesk Viewer,Forge,我试图在forge viewer中添加带有THREE.ShaderMaterial的自定义对象,我能够在forge viewer的OverlyScene中添加和渲染对象 我引用了博客来添加相同的内容 我面临的问题是: forge viewer的剪裁平面无法剪裁自定义添加的对象。 如果我尝试用其他材质添加相同的对象,则剪裁平面可以剪裁它们 我试过了。但我遇到了无法解决的错误#include(对于其他着色器源也是如此)。我尝试在THREE.ShaderChunk中添加这些着色器,但没有成功 我已经看

我试图在forge viewer中添加带有
THREE.ShaderMaterial
的自定义对象,我能够在forge viewer的
OverlyScene
中添加和渲染对象

我引用了博客来添加相同的内容

我面临的问题是: forge viewer的剪裁平面无法剪裁自定义添加的对象。 如果我尝试用其他材质添加相同的对象,则剪裁平面可以剪裁它们

我试过了。但我遇到了
无法解决的错误#include
(对于其他着色器源也是如此)。我尝试在
THREE.ShaderChunk
中添加这些着色器,但没有成功

我已经看到错误来自
ShaderChunk.ts
,因为它没有在
块[]
中找到着色器

  • 有没有办法将剪裁平面与
    THREE.ShaderMaterial
    一起使用
  • 是否需要在
    ShaderChunk.ts
    中的
    块[]
    中添加自定义着色器?如果是,怎么做

  • 如果可能,请分享演示示例。

    与您发现的另一个堆栈溢出问题类似,Forge Viewer中的截面工具使用自定义着色器逻辑,该逻辑仅包含在查看器自己的材质中。尝试在材质着色器中包含以下片段:

    在顶点着色器中:

    ...
    #if NUM_CUTPLANES > 0
        varying vec3 vWorldPosition;
    #endif
    ...
    void main() {
        ...
        #if NUM_CUTPLANES > 0
            vWorldPosition = vec3(/* include your own vertex world position here */);
        #endif
        ...
    }
    ...
    
    在片段着色器中:

    ...
    #if NUM_CUTPLANES > 0
        varying highp vec3 vWorldPosition;
    #endif
    
    #include<cutplanes>
    ...
    void main() {
        ...
        #if NUM_CUTPLANES > 0
            checkCutPlanes(vWorldPosition);
        #endif
        ...
    }
    ...
    

    请参见此,以获取向
    THREE.ShaderMaterial添加剖切支持的完整示例。ShaderMaterial

    我已经尝试了此方法,但没有成功,下面是我的顶点和片段着色器:const vertexShader=
    #if NUM_CUTPLANES>0 variable vec3 vWorldPosition#endif属性vec4颜色;可变vec4颜色;void main()常量fragmentShader=
    #如果NUM_CUTPLANES>0变化的highp vec3 vWorldPosition#endif#include#ifdef GL#ES precision high p float#endif可变vec4颜色;void main()不要将位置与投影矩阵相乘。只需将其设置为vPosition.xyzon即可,不起作用。你能分享一个完整的小例子吗?
    
    const uniforms = {
        ...
        "cutplanes": { type: "v4v", value: [] },
        "hatchParams": { type: "v2", value: new THREE.Vector2(1.0, 10.0) },
        "hatchTintColor": { type: "c", value: new THREE.Color( 0xFFFFFF ) },
        "hatchTintIntensity": { type: "f", value: 1.0 },
        ...
    }