Squeak.ru - шаблоны программирования

Анимация поворота куба с помощью математики (Java)

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

Итак, мой вопрос: как я могу визуализировать такие вещи, как куб в 3D (или есть ли для него хорошие библиотеки) и как я могу использовать эти полярные координаты для его анимации? И есть ли хороший учебник по 3D-рендерингу Java?

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

заранее спасибо

13.01.2015

Ответы:


1

В зависимости от того, хотите ли вы использовать существующую реализацию или хотите создать код для 3D-анимации с нуля, вы можете попробовать это руководство. Программирование графики в этой области может быть довольно сложным; полный ответ на вопрос выходит за рамки этого сайта. Однако есть несколько основных направлений.

  1. Использование векторной математики для трансформации объектов (перенос, поворот). Это можно сделать напрямую или с помощью проективной геометрии с использованием матриц 4 на 4. Последнее проще для конкатенации преобразований.

  2. Отсечение задней поверхности для удаления граней объекта, которые не видны камере.

  3. Использование проекции и модели камеры для преобразования 3D-координат в 2D-координаты.

  4. Использование растеризатора для вывода трехмерной векторной информации на экран. Здесь алгоритм Брезенхэма может быть хорошим началом.

13.01.2015

2

Я бы посоветовал вам взглянуть на одну из 3D-библиотек. Одним из тех, которые я часто использовал и считаю превосходными, является JMonkeyEngine (JME), который разработан для игр, но будет работать ну для ваших нужд. У него также есть отличный учебник, который проведет вас от простого к очень сложному. На самом деле, первый шаг в обучении — это вращающийся цветной куб!

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

13.01.2015
Новые материалы

День 76/100 Книга
День 76/100 Книга Обучение — это непрерывный процесс с ресурсами, широко используемыми людьми, которые признают сложный путь достижения успешной цели. Хотя поначалу это может показаться..

Gmail Smart Compose: умный способ написать электронное письмо
Gmail означает почту Google, это бесплатная служба электронной почты, предоставляемая Google по всему миру. Google официально запустил Gmail в 2004 году, и в настоящее время этой услугой..

API следующего поколения: gRPC n Javascript
gRPC - быстро развивающаяся технология, которая потенциально может заменить протокол HTTP. Это быстрее, чем традиционные HTTP-вызовы, потому что он отправляет данные в двоичном формате, а не в..

Ускоренный курс по жадным алгоритмам
Дай мне, дай мне, дай мне Аудитория Эта статья предназначена для инженеров, достаточно хорошо разбирающихся в программировании, структурах данных и алгоритмах. Он в основном основан на..

Изучайте Java (Урок 2: Комментарии)
Как и зачем использовать комментарии в java с примерами Введение: Комментарии — это строки текста в программе Java, которые игнорируются компилятором и используются для добавления..

Async Await в Swift: легкое управление параллелизмом
Введение в запуск асинхронного кода Асинхронный код выполняет несколько операций одновременно. Параллелизм необходим при выполнении тяжелых вычислений или сетевых запросов. Однако это может..

Очистить файлы Program .cache в Ubuntu 20.10
Очистите кеш за несколько простых шагов! GNU / Linux реализовал эффективное управление хранилищем для своих пользователей. Но заметили ли вы, что в вашей системе Linux заканчивается место,..