вращение камеры three.js

Я пробую, когда кто-то нажимает на кнопку, чтобы переместить камеру вокруг объекта. Но я не хочу перемещать объект (он должен быть сосредоточен).

Я имею:

и функции js

function MoveUp()
{
    camera.position.y -=50;
}
function MoveDown()
{
    camera.position.y +=50;
}

но это перемещает объект вниз/, когда я нажимаю на кнопку. там возможность состоит в том, чтобы только переместить камеру вокруг и как? Мои объекты - только кубы.. пример:

var geometry = new THREE.CubeGeometry( 50, 50, 50 );
        var material = new THREE.MeshFaceMaterial( [
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'drvo.jpg' ) } ),
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'drvo.jpg' ) } ),
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'drvo.jpg' ) } ),
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'beton.jpg' ) } ),
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'beton.jpg' ) } ),
        new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'beton.jpg' ) } )
    ] );

    cube = new THREE.Mesh( geometry, material );
    cube.position.z = 450;
    scene.add(cube);
1
nl ja de
как примечание стороны, можно просто создать 2 MeshBasicMaterial' s и передают их в многократно, чтобы экономить на ресурсах.
добавлено автор 0xor1, источник

2 ответы

Смотрите на RollControls.js в three.js/examples/js/controls/RollControls.js и также в примерах два справочника. Так как средства управления там, почему попытка сделать это самостоятельно.

1
добавлено

Вы изменяете положение камеры, держа это - ориентация. Я предполагаю, что вы хотите переориентировать камеру так, чтобы она указала на ваш куб (в действительности, сосредоточив его). После того, как вы перемещаете камеру, попробуйте camera.lookAt (cube.position); Это должно быть последней вещью в вашем MoveUp и MoveDown

1
добавлено
what' s неправильно с этим? вы хотите движение быть плавной анимацией вместо того, чтобы просто хватать в место?
добавлено автор 0xor1, источник
Не очень ясный, как это должно работать и как это работает. jsFiddle или снимки экрана помогли бы. Можно всегда использовать TrackBallControls или RollControls вместо того, чтобы катить собственное. Если камера кажется наклоненной боком после lookAt (), можно попытаться установить camera.up собственность (много связанных вопросов на ТАК). Урегулирование только одной оси не даст естественную орбиту, поскольку расстояние камеры немного изменится - чтобы зафиксировать это вам нужна еще некоторая математика, чтобы переместить камеру вокруг воображаемой сферы вокруг объекта. Поскольку примеры смотрят на код различных встроенных Средств управления примером.
добавлено автор yaku, источник
Поэтому, когда вы только изменяете одну ось в функции движения. Камера переместится прямо вдоль той оси в вашем "мире", затем перейдет к вопросу ваш объект. Естественно это будет более далеко от объекта тогда. Чтобы зафиксировать это, вам "нужна еще некоторая математика, чтобы переместить камеру вокруг воображаемой сферы вокруг объекта", таким образом, расстояние камеры от того объекта won' t изменение. Снова, ищите примеры Средств управления или используйте встроенные средства управления, поскольку они уже обращаются с теми вещами или ищут ТАК уже связанные вопросы, на которые отвечают.
добавлено автор yaku, источник
Это работает немного bether, но это не естественное вращение: функционируйте MoveUp() { camera.position.y + =50; camera.lookAt (cube.position);} функционируют MoveDown() { camera.position.y - =50; camera.lookAt (cube.position);} функционируют MoveLeft() { camera.position.x - =50; camera.lookAt (cube.position);} функционируют MoveRight() { camera.position.x + =50; camera.lookAt (cube.position);} функционируют ZoomOut() { camera.position.z + =50; camera.lookAt (cube.position);} функционируют ZoomIn() { camera.position.z - =50; camera.lookAt (cube.position);}, но все еще иногда на одном действии это делает что-то еще
добавлено автор user2050796, источник
Нет, например, когда я нажимаю на MoveRight, он идет право и уменьшение, например... Почему он уменьшает масштаб? После того, как manu щелкает по нему, прекращают вращаться, и это уменьшает масштаб к очень. Я can' t вращаются для 360 степеней, например, вокруг куба....
добавлено автор user2050796, источник
Большое спасибо я теперь смотрю на примеры Средств управления, я попытаюсь осуществить его....
добавлено автор user2050796, источник