MPC-HC: преобразование стереопары 3D в 2D

Иногда может возникнуть желание просмотра уже имеющихся 3D-фильмов в формате стереопары (в контейнере mkv) в отрыве от 3D-телевизора. При этом, соответственно, возникает необходимость сделать из стереопары обычное 2D-изображение. И закономерно стремление использовать для этой цели какой-либо привычный легкий медиаплеер – например, Media Player Classic – Home Cinema.

По сути, задача преобразования 3D-стереопары в 2D-формат сводится к тому, чтобы убрать половину кадра, а остаток растянуть на весь экран. Стандартными средствами плеера MPC-HC это сделать возможно, но затруднительно – нужно для каждого фильма вручную сдвигать и растягивать формат в настройках воспроизведения. Существует более простой и удобный способ – с использованием шейдеров.

Для начала понадобится создать два новых шейдера в MPC-HC: один для горизонтальной стереопары, другой – для вертикальной. Для этого открываем меню Play -> Shaders -> Edit Shaders (либо нажимаем Ctrl+9). В открывшемся окне в первом строковом поле пишем любое название, а ниже в большом окне вставляем непосредственно код шейдеров. Для сохранения нового шейдера достаточно вернуть курсор в строку с его названием и нажать клавишу Enter.

Шейдер для горизонтальной стереопары:

// 3D Side-by-Side to 2D 
  
 sampler s0 : register(s0); 
 float4 p0 : register(c0); 
  
 #define width (p0[0]) 
 #define height (p0[1]) 
  
 float4 main(float2 tex : TEXCOORD0) : COLOR 
 {     
    tex.x = tex.x / 2; 
  
    float4 l = tex2D(s0, tex); 
    float4 r = tex2D(s0, tex); 
  
    float red = l.r; 
    float green = r.g; 
    float blue = r.b; 
     
    return float4(red, green, blue, 1); 
 }

Шейдер для вертикальной стереопары:

// 3D Over-and-Under to 2D 
  
 sampler s0 : register(s0); 
 float4 p0 : register(c0); 
  
 #define width (p0[0]) 
 #define height (p0[1]) 
  
 float4 main(float2 tex : TEXCOORD0) : COLOR 
 {     
    tex.y = tex.y / 2; 
  
    float4 l = tex2D(s0, tex); 
    float4 r = tex2D(s0, tex); 
  
    float red = l.r; 
    float green = r.g; 
    float blue = r.b; 
     
    return float4(red, green, blue, 1); 
 }

Затем остается при помощи меню Play -> Shaders -> Select… выбрать необходимый тип шейдера, после чего активировать выбранное комбинацией клавиш Ctrl+P.

Нужно отметить, что таким образом отображаться будет лишь кадр, предназначенный для одного из глаз в исходном 3D-режиме, и разрешение картинки фильма при этом будет не на высоте. Но для ознакомительного просмотра уже имеющихся 3D-фильмов в 2D-режиме такой способ является вполне приемлемым.

Информация о шейдерах взята с forum.ru-board.com.

This entry was posted in Разное and tagged . Bookmark the permalink.

10 Responses to MPC-HC: преобразование стереопары 3D в 2D

  1. бро says:

    …… не актуально!!!!

  2. aist says:

    Спасибо, помогло быстро настроить любимый MPC-HC для просмотра подвернувшегося стереофильма

  3. GreenJohn says:

    Сделал чуть по другому, чем в этой инструкции, но в целом, получилось. Создал текстовый фаил с расширением hlsl и загрузил его в плеере в разделе управления шейдерами. Потом поставил данный шейдер в блок Post-Resize и потом поигрался с различными вариантами в меню “Вид – Видеокадр”.

  4. some really interesting information, well written and broadly speaking user pleasant.

  5. agronomslk says:

    Метод частично актуален. Теперь нужно вручную создать текстовые файлы с расширением hlsl и уже после открыть их в MPC-HC. Для ознакомительного просмотра пойдет. Для просмотра можно использовать KMPlayer, картинку выдает лучше.

  6. dimas says:

    А можно подробнее, как сделать это в КМР?

  7. Peter says:

    Метод работает.
    Текстовые файлы создать.
    Загрузить в в блок Post-Resize.
    Перезапустить MPC.

  8. Александр says:

    Можно обойтись и без шейдеров, просто создать 2 новых варианта в “Предустановки размеров и положений” в меню “Положение и размер кадра”->”Изменить”->”Новый”.
    Для горизонтальной стерео пары.
    Позиция: 1.0 -> 0.5
    Масштаб: 2.0 -> 1.0

    Для вертикальной стерео пары.
    Позиция: 0.5 ->1.0
    Масштаб: 1.0 ->2.0

    • Александр says:

      Кстати, качество будет выше чем через данные шейдеры, да и выбирать быстрее получится.

  9. FJ says:

    А как сделать наоборот, из 2d в 3d?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>