![]() |
|
:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №7 (31.08.2001) Просмотров: 6387
Автор: Станислав Юдин. Рубрика: Читатель читателю. Номер: №7 (31.08.2001). Стереограммы на спектруме (Часть 2)(Окончание, начало в № 6.)Остался невыясненным вопрос: как же зависит расстояние между однородными точками стереограммы от цвета точки на картинке. Прежде всего, скажу, что расстояние может варьировать от 32 до 64 пикселей. Чем меньше расстояние между точками, тем ближе будет объект ими обозначенный и наоборот, чем больше расстояние, тем дальше будет объект. Замечу, что чем больше расстояние между точками, тем проще увидеть объемное изображение. И уж совсем непросто на экране Спектрума увидеть стереограмму, на которой одновременно встречаются расстояния 32 и 64 пикселя. Для разрешения 192х256 наиболее оптимальны расстояния 32-40 пикселей при восьмиплановой картинки или 32-48 при шестнадцати планах. Таким образом, становится очевидным, что стереограммы, которые встречаются в некоторых demo (например, в MQM-5) не были получены на Спектруме, а лишь конвертированы с других платформ. Дело в том, что на Спектруме на одном знакоместе удастся получить только два (по количеству цветов) плана, в то время как в той же MQM-5 их больше. Конвертер должен четко отличать одну точку от другой, для этого и используются цвета. Зная, что для формирования цвета пикселя на Спектруме используется три бита и еще два, отвечающие за BRIGHT и FLASH, получаем 5 бит на цвет, итого 32 цвета или 32 плана. Однако визуально, рисуя картинку, не получится отличить между собой просто черный цвет, яркий черный цвет, яркий мигающий черный цвет и т.д. Может быть кому-нибудь удастся использовать триколорные и мультиколорные картинки или Gigascreen для получения стереограмм - в этом случае будет снято ограничение на два плана на знакоместо. С программной точки зрения сложностей здесь нет, но, на сколько я знаю, для этих режимов не существует полноценных графических редакторов, поэтому подготовить картинки для конвертирования не представляется возможным. А сейчас мне хочется остановиться на способе просмотра подобных картинок. Сразу же оговорюсь, что тот «мусор», который возникает на экране в процессе конверсии и есть трехмерная картинка, ее нужно только увидеть. Увидеть объемную картинку может ЛЮБОЙ человек, независимо от остроты зрения, единственное непременное условие: наличие обоих глаз. Если Вы четко видите точки на экране, то Вы увидите и стереоизображение. Вспомогательные символы помогут Вам настроится на объемную картинку, но они немного портят стереограмму. Ими стоит пользоваться на первых порах, когда настройка на картинку вызывает затруднение. В дальнейшем, когда Вы научитесь быстро настраиваться на трехмерное изображение, от вспомогательных символов стоит отказаться, но это дело вкуса. Итак, посмотрите на два вспомогательных символа вверху стереограммы, а теперь попытайтесь посмотреть сквозь них, за плоскость поверхности экрана. Изображение потеряет резкость, а вспомогательные символы начнут двоиться и вместо двух четких значков Вы увидите четыре расплывчатых, постарайтесь не акцентировать внимание на значках и продолжать смотреть сквозь них. Значки начнут медленно продолжать раздваиваться (здесь нужно терпеливо ждать пока ваши глаза сделают эту работу за Вас) до тех пор, пока два центральных не сольются воедино. Теперь вместо четырех значков Вы увидите три, причем центральный значок Вы должны увидеть четко и резко, зафиксируйте свое внимание на нем, привыкните к этому фокусу зрения. Медленно переведите свой взгляд вниз, Вы должны видеть четко, до каждого пикселя, трехмерное изображение. Вы можете перемещаться взглядом по всей картинке, как если бы она была обычным рисунком. Возможно, в первый раз потребуется слишком много времени, чтобы научится смотреть стереограммы, но поверьте, оно стоит того. В следующий раз настроится на объемное изображение будет гораздо проще. Если по каким-либо причинам, мое объяснение, как смотреть картинки, оказалось непонятным, я приведу способы просмотра все из того же буклета «Новое измерение», только имейте ввиду, что эти способы описаны для конкретной печатной книги. «Наилучший способ увидеть трехмерное изображение на обложке этой книги! Посмотрите на свое отражение на глянцевой обложке этой книги. Картинка становится расплывчатой (не в фокусе). Именно такого результата и следует добиться. Если двухмерная поверхность картинки не станет расплывчатой, не появится и трехмерное изображение. Сосредоточив внимание на своем отражении, расслабьтесь. Иногда приходится подождать несколько минут, но уверяем вас, вы не зря потратите время. Вы почувствуете, как что-то начинает происходить. Продолжайте смотреть, и вскоре появится изображение. После того как вы увидите трехмерное изображение в первый раз, с каждым разом вам будет все проще и проще добиться этого результата. Далее в книге вы найдете описания других способов увидеть магические изображения в тех случаях, когда поверхность картинки не дает вашего отражения. Способ 2. Смотрите на картинку, но не фиксируйте внимание на конкретной точке. Расслабьтесь и не напрягайте зрение. Через некоторое время вам покажется, будто что-то происходит. Картинка начнет изменяться. По-прежнему не напрягайтесь - ваши глаза все сделают сами. А от вас требуется лишь терпение. Обычно вначале появляется рельефное изображение лишь части рисунка. Продолжайте смотреть, не сосредоточиваясь на какой-то определенной точке, и перед вами возникнет рельефное изображение рисунка целиком. Способ 3. Поднесите картинку к кончику носа. Вы увидите совершенно расплывчатое изображение. Дайте глазам привыкнуть. Затем, не меняя направления взгляда, медленно отодвигайте картинку, пока она не окажется на расстоянии вытянутых рук. Вы должны увидеть изображение. В противном случае проделайте все сначала. Несколько попыток должны увенчаться успехом. Существуют различные приемы рассматривания стереоскопических изображений. Но в любом случае главное - не фиксировать взгляд, оставляя рисунок нечетким. Если вы не увидели изображение с первой попытки, не отчаивайтесь - такое случается часто. Но не будьте слишком настойчивы, ведь вы вынуждаете глаза проделывать непривычные упражнения и рискуете их утомить. Лучше повторить попытку через некоторое время. Способ 4. Это так называемый метод «сквозного видения». При этом способе взгляд фиксируют за виртуальным изображением. Во время этого процесса рисунок начинает утрачивать четкость и происходит автоматическая аккомодация глаза. Как и в предыдущих случаях, не напрягайтесь. Когда вы привыкнете к таким упражнениям, возможно, именно этот способ поможет вам наиболее быстро увидеть скрытое изображение. Все рисунки этой книги задуманы, чтобы видеть их как бы в зеркале. Однако как только вы освоитесь с таким типом стереоскопической визуализации, поупражняйтесь смотреть на них, слегка скосив глаза к носу. Чтобы овладеть такой техникой, вам потребуется некоторое время, но в результате вы получите скрытое изображение в отраженном виде. На приведенном ниже рисунке наглядно показано, как это происходит:
Тренированные читатели могут проверить этот способ, если они с легкостью видят все картинки этой книги. Получив одно стереоскопическое изображение, вы можете увидеть и другое. Для этого подождите, пока появится стереоскопическое изображение, и отыщите внутри него широкую плоскую поверхность. Поупражняйтесь с помощью одного из вышеописанных способов, добиваясь того, чтобы эта поверхность стала нерезкой. Будьте терпеливы, такой метод требует большой сосредоточенности, и вам может показаться, что вы начинаете с нуля. Но постепенно перед вами появится измененная версия первого изображения. Теперь вы видите только этот второй вариант. На практике некоторым удается получить до трех вариантов. Однако это значительно труднее, почти невозможно с изображениями, на которых не удается обнаружить широкой плоской поверхности. И не старайтесь сразу добиться полного успеха, поскольку это занятие создает большую нагрузку на глазные мышцы.» В конце статьи я привожу свою программу, которая позволяет конвертировать картинку в 8 планов. Программа не идеальна, ее можно еще долго оптимизировать, но, не смотря на это, она вполне работоспособна и может послужить основой для полноценного конвертера или plug-in’а к графическому редактору. ; ПРОГРАММА ДЛЯ ПРЕОБРАЗОВАНИЯ ВОСЬМИЦВЕТНОЙ КАРТИНКИ,
; ЗАГРУЖЕННОЙ ПО АДРЕСУ #C000, В СТЕРЕОГРАММУ
; (С) Станислав Юдин
; г. Владивосток, 2001
ORG #8000
;Устанавливаем черный бордюр и очищаем экран
DI
XOR A
OUT (#FE),A
LD HL,#4000
LD DE,#4001
LD BC,#17FF
LD (HL),L
LDIR
LD HL,#5800
LD DE,#5801
LD BC,#02FF
LD (HL),#47
LDIR
;Заносим исходные адреса конвертируемой картинки и стереограммы
LD HL,#C000
LD (ADR_SCR),HL
LD HL,#4000
LD (ADR_3D),HL
;Задаем количество строк на экране
LD B,#C0
NEXT_LN PUSH BC
;Заполняем строку случайными точками
LD B,#FF
XOR A
LINERND PUSH BC
PUSH HL
PUSH AF
RND0 LD HL,#0000
LD A,H
OR L
JR NZ,RND1
INC L
RND1 SLA L
RL H
BIT 7,H
JR Z,RND2
CCF
RND2 BIT 5,H
JR Z,RND3
CCF
RND3 BIT 4,L
JR Z,RND4
CCF
RND4 JR NC,RND5
SET 0,L
RND5 LD (RND0+1),HL
POP AF
RR L
POP HL
CALL POINT
INC A
POP BC
DJNZ LINERND
;Задаем количество пикселей в строке, которое будем обрабатывать
LD B,#DF
XOR A
NEXT_PT PUSH BC
PUSH AF
;Начинаем проверку цвета точки на картинке
LD HL,(ADR_SCR)
PUSH AF
LD A,H
AND #18
LD H,A
RLC L
RLC L
RLC L
LD A,L
AND #07
OR H
LD E,A
LD D,#00
POP AF
PUSH AF
CHECK1 SUB #08
JR C,CHECK2
INC D
JR CHECK1
CHECK2 LD A,E
AND #18
SRL A
SRL A
SRL A
OR #D8
LD H,A
LD A,E
AND #07
OR A
RRA
RRA
RRA
RRA
ADD A,D
LD L,A
POP AF
PUSH HL
LD HL,(ADR_SCR)
CALL XPIXEL
POP HL
PUSH AF
LD A,(HL)
JR C,CHECK3
RRA
RRA
RRA
CHECK3 AND #07
;Зная цвет точки, вычисляем расстояние до дополнительной точки стереограммы
LD HL,TABLE
LD D,#00
LD E,A
ADD HL,DE
LD B,(HL)
;В нужном месте зажигаем или гасим
;пиксель
POP AF
LD HL,(ADR_3D)
PUSH BC
CALL XPIXEL
POP BC
RR D
ADD A,B
JR C,NO_PT
RL D
CALL POINT
NO_PT POP AF
INC A
POP BC
;Переходим к обработке следующего пикселя
DEC B
JP NZ,NEXT_PT
;Переходим к следующей линии картинки и стереограммы
LD HL,(ADR_SCR)
LD DE,#0020
ADD HL,DE
LD (ADR_SCR),HL
LD HL,(ADR_3D)
ADD HL,DE
LD (ADR_3D),HL
POP BC
DEC B
JP NZ,NEXT_LN
;Ставим вспомогательные символы и возвращаемся
XOR A
LD (#582C),A
LD (#5834),A
RET
;-----------------------------
;Подпрограмма проверки пикселя
;Входные параметры:
;HL - адрес строки
;A - номер точки в строке
;Выходные параметры:
;CY=1 пиксель зажжен
;CY=0 пиксель потушен
XPIXEL PUSH HL
PUSH AF
XPIXEL2 SUB #08
JR C,XPIXEL1
INC L
JR XPIXEL2
XPIXEL1 ADD A,#08
LD B,A
INC B
LD A,(HL)
XPIXEL3 RLA
DJNZ XPIXEL3
RR H
POP AF
RL H
POP HL
RET
;--------------------------------
;Подпрограмма установки и удаления пикселя
;Входные параметры:
;HL - адрес строки экрана
;A - номер точки в строке
;CY=1 - поставить пиксель
;CY=0 - удалить пиксель
POINT PUSH HL
PUSH AF
POINT1 SUB #08
JR C,POINT2
INC L
JR POINT1
POINT2 ADD A,#08
LD B,A
INC B
XOR A
SCF
POINT3 RRA
DJNZ POINT3
LD B,A
POP AF
PUSH AF
LD A,B
JR NC,POINT4
OR (HL)
JR POINT5
POINT4 CPL
AND (HL)
POINT5 LD (HL),A
POP AF
POP HL
RET
;Переменные, хранящие текущие адреса обрабатываемых строк картинки и стереограммы
ADR_SCR DEFW #0000
ADR_3D DEFW #0000
;Таблица соответствия цвета (порядковый номер) глубине плана (число)
TABLE DEFB 64,63,62,61,60,59, 58,57(С) Станислав ЮДИН Ссылки по теме:Стереограммы на спектруме (Часть 1) [№6] |