【问题标题】:Three.js Importing gltf without a background三.js无背景导入gltf
【发布时间】:2020-01-31 14:34:21
【问题描述】:

Three.js 上有 2 个示例场景(我正在使用),它们正在教授如何导入 gltf 模型。
两者都使用 RGBELoader 函数,该函数会初始化背景。

new RGBELoader()
                .setDataType( THREE.UnsignedByteType )
                .setPath( 'textures/equirectangular/' )
                .load( 'venice_sunset_2k.hdr', function ( texture ) {

                    var cubeGenerator = new EquirectangularToCubeGenerator( texture, { resolution: 1024 } );
                    cubeGenerator.update( renderer );

                    //background = cubeGenerator.renderTarget;

                    var pmremGenerator = new PMREMGenerator( cubeGenerator.renderTarget.texture );
                    pmremGenerator.update( renderer );

                    var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
                    pmremCubeUVPacker.update( renderer );

                    envMap = pmremCubeUVPacker.CubeUVRenderTarget.texture;

                    pmremGenerator.dispose();
                    pmremCubeUVPacker.dispose();

我现在想在不加载背景的情况下获得一个空背景(或者只是一个地面或 smth)。

它可以在代码中注释“背景”行以查看我的对象而不是背景,但应该没有必要为背景加载纹理。当我评论/删除更多东西时,我的对象没有纹理。

如何查看头盔/音箱(示例场景“gltf loader”中的示例对象)并摆脱背景? 我知道它与“envmap”有关..

【问题讨论】:

    标签: javascript three.js loader gltf


    【解决方案1】:

    但应该没有必要为背景加载纹理。

    立方体纹理也用于 glTF 模型的环境贴图。所以如果你真的想删除它,你必须删除webgl_loader_gltf中的以下代码部分。

    gltf.scene.traverse( function ( child ) {
        if ( child.isMesh ) {
            child.material.envMap = envMap;
        }
    } );
    

    但是,由于环境贴图是场景中唯一的(间接)光源,因此这样做时头盔会或多或少地变暗。然后,您可能需要添加环境光和定向或点光源。

    three.js R109

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2015-07-14
      • 2019-05-16
      • 2020-06-27
      • 2013-11-20
      相关资源
      最近更新 更多