【问题标题】:Objects with Mesh lambert material not being generated while rendering graphics with three.js使用 three.js 渲染图形时未生成具有 Mesh Lambert 材质的对象
【发布时间】:2015-02-18 20:42:31
【问题描述】:

我刚开始学习three.js,这对我来说是全新的。所以我正在编写这些系列的 hello world 有点像脚本。好吧,我编写了下面的脚本来使用 MeshBasicMaterial 生成一个立方体(这只是博客中给出的教程的精确副本)

        var scene = new THREE.Scene(); 
        var camera = new THREE.PerspectiveCamera(75, 640/340, 0.1, 1000); 
        var renderer = new THREE.WebGLRenderer(); 

        renderer.setSize(640, 340); 
        document.body.appendChild(renderer.domElement);

        var geometry = new THREE.CubeGeometry(1,1,1); 
        var material = new THREE.MeshBasicMaterial({color: 0xD43001});
        var cube = new THREE.Mesh(geometry, material); 


        scene.add(cube); 
        camera.position.z = 5; 

        var render = function (){

                requestAnimationFrame(render); 

                cube.rotation.x += 0.1; 
                cube.rotation.y += 0.1; 

                renderer.render(scene, camera); 

            };

            render();

当我从

更改立方体的材质时,上面的脚本会生成一个持续旋转的立方体
var material = new THREE.MeshBasicMaterial({color: 0xD43001});

var material = new THREE.MeshLambertMaterial({color: 0xD43001});

什么都没有显示。我到底错过了什么?

更新

所以我必须添加一个光源来显示一个由网状朗伯材料制成的对象。当我添加一个点光源时,该对象就会显示出来。

【问题讨论】:

    标签: three.js


    【解决方案1】:

    这是因为 MeshBasicMaterial 不会对光照做出反应,但具有恒定的颜色。

    但是,MeshLambertMaterial 确实会对照明做出反应,因此没有光,您就看不到它! MeshPhongMaterial 也是如此。

    【讨论】:

    • MeshLambertMaterial 依赖于光,而 MeshPhongMaterial 既依赖于光又依赖于相机
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2018-03-19
    • 2023-03-23
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多