Я хотел бы написать это в течение некоторого времени... как проект для университета, я написал (с другом) игру, в которой нужны хорошие взрывы и эффекты частиц. мы столкнулись с некоторыми проблемами, которые мы решили довольно элегантно (я думаю), и я хотел бы поделиться знаниями.
Итак, мы нашли этот учебник: Произвести эффект взрыва частицы, который казался достаточно простым для реализации с использованием Java с JOGL. прежде чем я отвечу, как именно мы реализовали этот учебник, я объясню, как выполняется рендеринг:
Камера: это просто ортонормальный базис, который в основном означает, что он содержит 3 нормализованных ортогональные векторы и 4-й вектор, представляющий положение камеры. рендеринг выполняется с помощью gluLookAt
:
glu.gluLookAt(cam.getPosition().getX(), cam.getPosition().getY(), cam.getPosition().getZ(),
cam.getZ_Vector().getX(), cam.getZ_Vector().getY(), cam.getZ_Vector().getZ(),
cam.getY_Vector().getX(), cam.getY_Vector().getY(), cam.getY_Vector().getZ());
так что вектор камеры z
на самом деле является мишенью, вектор y
является вектором "вверх", а положение - это... позиция.
так (если поставить его в стиле вопроса), как реализовать хороший эффект частиц?
PS: все образцы кода и скриншоты в игре (как в ответе, так и в вопросе) берутся из игры, которая размещается здесь: Astroid Shooter