如何在Three.JS中消除模型的光泽

时间:2019-05-18 19:10:55

标签: three.js

enter image description here

尝试使用完全相同的模型重新创建图像,但是我无法确定光线。

我重新创建的版本在我不知道如何消除的边缘上有一个奇怪的光芒。

enter image description here

我要重新创建的网站,也是我从中下载资源的网站

https://sketchfab.com/3d-models/iphone-x-c143efdc2cc54d7eaaf48b197b92885d

    renderer = new THREE.WebGLRenderer({
      canvas: myCanvas, 
      antialias: true
    });
    renderer.setClearColor(0xffffff, 0);
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);

    camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 0.1, 1000 );

    scene = new THREE.Scene();
    scene.background = new THREE.Color(0xffffff);

    var light2 = new THREE.PointLight(0xffffff, 0.5);
    light2.castShadow = false;
    scene.add(light2);

    var loader = new THREE.GLTFLoader();
    loader.load('scene.gltf', handle_load, undefined, function(error) {
        console.log(error);
    });

    var mesh;

    function handle_load(gltf) {

        console.log(gltf);
        mesh = gltf.scene;
        console.log(mesh.children[0]);
        mesh.children[0].material = new THREE.MeshLambertMaterial();
        scene.add( mesh );
        mesh.position.z = -20;
        mesh.rotation.x = 0;
        mesh.rotation.y = 0;
    }

2 个答案:

答案 0 :(得分:1)

如果我将其导入以下基于glTF-Viewerthree.js的模型中,该模型看起来不错。

enter image description here

我建议您使用类似的照明设置:AmbientLightDirectionalLight与环境图的组合。还将WebGLRenderer实例的属性physicallyCorrectLights设置为true。查看器是开源的,因此您可以检查以下文件中的详细信息:viewer.js

答案 1 :(得分:0)

Mungen87的回答很可靠,但是如果您只想手动删除场景中所有事物的光泽,则可以轻松(而且非常快!)运行:

scene.traverse(i => {if (i.isMesh) i.material.shininess = 0})