Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定向光三js_Javascript_Three.js - Fatal编程技术网

Javascript 定向光三js

Javascript 定向光三js,javascript,three.js,Javascript,Three.js,我对three.js相当陌生。我使用r55整合了一些东西,并希望添加灯光。我一直在尝试根据Doob先生的文档添加方向灯-没有运气。。。我尝试添加的灯光不显示-添加的阴影可用于调试,但它就是不显示。。。有人知道我的代码有什么问题吗???我很感激任何意见 function init() { container = document.createElement('div'); document.body.appendChild(container); scene = new

我对three.js相当陌生。我使用r55整合了一些东西,并希望添加灯光。我一直在尝试根据Doob先生的文档添加方向灯-没有运气。。。我尝试添加的灯光不显示-添加的阴影可用于调试,但它就是不显示。。。有人知道我的代码有什么问题吗???我很感激任何意见

function init() {
    container = document.createElement('div');
    document.body.appendChild(container);

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

    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    container.appendChild(renderer.domElement);

    //CUBE
    var material = new THREE.MeshBasicMaterial({
        color: 0xff0000
    });
    var geometry = new THREE.CubeGeometry(x, y, z);
    cube = new THREE.Mesh(geometry, material);
    cube.position.z = z / 2;
    scene.add(cube);

    //FLOOR
    //floor color:
    var floorMaterial = new THREE.MeshBasicMaterial({
        color: 0xcccccc
    });
    //floor size:
    var floorGeometry = new THREE.PlaneGeometry(20, 20, 1, 1);
    var floor = new THREE.Mesh(floorGeometry, floorMaterial);
    floor.position.y = -0.5;
    floor.doubleSided = true;
    scene.add(floor);

    //LIGHTS
    var dLight = new THREE.DirectionalLight(0xffffff);
    dLight.position.set = (0, 0, 1);
    dLight.shadowCameraVisible = true;
    dLight.shadowCameraNear = 1;
    dLight.shadowCameraFar = 150;
    dLight.castshadow = true;
    scene.add(dLight);

    //CAMERA POSITION
    camera.position.z = 50;
    controls = new THREE.TrackballControls(camera);

    renderer.shadowMapEnabled = true;
    renderer.shadowMapType = THREE.PCFShadowMap;

}
哎呀,看起来不太对劲。。。运行此操作后,灯光位置将不再是3D向量,它将根据灯光位置的任何数学运算生成
NaN

dLight.position.set(0,0,1);
// or
dLight.position = new THREE.Vector3(0,0,1);
你把灯调亮了

light.position.set (0,0,1);
但我认为你的光在几何体里面。
看一看。它有一个带阴影的工作平行光。

重点是,对象的材质必须是MeshLambertMaterial或MeshPhongMaterial。其他材料不能反射光线


//立方体
var材质=新的3.0网格材质({
颜色:0xff0000
});
或
var material=新的3.0网格LambertMaterial({
颜色:0xff0000
});

MeshPhongMaterial可用于有光泽的,MeshLambertMaterial可用于无光泽(Lambertian)曲面。

您需要设置:
floor.receiveShadow=true

没错,这似乎不对。。。但是,在改变后,没有灯光显示。。。也许是渲染器设置的问题?谢谢!我看了看小提琴,也发现了这个,但即使改变了周围的位置,我似乎也无法使灯光显示出来……是的,材质不能是MeshBasicMaterial,应该是MeshPhongMaterial或其他支持灯光模型的材质。
light.position.set (0,0,1);