API для серверной стороны 3D [закрытый] рендеринг

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

9
задан Joshua Carmody 15 September 2008 в 16:18
поделиться

6 ответов

RealityServer с помощью мысленных образов предназначен для выполнения именно того, что здесь описано. Более подробная информация доступна на странице продукта (включая загружаемую версию Developer Edition).

RealityServer docs

6
ответ дан 4 December 2019 в 21:13
поделиться

Yafaray (http://www.yafaray.org/) мог бы быть хорошим предпочтительным вариантом рассмотреть для общего 3D рендеринга. Это довольно быстро, и результаты выглядят большими. Это может использоваться в рамках другого программного обеспечения, например, Блендера 3D разработчик моделей. Лицензия является LPGL.

Если программное обеспечение серверной стороны, оказывается, записано в Python, и желаемая 3D сцена является визуализацией научных данных, изучите MayaVi2 http://mayavi.sourceforge.net/ или в противном случае пойдите для обзора по http://www.vrplumber.com/py3d.py

Те, кто предлагает широко популярный POV-луч, должны понять, что это не библиотека или любой вид объекта, который предлагает API. Процесс серверной стороны должен был бы записать текстовый файл сцены, выполнить новый процесс, чтобы выполнить POV-луч с правильными опциями и взять получающийся файл изображения. Если это легко настроить для конкретного приложения, и если у Вас есть больше экспертных знаний с POV-лучом, чем с другими рендерерами, хорошо пойдите для него!

0
ответ дан 4 December 2019 в 21:13
поделиться

Не так API, а скорее рендерер; Povray? Там также, кажется, существую интерфейс http...

0
ответ дан 4 December 2019 в 21:13
поделиться

Вы могли также посмотреть на Java3D (https://java3d.dev.java.net/), который был бы изящным решением, если бы Ваша серверная архитектура уже была основана на Java.

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

0
ответ дан 4 December 2019 в 21:13
поделиться

Сторона сервера, представляющая только, имеет смысл, если сцена состоит из огромного количества объектов, таким образом, что загрузка набора данных клиенту для клиента, представляющего, была бы слишком медленной, и рендеринг, как ожидают, не будет в в реальном времени. Клиентский рендеринг не является слишком трудным, если Вы используете что-то как jogl вместе с прогрессивной загрузкой сцены (т.е. загружаете основные объекты и рендеринг, затем инкрементно загрузите объекты на основе расстояния от точки наблюдения и перерендеринга).

Если Вы действительно хотите сделать серверный рендеринг, можно хотеть разделить часть веб-сервера, и часть рендеринга на два компьютера с каждым настроила оптимально для их задачи (рендерер имеет карту OpenGL, минимальный HD и как раз достаточно RAM, сервер имеет много быстрых дисков, много поршня, резервных копий и никакого OpenGL). Я очень сомневаюсь, что Вы сможете сделать аппаратный рендеринг на виртуализированном сервере, так как сервер, вероятно, не имеет GPU.

0
ответ дан 4 December 2019 в 21:13
поделиться

В идентификаторе говорится, что Ваш лучший выбор, имеют приложение Direct3D/OpenGL, работающее на сервере (не останавливаясь). Затем создание страницы сервера отправить запрос к приложению рендеринга, и имеет приложение рендеринга snend jpg/png/whatever назад.

  • Если Direct3D/OpenGL должен замедлиться для рендеринга сцены в аппаратных средствах, то любой программный продукт будет хуже
  • Поддерживают приложение рендеринга в рабочем состоянии, Вы избегаете издержек создания/уничтожения структур, backbuffers, буферов вершины, и т.д. Вы могли потенциально представить просто сцена 100 времен секунда.

Однако много серверов не имеют видеокарт. Direct3D largly бесполезный в программном обеспечении (от г-жи существует эмулированное устройство, но его единственная польза для тестирования производит), никогда испытанный OpenGL в программном обеспечении.

4
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: