Хобрук: Ваш путь к мастерству в программировании

Фреймворк WebGL — какой лучший выбор? X3ДОМ?

Я собираюсь запустить веб-приложение, которое будет использовать интерактивный 3D-контент. Цель состоит в том, чтобы позволить ему работать в браузере, т. е. не разрешен Flash, только JavaScript + HTML5.

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

Подход X3DOM мне видится отличным - и похоже он должен стать нативным в браузере и либа проложит дорогу.

Но после первых впечатлений я не уверен, что он достаточно легкий. Помимо JS-файла размером 400 КБ, он замедляет работу Firefox.

Функций, которые мне нужны, не так много. Всю настройку сцены можно было легко сделать «вручную». Но мне нужно взаимодействие с пользователем, в том числе, чтобы выяснить, где пользователь нажимает. А позже я хочу иметь возможность загружать и вставлять 3D-объекты в общий формат файла.

PS: Предпочтительные браузеры основаны на Firefox и Webkit. Десктопные и мобильные. Меня не волнует IE.

PPS: Да, я знаю вопрос: WebGL Framework

04.12.2011

  • Чтобы добавить больше информации в моем случае: я знаком с OpenGL со старых времен, то есть без шейдеров. Но это не будет большим шагом для меня. Необходимая математика в моем случае тоже не проблема — она мне уже нужна для настройки отображения данных :) 05.12.2011
  • Этот вопрос задавался довольно часто, и есть обширный список здесь. Кроме того, лично я бы проголосовал за Three.js, потому что он бесплатный, активно развивается и кажется самым популярным. 05.12.2011
  • Спустя 3-4 года после этих ответов я должен добавить это: x3dom удивительно прост для простых сцен, это может быть хорошим выбором. Но он ограничен, если вам нужно, например, создать свои собственные функции, добавить прослушиватели событий и т. д. Threejs сейчас стоит более 400Ko, но вы можете сделать свою собственную сборку из исходных файлов. Так что для меня это Three.js без каких-либо сомнений, даже после первого года работы. В зависимости от вашего приложения вы можете изменить параметры рендеринга для повышения производительности, также доступны резервные варианты. 22.03.2015

Ответы:


1

X3DOM великолепен, если вы пришли из X3D (и разрабатывались замечательными людьми), но если у вас нет никаких предпочтений, я бы выбрал Three.JS.

05.12.2011
  • Сейчас я использую Three.JS. Помимо отсутствия документации (=> прочитайте пример кода и спросите в IRC), я очень удивлен, что почти не вижу проективной геометрии/однородных координат. Это может ограничить меня позже, но до сих пор это делает то, что мне нужно, и даже дает мне тени бесплатно. 24.02.2012

  • 2

    Я просмотрел большинство фреймворков WebGL только на прошлой неделе, и действительно кажется, что почти каждый из них находится в диапазоне 300 КБ. Для меня это тоже слишком тяжело. К счастью, я нашел lightgl.js, в котором есть все необходимое для начала работы, 28 КБ, лицензия MIT.

    Главное для меня — это просто абстрагирование канваса, шейдера и инициализация текстуры. Но в lightgl.js также есть некоторая обработка мыши и загрузка модели и т. д.

    20.02.2012

    3

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

    x3dom: его использование x3d для описания сцены поддается более дизайнерскому подходу, просто добавив x3dom css и js, можно сделать это:

    <X3D><Scene><Shape><Box/></Shape</Scene></X3d>
    

    three.js: позволяет создавать сцены только с помощью javascript, и требуется много дополнительного кода только для настройки холста. просмотрите исходный код этого простого примера блока: http://stemkoski.github.com/Three.js/Template.html

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

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

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

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

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

    #Day68 из #100days_of_coding
    Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..