Создание видео с помощью обработки opengl

Я создаю REST API для динамического создания видео на основе пользовательского ввода и предоставленных типов анимации. Итак, я использую для этого обработку 2.2.1. Я хочу создать 3D-анимацию, используя OPENGL. Но для OPENGL требуется объект Window. Поскольку я использую обработку в фоновом режиме только для создания кадра, как я могу использовать обработку с OPENGL для создания анимированных кадров без интерактивных средств без отображения окна.

Мой пример кода

import com.hamoid.VideoExport;

import processing.core.*;

public class CircleSketch extends PApplet {

    private VideoExport videoExport;

  public void setup() {
    size(400, 400,OPENGL);
    videoExport = new VideoExport(this, "F:/work/tmp.mp4");
    background(0);
  }
  public void draw() {
    background(0);
    fill(200);
    rotateX(radians(50));
    rectMode(CENTER);
    rect(width/2,height/2, 100, 100);
    videoExport.saveFrame();
  }
}

DisplayFrame Класс

public class DisplayFrame extends javax.swing.JFrame {
    public DisplayFrame(){
        this.setSize(600, 600); //The window Dimensions
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        javax.swing.JPanel panel = new javax.swing.JPanel();
        panel.setBounds(20, 20, 600, 600);
        processing.core.PApplet sketch = new CircleSketch();
        panel.add(sketch);
        this.add(panel);
        this.setVisible(false);
        sketch.init(); //this is the function used to start the execution of the sketch



    }



        public static void main(String[] args) {
            new DisplayFrame().setVisible(false);
        }


}

Любое предложение, пожалуйста???


person Sumit Gupta    schedule 05.08.2015    source источник
comment
OpenGL не имеет ничего общего с обработкой. Возможно, верно и обратное. Но мне кажется, что вы должны задавать вопрос в связи с обработкой, а не с OpenGL. Также ваш код не имеет ничего общего с OpenGL API.   -  person Michael IV    schedule 05.08.2015


Ответы (1)


как я могу использовать обработку с OPENGL для создания анимированных кадров без интерактивных средств без отображения окна.

Вкратце: учитывая текущие модели драйверов OpenGL, вы не можете (пока вы хотите использовать GPU для рендеринга). Точка, так оно и есть.

Если вы можете работать с программным рендерингом (медленным), тогда есть OSMesa. Также в обозримом будущем должны произойти изменения в моделях драйверов, позволяющие использовать OpenGL в безголовой среде. До тех пор вам нужно какое-то окно в графической среде, которое фактически активно передает вывод на дисплей (поэтому недостаточно запустить сервер X11 и запустить его в фоновом режиме).

person datenwolf    schedule 05.08.2015
comment
Большое спасибо за ответ. Итак, как я могу запустить обработку с помощью OPENGL в среде Linux-сервера. Нужно ли устанавливать среду рабочего стола, например KDE или сервер X11. - person Sumit Gupta; 05.08.2015
comment
Это хороший точный ответ (+1). @SumitGupta Я бы также провел тест с программным рендерером (может быть, Java3D?) Или преобразовал бы 3D-координаты в 2D и отрисовал в 2D? Обратите внимание, что PApplets по умолчанию создает окно (которое вы можете скрыть позже). Если это проблема, рассмотрите возможность использования простой Java с программной 3D-библиотекой. - person George Profenza; 05.08.2015
comment
@SumitGupta: вам понадобится как минимум сервер X11 и установленные драйверы для вашего графического процессора. В зависимости от вашего дистрибутива обычным пользователям может быть разрешено или не разрешено запускать X-сервер. Как это исправить описано здесь: x.org/wiki/FAQMiscellaneous/#index2h2 ; как только обычный пользователь сможет запустить X-сервер, вы можете использовать xinit <full path to your program binary> <options to your program> -- <options to the X server> запуск вашей программы, работающей на X-сервере. Если у вас есть несколько программ, которым требуется X, вы можете запустить какую-то среду сеанса (для этого работают инструменты DJB daemontools). - person datenwolf; 05.08.2015
comment
@SumitGupta: помните, что X-сервер предлагает другую поверхность для атаки, поэтому, если ваш интернет-сервис будет взломан, он может отскочить от X-сервера, чтобы повысить свои привилегии. Поэтому вы должны быть осторожны с этим. - person datenwolf; 05.08.2015