2013-02-11 2 views
0

Я довольно новичок в three.js. Я собрал несколько вещей, используя r55, и хотел добавить огни. Я пытаюсь добавить DirectionalLight в соответствии с документацией Mrdoob - не повезло ... Свет, который я пытаюсь добавить, не появляется - добавлена ​​shadowCameraVisible для отладки, но она просто не появится ... Кто-нибудь знает, что может быть неправильно с моим кодом ??? Я ценю любой вход !!directionallight three js

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; 

} 

ответ

0
dLight.position.set = (0,0,1); 

Упс, что выглядит не так ... после того, как это работает, свет позиция не будет 3D-вектор, который будет генерировать NaN из любой математики сделали с легкой позиции.

dLight.position.set(0,0,1); 
// or 
dLight.position = new THREE.Vector3(0,0,1); 
+0

Правда, это не кажется правильным ... все же, после изменения, что не появляется свет ... может быть, что-то с настройками рендеринга? – NGA

1

Вы установили свет на

light.position.set (0,0,1); 

Но я думаю, что ваш свет внутри геометрии. Посмотрите на http://jsfiddle.net/aSt8c/. Он имеет рабочий направленный свет с тенью.

+0

Спасибо! Я посмотрел на скрипку, также нашел этот http://jsfiddle.net/Rhtr2/58/, но даже с изменением позиции вокруг меня просто не видно, что свет появился ... – NGA

0

Дело в том, что материал вашего объекта должен быть MeshLambertMaterial или MeshPhongMaterial. Другие материалы не могут отражать свет.

//CUBE var material = new THREE.MeshPhongMaterial({ color: 0xff0000 }); OR var material = new THREE.MeshLambertMaterial({ color: 0xff0000 });

MeshPhongMaterial может быть использован для блестящего, MeshLambertMaterial для не блестящего (Lambertian) поверхности.

Смежные вопросы