【问题标题】:ThreeJS - Washed out texturesThreeJS - 洗掉的纹理
【发布时间】:2021-11-03 13:37:53
【问题描述】:

我用 ThreeJS 创建了一个简单的模型查看器。 我从 .mtl 和 .obj(带纹理)文件加载。 除了纹理,一切都很好。 如果我使用环境光,纹理会显得褪色。 如果我禁用环境光,则根本不会显示纹理。 我在带有 WebView 的 Android 应用程序中运行它。

camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
        camera.position.z = 3;


        scene = new THREE.Scene();

        ambient = new THREE.AmbientLight(0x404040);
        scene.add(ambient);


        renderer = new THREE.WebGLRenderer();

        renderer.setPixelRatio(window.devicePixelRatio);
        renderer.setSize(window.innerWidth, window.innerHeight);

        container.appendChild(renderer.domElement);


        controls = new THREE.OrbitControls(camera, renderer.domElement);
        controls.enableDamping = true;
        controls.dampingFactor = 0.25;
        controls.enableZoom = true;

        window.addEventListener('resize', onWindowResize, false);

        var mtlLoader = new THREE.MTLLoader();
        mtlLoader.load('../foods_models/7/mtl.mtl', function (materials) {
            materials.preload();

            if (materials.materials.default != undefined) {
                materials.materials.default.map.magFilter = THREE.NearestFilter;
                materials.materials.default.map.minFilter = THREE.LinearFilter;
            }
            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials(materials);
            objLoader.load('../foods_models/7/obj.obj', function (object) {
                scene.add(object);
                zoomCameraToSelection(camera, controls, object);
            });
        });

【问题讨论】:

    标签: javascript android textures


    【解决方案1】:

    我在研究一个贴图纹理在我的项目中看起来褪色的问题时发现了这篇文章。

    我正在研究 REACT THREE FIBER,但我想分享我的解决方案,以防有其他人在同一搜索中...我发现文档是相关的。

    在 THREE 中存在与 sRGB 编码相关的问题。在 RTF 中,您可以在 <Canvas/> 上使用 linearflat 属性:

    <Canvas
      linear
      flat
    >
    ...
    </Canvas>
    

    https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md?plain=1#L50-L51

    我不确定如何使其适应原版 THREE,但这条评论帮助我在 React 中实现了目标:

    Gamma correct treatment of sRGB textures in THREE.js

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 2019-05-01
      • 1970-01-01
      • 2020-05-11
      相关资源
      最近更新 更多