Автоповорот WebGL Globe - PullRequest
       28

Автоповорот WebGL Globe

0 голосов
/ 25 апреля 2018

Я работаю с этим удивительным экспериментом, WebGL Globe , и это действительно потрясающе.

Я изменил некоторые функции, чтобы играть и адаптировать их к тому, что я хочу.Одним из них является функция рендеринга.

ОРИГИНАЛ:

function render() {     
    zoom(curZoomSpeed);

    rotation.x += (target.x - rotation.x) * 0.1;
    rotation.y += (target.y - rotation.y) * 0.1;
    distance += (distanceTarget - distance) * 0.3;

    camera.position.x = distance * Math.sin(rotation.x) * Math.cos(rotation.y);
    camera.position.y = distance * Math.sin(rotation.y);
    camera.position.z = distance * Math.cos(rotation.x) * Math.cos(rotation.y);

    camera.lookAt(mesh.position);

    renderer.render(scene, camera);
}

ИЗМЕНЕНО:

function render() {
    var timer = Date.now() * 0.0001;

    zoom(curZoomSpeed);

    rotation.x += (target.x - rotation.x) * 0.1;
    rotation.y += (target.y - rotation.y) * 0.1;
    distance += (distanceTarget - distance) * 0.3;

    camera.position.x = (Math.cos( timer ) *  960);
    camera.position.y = distance * Math.sin(rotation.y);
    camera.position.z = (Math.sin( timer ) *  960) ;

    camera.lookAt( scene.position );

    renderer.render(scene, camera);
}

Теперь мой глобус автоматически вращается, но я не могу перетащить глобус иповерните его с помощью мыши по осям X и Z, только Y. Как я могу использовать эту функцию автоповорота и не потерять управление поворотом с помощью мыши в осях X и Z?

1 Ответ

0 голосов
/ 26 апреля 2018

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

Однако, специально для вашего случая: семантика установки camera.position.x/y/z и последующего camera.lookAt() означает, что этот код не вращает земной шар, он вращается вокруг камеры, вокруг места, где оказывается глобус.Это хорошо, потому что, вероятно, есть отдельное место, где вы могли бы вращать земной шар, это можно назвать «преобразованием модели» или чем-то подобным.
Если сам подход подходит для используемой платформы / движка,Я предлагаю выполнить синхронизированное вращение на самой модели, и вращение камеры можно выполнить с помощью мыши с использованием оригинального фрагмента кода (тем более что вещь distance явно связана с камерой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...