The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Представлен Zdog 1.0, псевдо-3D движок для Web, использующий Canvas и SVG

30.05.2019 10:57

Доступен выпуск JavaScript-библиотеки Zdog 1.0, реализующей 3D-движок, выполняющий симуляцию трехмерных объектов на основе векторных примитивов Canvas и SVG, т.е. реализующий трёхмерное геометрическое пространство с фактической отрисовкой плоских форм. Код проекта открыт под лицензией MIT. Библиотека насчитывает всего 2100 строк кода и занимает 28 Кб без минификации, но при этом позволяет создавать достаточно эффектные объекты, близкие по характеру к результатам работы иллюстраторов.

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

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

Составные элементы объектов обрабатываются с учётом их относительных позиций и скрепления невидимыми якорями. Все динамические свойства, такие как преобразования, вращения и масштабирования, представляют собой векторные операции, задаваемые при помощи объекта Vector. Для пространственных объектов поддерживаются полигональные сетки.

  1. Главная ссылка к новости (https://github.com/metafizzy/z...)
  2. OpenNews: Компания NVIDIA выпустила открытый движок симуляции физических процессов PhysX 4.0
  3. OpenNews: Компания Tracktion открыла движок для создания звуковых приложений
  4. OpenNews: Игровой движок Xenko переведён в разряд свободных проектов
  5. OpenNews: Google выпустил движок для симуляции физических процессов LiquidFun 1.1
  6. OpenNews: Duktape - компактный встраиваемый JavaScript-движок
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50777-zdog
Ключевые слова: zdog, 3d, web, canvas, javacript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:01, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > с фактической отрисовкой плоских форм

    Так, погодите-ка. А что, те игры, которые зовутся "3д-играми", разве фактически выводятся не на плоском (2д) мониторе?

     
     
  • 2.3, Ordu (ok), 11:15, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    На каком мониторе они выводятся -- это целиком и полностью юзерэнд история, здесь же речь идёт о внутренней реализации.
     
  • 2.24, Аноним (24), 18:20, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Твои глаза тоже видят мир в 2d, словно смотришь в монитор. Что в мир смотришь, что в монитор.
     
     
  • 3.25, pXeL (?), 18:49, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    в том то и дело, что 2 глаза - это стерео - ты можешь оценить растаяние - это 3Д. А если на мир смотреть 1 глазом, то растояние не сможешь определять - это есть 2Д
     
     
  • 4.30, Аноним (30), 20:45, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как ни странно, но даже с одним глазом можно прекрасно это делать. А вообще - странное у вас определение 3Д...
     
     
  • 5.31, Kuromi (ok), 21:36, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет, с одним глазом тут в работу включается ваш мозг и его накопленный опыт - расстояние до предметов определяется за счет имеющихся сведений о конфигурации помещений и объектов в них. Даже для незнакомых помещений это работает просто в силу экстрополяции. А вот когда одним глазом смотришь на всякие оптические головоломки - это уже не рабоатет.
     
     
  • 6.37, Аноним (37), 06:39, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > включается ваш мозг и его накопленный опыт - расстояние до предметов определяется за счет имеющихся сведений о конфигурации помещений и объектов в них.

    можно просто сказать "используется натренированная нейросеть"

     
  • 4.43, Аноним (43), 12:12, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А если с одним глазом перемещаться влево-вправо, можно определить с помощью параллакса движения. Так  некоторые животные делают, типа белок, у которых два глаза, но они расположены по бокам и бинокулярного зрения нет.

    https://en.wikipedia.org/wiki/Depth_perception

     
     
  • 5.46, Аноним (46), 13:48, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И люди так могут. Вот например эта картинка должна восприниматься как трёхмерная:
    (Простите на ссылку через Гугл) https://urlzs.com/YTiwF
     
     
  • 6.47, Аноним (46), 13:54, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    PS: Так как у меня отключён показ картинок, я не знаю - является ли эта картинка подходящей. Но анимированные картинки которые воспринимаются как трехмерные за счёт перемещения по горизонтальной оси - существуют.
    Простите если это - не она. Я же их не смотрел.
     
  • 6.50, Аноним (43), 15:49, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    На видео с вертикальными белыми линиями используется эффект перекрытия. Когда на картинке один предмет перекрывает другой, он нами воспринимается как расположенный более близко. Тут белые линии сначала как бы находятся в плоскости экрана спереди, а движущийся объект позади, но потом всё меняется и уже он перекрывает их, и создаётся иллюзия выхода за пределы экрана.

    Люди, да, используют много признаков для восприятия глубины. Стерео - только один из них. Художники знают кучу приёмов для передачи объема на плоской бумаге.

     
  • 3.49, Аноним (49), 15:36, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не видишь в мире объёма?!? Как же это грустно жить по плоскому в плоскости. Бедненький...
     
  • 2.26, Канделябры (?), 19:59, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    За пределами Линукса они уже выводятся даже в шлемы виртуальной реальности с полным 3D 360.
     
     
  • 3.41, AlexYeCu_not_logged (?), 10:35, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >За пределами Линукса они уже выводятся даже в шлемы виртуальной реальности с полным 3D 360.

    Во-первых, в Линуксе поддержка VR-шлемов таки есть.

    Во-вторых, ты этими самыми шлемами пользовался?
    Даже довольно новые vive-pro вызывают далеко не самые положительные эмоции. А уж для работы использовать ЭТО.. Я, кстати, как раз использую иногда, всегда радуюсь, если можно на коллегу такое «счастье» спихнуть.

     
  • 2.39, commiethebeastie (ok), 10:04, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не думал, что встречу здесь человека не знающего что такое оси координат.
     

  • 1.2, Аноним (2), 11:14, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Автор на гитхабе к каждому коммиту ставит Эмодзи. Это какая-то болезнь?
     
     
  • 2.4, Ordu (ok), 11:18, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это выглядит как наконец-таки найденное семантически полезное применение эмодзи.
     
     
  • 3.13, Наноним (?), 15:02, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как хорошо, что в юзер-стилях эта пёстрая говнина легко отключается
     
     
  • 4.15, Аноним с портфелем (?), 15:13, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Установи Symbola шрифтом для эмодзей в браузере, будут олдскульно монотонные (цвета текста).
     
  • 2.20, iPony129412 (?), 16:51, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • –8 +/
    > Автор на гитхабе к каждому коммиту ставит Эмодзи. Это какая-то болезнь?

    Я вот боюсь в мэсаджах к коммитам писать Эмоджи 😞
    Вот это и есть болезнь ака фобия. Ещё со времен старых 💾
    Тебя с детства вогнали в рамки. Там 8.3 в именах фалов и тому подобное...
    И даже до сих пор оно не проходит.
    Если бы пользовался одной macOS, то наверно бы не боялся.
    А автору можно только по аплодировать 👏 - он не боится.

     
     
  • 3.28, Аноним (28), 20:26, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Вот это и есть болезнь ака фобия.

    не, это в тебе еще осталось что-то человеческое, может это уважение к другим.

     
  • 3.32, Аноним (32), 23:48, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Устрой каминаут, пони. Ты должен быть горд за то, что используешь эмоджи, разве не так? Потом еще парады проводить будете, за права бороться. У пьяных вдвшников на 2 августа новый объект для побоев появится опять же.
     
  • 2.33, Аноним (33), 01:35, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А у вас что эмодзифобия?
     
     
  • 3.40, жабабыдлокодер (ok), 10:31, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Логично, чё. Если человек не есть экскременты и не обмазывается ими, значит - у него копрофобия.
     

  • 1.5, Аноним (5), 12:31, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    > реализующий трёхмерное геометрическое пространство с фактической отрисовкой плоских форм

    Раньше это называли емким словом "изометрия".

     
     
  • 2.8, Аноним (8), 13:00, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Крепко сжать карандаш обеими рукам и держать его неподвижно с максимальным усилием?
     
  • 2.9, Аноним (9), 13:22, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Изометрия это не способ отрисовки, а проекция. Полно изометрических игр, использующих честное 3D (и даже воксели бывали, см. Hexplore).
     
     
  • 3.11, тоже Аноним (ok), 13:34, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Главное отличие для компьютера - в том, что "честное 3D" делает проекцию из точки. Со всеми вытекающими расчетами.
    Изометрическая проекция на плоскость математически куда проще.
    Например, на приведенных картинках зубцы шестеренки в честном 3D отличались бы шириной на передней стороне и на задней. В изометрии они одинаковы.
     
     
  • 4.35, Аноним (9), 02:43, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хотите сказать, что в 3D (ну opengl там, скажем, или прости г-ди D3D) мы не сможем сделать честную изометрию? Ой-ой.
     
  • 2.34, Аноним (33), 01:38, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не факт что изометрия. Спрайты из дума под эту формулировку очень подходят. И даже спрайтовые взрывы в современных играх
     

  • 1.6, Аноним (6), 12:33, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Прикольная вещь!
     
  • 1.7, НяшМяш (ok), 12:41, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фигурка человечка выглядит стрёмно. Самое то изометрические хорроры делать.
     
     
  • 2.10, тоже Аноним (ok), 13:27, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Собственно, серия Alone In the Dark примерно так и делалась.
    Графика внушала отдельный ужас ;)
     

  • 1.12, Аноним (12), 14:33, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Кто-то пилит WebGL и WebGPU, а кто-то костылики с софт-рендером на канвасе
     
     
  • 2.18, Аноним (18), 15:27, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зато такие костылики будут работать хоть на одноплатниках.
     

  • 1.14, Наноним (?), 15:09, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Zdog și Zdug
     
  • 1.16, Аноним (16), 15:13, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    так вот куда катится вся современная иллюстрация -- к примитивам.
     
     
  • 2.21, Попугай Кеша (?), 16:58, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это лишь проекция сознания. Какое сознание - такая и проекция ) Бытие определяет сознание ) Сознание определяет вектор
     
     
  • 3.23, имя (?), 17:45, 30/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ну да, а скьевоморфизм конца нулевых-начала десятых стало быть является высшей точкой развития графики.
     
     
  • 4.38, Аноним (38), 08:57, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    воистину так.
     
  • 2.48, Аноним (46), 14:45, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну люди с олигофренией вроде-бы тоже рисуют что-то в тестах конкретно, а абстракция - один из механизмов мышления, увидеть главное и понять, чем сходятся как-бы разные штуковины.
    Так что важна не конкретная штука, а общая, её идея. Может мы развиваемся так?
    А ещё с ускорением прогресса может стать лениво всё перерисовывать, вот в средние века всё прорисовывали, потому что сроков было много, а сейчас развитие быстрое.

    PS:Если есть одно исключает другое, то одно из этого - враньё, по идее. Может и я вру.

     

  • 1.22, ананимас (?), 17:38, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оо это давно забытое искусство 3d рендеринга примитивами-спрайтами, было в Vectorman и Ballz еще на сеге, примерно в одно время с Petz 4
     
  • 1.29, IRASoldier_registered (ok), 20:35, 30/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Библиотека насчитывает всего 2100 строк кода и занимает 28 Кб без минификации

    Вот это действительно хорошо. И старое доброе подключение через <script src="my_awesome_script.js"></script>.

     
  • 1.36, Какаянахренразница (ok), 05:49, 31/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Обалдеть! Я в восторге.
     
  • 1.42, Аноним (46), 11:19, 31/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какая-то детскость есть в этих анимированных фигурах. Миленько так.
    И это тот сорт искажений, которые не только портят объект, видимо.
    Как mp3 сжатие, которое как кто-то написал - может сделать музыку более "чистой", "идеальной".
    Я смотрю на физически недостоверную анимацию и мне норм.
     
  • 1.44, Аноним (44), 13:21, 31/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сайты станут еще более прогрессивнее. На многих этот вау-эффект сработает, хотя как по мне - ничего революционного. Обычные свистелки да перделки.
     
     
  • 2.45, Аноним (46), 13:37, 31/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Свистелки и перделки это круто, но часто отвлекают, да. От компиза в свое время я получал какое-то удовольствие, двигая "резиновые" окошки по экрану.
    Сворачивая, разворачивая, передвигая окна безо всякой цели. Кажется, точно не помню.
     

  • 1.51, x3who (?), 16:12, 02/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А для GUI что-нить такое есть? Ну там чтобы можно было вывод сенсоров, кнопочки управления всё такое унифицированно лепить?
     
  • 1.52, ёнкр (?), 16:06, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По сравнению с векторными движками на WebGL(2.0) это выглядит убого.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру