неправильное (слишком низкое) положение камеры - PullRequest
1 голос
/ 08 марта 2019

Я новичок в ThreeJS, и я пытаюсь выполнить загрузку модели gltf, которая правильно отображается в three-gltf-viewer, она действительна.

model from gltf web validator

Когда я загружаю его в ThreeJS, модель загружается нормально, но камера находится на линии горизонта модели, и управление орбитой не работает, когда я пытаюсь увеличить или уменьшить масштаб или любое другое вращениесцены отключен.

model from threeJS

Я пытался настроить любые возможные значения камеры и сцены, но я просто не могу «запрыгнуть» на модель и увидеть ее свыше.Вот код.

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 800, window.innerWidth / window.innerHeight, 500, 1500000 );
camera.position.set(1, 1, 1);

var renderer = new THREE.WebGLRenderer({ alpha: false });
renderer.setClearColor( 0xC5C5C3 );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var controls = new THREE.OrbitControls( camera, renderer.domElement ); 
var ambientLight = new THREE.AmbientLight( 0xcccccc );
scene.add( ambientLight );
var directionalLight = new THREE.DirectionalLight( 0xffffff );
directionalLight.position.set( 0, 1, 1 ).normalize();
scene.add( directionalLight );      

// Instantiate a loader
var loader = new THREE.GLTFLoader();
loader.load('GLTF_local_coord_sys/GEOTIFF_local_coord_sys.gltf', 
    function(gltf) {
        var object = gltf.scene;
        gltf.scene.scale.set( 0.65, 0.65, 0.65 );              
        gltf.scene.position.x = 1;                  
        gltf.scene.position.y = 1;                  
        gltf.scene.position.z = 1;                  

        scene.add( gltf.scene );
        camera.lookAt(scene.position);
    },
    function ( xhr ) {
        console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
    },
    function ( error ) {
        console.log( 'An error happened' );
    }
);
camera.position.z =25;
function animate() {
    render();
    requestAnimationFrame( animate );
}

function render() {
    renderer.render( scene, camera );
}
render();
animate();

Кто-нибудь знает, как это исправить?

...