Как написать 3D-графический движок, который можно использовать в JavaScript?[закрыто]

StackOverflow https://stackoverflow.com/questions/1651145

  •  22-07-2019
  •  | 
  •  

Вопрос

Недавно я сосредоточился на рисовании нескольких интересных фигур на холсте HTML 5.0.И я хочу написать 3D-графический движок, который можно будет использовать в JavaScript.Я уже закончил вращающийся куб.И я хочу закончить фигуры, подобные этому примеру: http://gyu.que.jp/jscloth/touch.html.

Кто когда-либо пробовал себя в этой области?

Это было полезно?

Решение

Редактировать:Этот вопрос был задан много лет назад.С тех пор каждый браузер, за исключением IE (на данный момент?) добавлена поддержка webgl.Вы можете увидеть много образцов здесь: http://www.chromeexperiments.com/webgl/

Я действительно не хочу вас обескураживать, но для того, чтобы написать 3D движок в JavaScript, вы должны быть чрезвычайно хорошо разбирающимися в математике / логике, лежащей в основе 3D-рендеринга.

Поскольку вы не указали свой текущий опыт, я предполагаю, что вы этого не делаете ...в таком случае я настоятельно рекомендую вам начать с чего-нибудь другого.Например, Игровая студия XNA.Вы пишете код на C #, и уже существует множество хорошо написанных API, которые абстрагируют большинство (но определенно не все) сложных частей.Но это отличный способ изучить множество концепций и математики, лежащих в основе 3D-рендеринга.

Однако, если вы твердо решили начать с JavaScript, в Интернете уже есть много ресурсов по этому поводу.Например, вот этот :-)
http://dev.opera.com/articles/view/3d-games-with-canvas-and-raycasting-part/

Удачи вам!

Другие советы

Я написал 3D-движок Javascript около года назад, примерно в то время, когда Google выпустила свой браузер Chrome со сверхбыстрым Javascript-движком V8.К сожалению, поскольку ни один браузер не предоставляет API 3D-графики (такой как OpenGL или Direct3D), этот движок искажает растровые изображения на веб-странице, чтобы получить аффинные текстурные треугольники (которые уступают текстурным треугольникам с корректной перспективой), что довольно медленно.

Я использовал свой 3D-движок Javascript для создания Библиотека 3D-моделей.(Подсказка:не просматривайте первую модель - она самая большая и медленная для просмотра!).Производительность составляет около 10 кадров в секунду для 3D-модели с примерно 1000 треугольниками в Google Chrome на моем компьютере.

Я рассматривал возможность открытого поиска исходного кода для этого движка, но у меня так и не нашлось времени сделать это.Если возникнет достаточный интерес, я выложу исходный код в Google Code.

Мой текущий любимый проект - это Silverlight 3D движок и средство просмотра моделей, который представляет собой программный 3D - движок (т. е.мой код на C # контролирует цвет каждого пикселя).Silverlight 3 намного быстрее Javascript, но является нестандартным дополнением для браузера и по-прежнему не поддерживает 3D-графику с аппаратным ускорением (без больших накладных расходов).

Обновить:За время, прошедшее с момента написания этого поста, я обновил упомянутый выше Silverlight model Viewer, чтобы использовать Silverlight 5 и аппаратное ускорение 3D.

Как насчет связывания уже существующей 3D-библиотеки с JavaScript? Как и OpenGL.

V8-GL предоставляет 80% API-интерфейса OpenGL в JavaScript:

alt text

Я не знаю, как бы я поступил, написав его.Но вот некоторые из них, которые существуют.

Для того, чтобы написать его, вам нужно сначала решить, будете ли вы поддерживать Excanvas, чтобы IE мог использовать его или нет.

Это установит некоторые ограничения на то, что вы можете сделать, если вы поддерживаете IE.

Лучше всего начать с создания некоторых основных фигур, и, скорее всего, вам понадобятся определенные примитивы, из которых может быть построено все остальное, поэтому вы можете взглянуть на OpenGL или DirectX, на их примитивы.

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

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

Я думаю, что лучше всего подождать, так как в конце 2007 года в Firefox и Opera появились блоги для поддержки 3D в canvas: http://starkravingfinkle.org/blog/2007/11/animating-with-canvas/

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top