Подтвердить что ты не робот

Оптимизация jMonkey похожа на Java3D

Изменить: для рисования в реальном времени, начал использовать lwjgl, который является базой jmonkeyengine и jocl в "интероперабельности" между opengl и opencl, теперь может вычислять и рисовать 100k частиц в реальном времени. Возможно, мантийная версия движка jmonkey может вылечить эту проблему накладной drawcall.

В течение нескольких дней я изучал jMonkey engine (ver: 3.0) в Eclipse (java 64 бит) и пытался оптимизировать сцену с помощью команды GeometryBatchFactory.optimize(rootNode);.

Без оптимизации (с возможностью изменения позиций сфер):

enter image description here

Хорошо, только 1-fps возникает из-за полосы пропускания pci-express + jvm.

С оптимизацией (без возможности менять положение сфер):

enter image description here

Теперь это 29 fps даже с увеличенным числом треугольников.

Java3D имеет метод setCapability(), который позволяет записывать/записывать объект сцены даже в оптимизированной форме. jMonkey engine 3.0 должен быть способен на эту тему, но я не мог найти никакого следа (поиск учебников и примеров был неудачным).

Вопрос: Как установить read/write position/rotation/scale возможности узлов optimized сцены в jMonkey 3.0? Если вы не можете дать ответ на первый вопрос, можете ли вы сказать мне, почему числа треугольников увеличиваются, когда я использую команду оптимизации? Мне нужно создать новый метод для доступа к графической карте и изменить переменные (jogl, возможно?)?

Информация о сюжете: 16k частиц (сферы 16x16 res) + 1 точечный свет (и его 4096 разрешенная тень).

Я уверен, что мы с легкостью можем отправить несколько тысяч чисел с плавающей запятой в миллисекунду через pci-express.

  • Дополнительная информация: Я использую Aparapi-ядра для обновления частиц позиции, которая занимает 10 миллисекунд (16k * 16k взаимодействий с вычислить силы). (ничего не меняет в оптимизированном режиме:() Может ли aparapi получить доступ к этим оптимизированным данным?

В случае оптимизации batchNode.batch(); здесь снова 1 fps с уменьшенными номерами объектов:

enter image description here

Номер объекта теперь только несколько сотен, но fps все еще на 1!

Отправка только сферных позиций в gpu и возможность вычисления вершинных позиций может быть лучше, чем вычисление вершин на процессоре плюс отправка огромных данных в gpu.

Никто не может здесь помочь? Уже пробовал batchNode, но не помог достаточно.

Я не хочу менять 3d api, потому что люди jMonkey уже изобрели колесо, и я доволен текущей ситуацией. Просто пытаюсь сжать немного больше производительности (отмена теней дает скорость% 100, но качество тоже важно!).

Эта java-программа станет симулятором сцены с астероидом (будет выбран размер астероида, масса, скорость, угол) с алгоритмом маршевых кубов с LOD (будут миллионы частиц).

Алгоритм Marching-cubes значительно уменьшил числа треугольников. Если вы не можете дать какой-либо ответ на вопрос, будут приняты любые маршевые кубы (или любой O (n) выпуклый корпус) для java! Данные: массивы x, y, z в качестве источника и треугольника-полосы в качестве мишени (точки поверхности изоповерхности)

Спасибо.

Вот несколько примеров о потоке (с гораздо меньшим разрешением):

1) Свертывание кубической рок-группы гравитацией: enter image description here

2) Сила отчуждения начинает проявляться: enter image description here

3) Сила исключения + гравитация заставляет группу образовывать более гладкую форму: enter image description here

4) Группа образует сферу (как и ожидалось): enter image description here

5) Затем приближается большое звездное тело: enter image description here

6) О прикосновении: enter image description here

7) Момент удара: enter image description here

С помощью алгоритма Барнса-Хатта и усеченного потенциала числа частиц будут 10x (возможно, 100x) больше.

Вместо алгоритма Marching-Cubes ткань-призрак, которая обертывает nbody, может давать корпус с низким разрешением (более простой, чем BH, но требуется больше вычислений)

Призрачная ткань будет затронута нием (сила тяжести + исключение), но на нее не повлияет ткань, которая ее обертывает. Nbody не будет отображаться, но тканевая сетка будет отображаться с меньшим количеством треугольников.

enter image description here <Т411 >

Если работает MC или выше, это позволит программе сделать обертку для ~ 200x больше частиц.

4b9b3361

Ответ 1

Так жаль....

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

Пакетирование означает, что все геометрии с одним и тем же материалом объединены в одну сетку. Эта оптимизация действует только в том случае, если вы используете только несколько (примерно до 32) материалов. Окупаемость заключается в том, что дозатор получает дополнительное время, когда игра инициализируется

Следовательно, изменение треугольников состоит в том, что они были собраны в одну сетку.... Единственное предложение, если это необходимо, пытается получить на нем сетку и изменяющие точки, но в этот момент я не подумайте, что это имеет смысл.

Возможно, попробуйте другой метод оптимизации.

Удачи, немного не использовали JMonkey, но рад видеть, что другие делают и продолжают расти!

ИЗМЕНИТЬ

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

Возможно, попробуйте 2d-форму как поверхность удара, хотя я знаю, что это не ваш лучший выбор, это может дать вам представление о том, как количество фигур может повлиять и насколько велико. Если это так, то проспект может состоять в том, чтобы рассмотреть, как удалить некоторые из частиц, если это вам не нужно беспокоиться. Я почти уверен, что это будет.

Наконец:

Возможно, в реальном времени не отображается? Потратьте минутку, чтобы нарисовать кадры в буфер, а затем сыграйте, к тому времени, когда вы сыграете, у вас будет еще 40 кадров и т.д.... и, возможно, около 30 секунд стоит все, что вам нужно.

Ответ 2

В вики JMonkeyEngine имеется довольно солидный набор документации, в котором довольно много говорится о том, как использовать преобразования, о которых вы говорите, которые можно найти здесь: Продвинутые пространственные концепции.

Кроме того, имеется довольно немного информации о сетках и их рендеринге, которые вы можете посмотреть здесь: Полигонные сетки.