Три Js OBJLoader выход выглядит очень неровной - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь загрузить файл .obj через OBJLoader в angularjs. Но вывод очень неровный. obj output

Попытка изменения camera position & perspective (коды прокомментированы), тогда это приводит к очень маленькому выводу, в этом случае мне нужно увеличивать изображение с помощью мыши. Но если я открою тот же файл .obj в 3D Boulder или любом другом инструменте, он выглядит хорошо.

Я настроил камеру и сцену так -

    this.renderer = new THREE.WebGLRenderer({ canvas: this.canvasRef.nativeElement });
    // this.renderer.setSize( window.innerWidth, window.innerHeight );
    // this.renderer.setSize(640, 720);

    // scene
    this.scene = new THREE.Scene();
    this.renderer.setClearColor(0xcdcbcb, 1);

    // camera
    this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.01, 1000);
    // this.camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 0.01, 10000);
    this.camera.position.set(1, 1, 1);
    // this.camera.position.set(0, 0, 1);
    // this.camera.position.set(113, 111, 113);

    this.camera.aspect = window.innerWidth / window.innerHeight;
    this.scene.add(new THREE.AmbientLight(0x222222));
    this.scene.add(this.camera); // required, because we are adding a light as a child of the camera

    // controls
    this.controls = new OrbitControls(this.camera, this.renderer.domElement);

    // lights
    var light = new THREE.PointLight(0xffffff, 0.8);
    this.camera.add(light);

    var geometry = new THREE.BoxGeometry(1,1,1);

Загрузка файла .obj вот так -

    var objLoader = new OBJLoader();
    objLoader.load("../../assets/temp_data/11.obj", function (object) {
      console.log(object);
      this.scene.add(object);
    }.bind(this));
    this.animate();

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

1 Ответ

0 голосов
/ 18 февраля 2020
    this.renderer.setPixelRatio(window.devicePixelRatio);

это работает для меня.

...