Чтобы отобразить второй видовой экран на экране, вы можете включить WebGLRenderer.ScissorTest,
, установить желаемое scissor
, соответственно масштабировать видовой экран и снова визуализировать сцену.Не забудьте clearDepth()
, иначе ничего не будет визуализировано.
Теперь, чтобы изменить поведение камеры, вам нужно добавить в камеру вторую камеру и обновить ее в зависимости от ваших потребностей.Если вы хотите, чтобы он вращался и двигался точно так же, как и полноэкранная камера, вам необходимо обновить эти параметры.
Чтобы сохранить фиксированное состояние масштабирования, вы можете получить нормализованное положение камеры и умножить на установленное расстояние, которое вы хотите использовать.
function animate() {
// render full scene.
// ...
// setup scissor viewport.
renderer.clearDepth(); // important!
renderer.setScissorTest( true );
renderer.setScissor( 20, 20, insetWidth, insetHeight );
renderer.setViewport( 20, 20, insetWidth, insetHeight );
// update second camera.
camera2.position.copy( camera.position.clone().normalize().multiplyScalar( distance ) );
camera2.quaternion.copy( camera.quaternion );
// render small scene.
renderer.render( scene, camera2 );
renderer.setScissorTest( false );
}
Вот рабочий пример https://jsfiddle.net/qwb39spx/