Entry tags:
стерево на стереве
Думал про стерео, получаемое из панорам: http://sab123.livejournal.com/374166.html . Просто так взять панораму и предъявить ее же с угловым сдвигом двум глазам нельзя, эффект будет неправильный, поскольку для правильного стееоэффекта оси зрения двух глаз должны быть параллельны, а при таком использованиие панорам они получатся расходящимися. То есть, выглядящими как при суровом косоглазии.
Вместо того надо сделать две панорамы, одна из них будет оригинальной, а вторая скорректированной под поворот оси зрения. То есть, чтобы себе наглядно представить, что нужно делать, можно это представить как два совмещенных набора камер. Если у нас в круге поставлено 16 камер, значит камеры стоят через 22.5 градуса. И вот в одном наборе (скажем, для левого глаза) камеры должны смотреть наружу, а в другом (для правого глаза) - быть повернутыми налево на 22.5 градуса относительно фокусной точки.
На самом деле, конечно, никаких двух наборов камер не надо, а достаточно сконструировать преобразование изображения, которое получается при повороте камеры налево. Я тут порисовал на бумажке, и у меня выходит, что преобразование простое - сдвиг и сжатие по горизонтали.
Интересное последствие заключается в том, что стереобазу (расстояние между глазами) можно регулировать, выбирая разное разнесение точек в левой и правой панорамах, и соответственно меняя угол поворота камеры правой панорамы. Ну, в пределах размера круга, по которому поставлены камеры, и широкоугольности камер (если разносить очень далеко, то в правой панораме наверное начнут образовываться дырки (гм, или не начнутся, над этим можно еще подумать, если захотеть)). То есть, можно делать зум, сохраняя честную величину стереоэффекта.
Заодно эти размышления навели меня на понимание того, какое преобразование делается для формирования панорамы из отдельных фотографий. Ну, помимо совмещения соседних кусков с их возможным поворотом или изменением масштаба. По сути там получается преобразование проекции изображения на плоскую "пленку" в проекцию того же изображения на цилиндрическую "пленку", с нелинейным расширением ближе к углам. После чего эти куски цилиндра можно "склеить" вместе в полный цилиндр. Кстати, для правильного предъявления стереопанорамы человеку надо делать обратное преобразование для каждого показываемого кадра: разворачивать видимый кусок цилиндра в проекцию на плоскости. Ну, или делать вогнутый дисплей в очках. Но разворачивать программно лучше, поскольку тогда можно подстроить псевдовогнутость под индивидуальное расстояние от центра глаза до дисплея.
Вместо того надо сделать две панорамы, одна из них будет оригинальной, а вторая скорректированной под поворот оси зрения. То есть, чтобы себе наглядно представить, что нужно делать, можно это представить как два совмещенных набора камер. Если у нас в круге поставлено 16 камер, значит камеры стоят через 22.5 градуса. И вот в одном наборе (скажем, для левого глаза) камеры должны смотреть наружу, а в другом (для правого глаза) - быть повернутыми налево на 22.5 градуса относительно фокусной точки.
На самом деле, конечно, никаких двух наборов камер не надо, а достаточно сконструировать преобразование изображения, которое получается при повороте камеры налево. Я тут порисовал на бумажке, и у меня выходит, что преобразование простое - сдвиг и сжатие по горизонтали.
Интересное последствие заключается в том, что стереобазу (расстояние между глазами) можно регулировать, выбирая разное разнесение точек в левой и правой панорамах, и соответственно меняя угол поворота камеры правой панорамы. Ну, в пределах размера круга, по которому поставлены камеры, и широкоугольности камер (если разносить очень далеко, то в правой панораме наверное начнут образовываться дырки (гм, или не начнутся, над этим можно еще подумать, если захотеть)). То есть, можно делать зум, сохраняя честную величину стереоэффекта.
Заодно эти размышления навели меня на понимание того, какое преобразование делается для формирования панорамы из отдельных фотографий. Ну, помимо совмещения соседних кусков с их возможным поворотом или изменением масштаба. По сути там получается преобразование проекции изображения на плоскую "пленку" в проекцию того же изображения на цилиндрическую "пленку", с нелинейным расширением ближе к углам. После чего эти куски цилиндра можно "склеить" вместе в полный цилиндр. Кстати, для правильного предъявления стереопанорамы человеку надо делать обратное преобразование для каждого показываемого кадра: разворачивать видимый кусок цилиндра в проекцию на плоскости. Ну, или делать вогнутый дисплей в очках. Но разворачивать программно лучше, поскольку тогда можно подстроить псевдовогнутость под индивидуальное расстояние от центра глаза до дисплея.