Как добавить другую камеру, используя элементы управления орбитой? - PullRequest
0 голосов
/ 19 февраля 2019

Что у меня есть:

Обратите внимание, что здесь две камеры (одна отображается в трехмерном пространстве, а другая записывает это конкретное пространство).Я использую приведенный ниже код для создания первой / второй камеры и элементов управления орбитой.

enter image description here

//Add First THREE Camera
camera_Main = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
camera_Main.position.set(-2000, 500, 500); //Set camera position
camera_Main_declared = true; //Checks if camera is declared for animate() function

orbitController_Main = new THREE.OrbitControls(camera_Main, renderer_Main.domElement);
orbitController.maxPolarAngle = Math.PI / 2;  
orbitController.enablePan = false;
orbitController.maxDistance = 2800;
orbitController.minDistance = 400;
orbitController.saveState();

//Create Second Camera
camera_RT = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, -100, -500);
var helper = new THREE.CameraHelper( camera_RT );
scene_Main.add( helper );    

Проблема:

То, что я пытаюсь сделать, - это установить другую камеру для контроллера орбиты, чтобы при вызове:

orbitController.?????????? // Set camera_RT as default
orbitController.reset(); //Reset camera_RT orbit controls

он сбрасывал управление орбитой camera_RT а не camera_Main .

1 Ответ

0 голосов
/ 19 февраля 2019

Самый простой способ чередовать управление между двумя камерами - просто объявить два отдельных OrbitControls (), а затем включить / отключить их по мере необходимости:

var oControl_Main = new THREE.OrbitControls(camera_Main, renderer_Main.domElement);
var oControl_RT = new THREE.OrbitControls(camera_RT, renderer_Main.domElement);

// Only main camera is enabled
function enableMain() {
    oControl_Main.enabled = true;
    oControl_RT.enabled = false;
}

// Swap control to RT camera
function enableRT() {
    oControl_Main.enabled = false;
    oControl_RT.enabled = true;
}

Более сложный способ замены элемента управления - это скопироватьисходный код OrbitControls.js , чтобы вы могли отредактировать его и добавить метод, который меняет камеру, на которую ссылается this.object = object.Однако вам также может понадобиться поменять местами два разных состояния со всеми их поворотами и положениями, что может стать сложным.

...