3d графика для веб-приложений
Я должен создать веб-приложение, которое, помимо прочего, включает в себя следующие задачи
- Загрузка 3D-модели из базы данных.
- Показать 3D-модель.
- Выполнение вычислений с обратной кинематикой для генерации последовательности шагов для перемещения модели из начальной в конечную позицию.
- Отображать анимацию в реальном времени.
Изначально приложение предназначалось для использования на ПК в Qt/OpenGL, но мы изучаем, возможно ли реализовать его как веб-приложение.
Мои знания по веб-разработке все еще ограничены.
Каков будет рекомендуемый подход / технология, чтобы найти решение для этого?
Спасибо!!
Обновление: Платформа Независимые решения предпочтительнее. Приложение должно работать на компьютерах Mac и Windows.
10 ответов
Если это веб-приложение, вы должны изучить Papervision3D ( http://papervision3d.org/) для подхода, основанного на Flash (так было бы, если вы хотите, чтобы он был относительно независимым от платформы).
Java-апплет, вероятно, будет делать то, что вы хотите тоже.
Посмотрите на Java 3D
Также отличная, но новая O3D от Google: http://code.google.com/apis/o3d/
webgl также интересная альтернатива. нет плагинов, просто OpenGL в браузере (включая шейдеры).
Ну, вы, конечно, не можете сделать все это в HTML, так что это вопрос выбора технологии плагинов.
На мой взгляд, лучшая ставка для вас - это Flash, поскольку это зрелая платформа с множеством сторонних расширений (таких как http://www.flashsandy.org/), позволяющих вам выполнять 3D-моделирование.
Другой альтернативой является Silverlight, который даст вам возможность.NET/C# (вместо сценариев).
Оба кроссплатформенные и кросс-браузерные.
Canvas и JavaScript могут отображать его в зависимости от сложности вашей 3D-модели. Посмотрите этот пример Canvas 3D
Также есть Firefox Canvas 3D Addon и Canvas 3d JS Library для написания 3D-приложений с его использованием.
Я согласен с другими, что Flash, вероятно, ваш лучший выбор. Если в будущем возникнет обеспокоенность по поводу работы на мобильных устройствах Apple, а стоимость - не проблема, обратите внимание на разработку чего-либо с использованием Unity. Это плагин (как Flash), но он не вызвал гнев Стива Джобса.
Есть несколько подходов к этому. Некоторые, которые приходят мне в голову:
- рассмотрите возможность доставки его как компонента ActiveX (самый быстрый, но только для Win32).
- рассмотрите возможность использования.NET (Silverlight) (Win32, OSX, *nix в обозримом будущем через Moonlight; только DirectX/Direct3D)
- рассмотрите возможность использования Java, который также может получить доступ к OpenGL.
- рассмотрите возможность использования любого посредника, с которым вы столкнетесь... должно быть несколько десятков.
Проблемой, вероятно, будет мобильность. Здесь есть два предостережения: ваш код должен работать везде и 3D-ускорение. Это проблема, потому что вы не можете быть уверены, что у него будет 3D (вы можете запросить свой контекст, конечно).
Следовательно, вы также можете рассмотреть возможность растеризации и рендеринга на процессоре (то есть, используя MESA3D). Если вам не нужно разрешать преобразования произвольной формы и вы хотите анимировать, скажем, 30 кадров, и, используя Mesa, вы, возможно, сможете визуализировать 5 кадров в секунду на типичной модели на типичном оборудовании, вам потребуется 6 секунд для расчета всей сцены. Этого было бы достаточно.
Adobe Shockwave обладает мощными возможностями 3D-моделирования. К сожалению, в настоящее время он недостаточно поддерживается, но у Flash нет 3D-функций (проект papervision3d пытается исправить это, YMMV).
Еще один вариант Java, менее интегрированный с JVM, но основанный на OpenGl - lwjgl (мой любимый) и jogl.
Проверьте веб-запуск Jake2: http://bytonic.de/html/jake2_webstart.html