Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №7 (31.08.2001) Просмотров: 6021

    Автор: Станислав Юдин.

    Рубрика: Читатель читателю.

    Номер: №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. Это так называемый метод «сквозного видения». При этом способе взгляд фиксируют за виртуальным изображением. Во время этого процесса рисунок начинает утрачивать четкость и происходит автоматическая аккомодация глаза. Как и в предыдущих случаях, не напрягайтесь. Когда вы привыкнете к таким упражнениям, возможно, именно этот способ поможет вам наиболее быстро увидеть скрытое изображение. Все рисунки этой книги задуманы, чтобы видеть их как бы в зеркале. Однако как только вы освоитесь с таким типом стереоскопической визуализации, поупражняйтесь смотреть на них, слегка скосив глаза к носу. Чтобы овладеть такой техникой, вам потребуется некоторое время, но в результате вы получите скрытое изображение в отраженном виде.

    На приведенном ниже рисунке наглядно показано, как это происходит:

    http://abzac.retropc.ru/images/i07_stereo3.gif

    http://abzac.retropc.ru/images/i07_stereo3.gif

    Тренированные читатели могут проверить этот способ, если они с легкостью видят все картинки этой книги. Получив одно стереоскопическое изображение, вы можете увидеть и другое. Для этого подождите, пока появится стереоскопическое изображение, и отыщите внутри него широкую плоскую поверхность. Поупражняйтесь с помощью одного из вышеописанных способов, добиваясь того, чтобы эта поверхность стала нерезкой. Будьте терпеливы, такой метод требует большой сосредоточенности, и вам может показаться, что вы начинаете с нуля. Но постепенно перед вами появится измененная версия первого изображения. Теперь вы видите только этот второй вариант. На практике некоторым удается получить до трех вариантов. Однако это значительно труднее, почти невозможно с изображениями, на которых не удается обнаружить широкой плоской поверхности. И не старайтесь сразу добиться полного успеха, поскольку это занятие создает большую нагрузку на глазные мышцы.»


    В конце статьи я привожу свою программу, которая позволяет конвертировать картинку в 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

    (С) Станислав ЮДИН
    г. Владивосток
    e-mail: speccy@softhome.net
    FIDO: 2:5045/78.4
    ZXNet: 500:4232/1


    Ссылки по теме:

    Стереограммы на спектруме (Часть 1) [№6]


    © 2004-2013 Perspective group