forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   PlayCanvas (http://forum.boolean.name/showthread.php?t=19214)

moka 09.03.2017 17:31

Ответ: PlayCanvas
 
Mozilla и Google зарелизили WebGL 2.0 в своих броузерах.
Мы работали тесно с Mozilla и ANGLE разрабатывая демку для презентации новых фичей WebGL 2.0.



Демка доступна здесь.

Из фичей использованных в демке:
* Transform Feedback - возможность модификации вершинного буфера шейдером и сохранение результата в другой вершинный буфер. Это позволяет избежать сохранения вычислений в шейдере в текстуру, и улучшает производительность координально. Листики в демке анимируются таким образом.
* 3D Textures - процедурное небо в демке использует 3Д текстурки.
* HDR рендеринг с MSAA - теперь блендинг выглядит реалестичнее и рендер в текстуру поддерживает AA.
* PCF теней на встроенными фичами видео карты - мягче и быстрее смягчение теней.
* И многое другое..

Ещё фичи демки:
* Сжатие текстур: DXT, PVR, ETC1 используются в зависимости от платформы, что экономит VRAM в почти 6 раз!
* Асинхронная скачка ресурсов: ресурсы стримятся асинхронно пока разные процессы выполняются в основном потоке JS. Это позволяет скачать всего 19.1мб данных и запустить демку, и докачать ещё 5.5мб данных когда приложение уже запущено.
* Запекание лайтмап в рантайме (не скачка).
* Процедурные волны на воде.
* Планарные отражения.
* И многое другое..

При разработки таких демок, мы всегда выходим за рамки того что движок позволяет. В итоге мы узнаём что работает хорошо, и что стоит добавить в движок в будущем.
Уже сейчас почти весь функционал из демки интегрирован в движок: http://<u><font color="RoyalBlue">ht...gl2</font></u>

ARA 09.03.2017 17:51

Ответ: PlayCanvas
 
moka, насколько двиг готов для интерьерной визуализации? (Это в наличии искаропке?: кубические ReflProbes, LightProbes, GI) Рендер готов рендерить толпу заскиненных человеков искаропке на слабом железе?

Mr_F_ 09.03.2017 20:38

Ответ: PlayCanvas
 
Лайтпроб нету, хотя скриптятся легко, весь функционал в движке есть, но серверная часть не от меня зависит.
Нормальные лайтмапы с ги движок печь не умеет - только обычные лайты запекать для удешевления. MoKa считает, что никому не нужно GI, и не надо мне им заниматься, это не приоритет, и типа кому надо в максе запекут :P

Возможно Вы извращенец? Тогда у нас предложение специально для Вас! Делайте интерьерную визуализацию: http://forum.playcanvas.com/t/lightm...nual-docs/3044
... запекая лайтмапы в максе, фикся их шум в фотошопе и кубмапы тоже в максе рендерите, и ещё там придётся некоторые фейсы кубмапы пофлипать в шопе, а то они часто не так повёрнуты, но вы справитесь :|

Толпу заскиненных человеков можно попытаться, даже была вроде демка, хотя это не то чтобы огромная толпа: https://playcanv.as/p/U1h7MNck/

ARA 09.03.2017 22:23

Ответ: PlayCanvas
 
Идти печь лм и кубмап в макс это прямо Blitz3d девелопмент стайл. Запиливайте, чтоб весь минимально необходимый визуал можно было запилить из коробки.

moka 09.03.2017 23:09

Ответ: PlayCanvas
 
Вы ребята так пи**ите, буд-то у нас команда в 500 голов..

Цитата:

Сообщение от Mr_F_ (Сообщение 312378)
Лайтпроб нету, хотя скриптятся легко, весь функционал в движке есть, но серверная часть не от меня зависит.

Ничего не продумано по пробам, где и как их хранить, какой workflow должен быть и т.п.

Цитата:

Сообщение от Mr_F_ (Сообщение 312378)
Нормальные лайтмапы с ги движок печь не умеет - только обычные лайты запекать для удешевления. MoKa считает, что никому не нужно GI, и не надо мне им заниматься, это не приоритет, и типа кому надо в максе запекут :P

moka, так не считает. Просто ты не совсем догадываешься какие это нагрузки считать GI для сложных сцен для всех юзеров в облаке, и на сколько это не простая задача. Тем более есть целые стартапы которые только это и делают.

Цитата:

Сообщение от Mr_F_ (Сообщение 312378)
Возможно Вы извращенец? Тогда у нас предложение специально для Вас! Делайте интерьерную визуализацию: http://forum.playcanvas.com/t/lightm...nual-docs/3044
... запекая лайтмапы в максе, фикся их шум в фотошопе и кубмапы тоже в максе рендерите, и ещё там придётся некоторые фейсы кубмапы пофлипать в шопе, а то они часто не так повёрнуты, но вы справитесь :|

Если нужна лёгкая и крутая интеръерка, UE в руки. Правда без веба конечно. Если нужен веб, то учитесь делать оптимально, прийдётся руками.

Цитата:

Сообщение от Mr_F_ (Сообщение 312378)
Толпу заскиненных человеков можно попытаться, даже была вроде демка, хотя это не то чтобы огромная толпа: https://playcanv.as/p/U1h7MNck/

Система анимации не сильно развита, это слабая часть движка которая будет переделываться в скором времени.

Но толпы есть, да.

ARA 09.03.2017 23:55

Ответ: PlayCanvas
 
Ну как так-то? Без настроек света :''(( ? Предположим, посчитали лм в максе. Не в первой. А как динамические объекты в это освещение вписать?

Mr_F_ 10.03.2017 00:21

Ответ: PlayCanvas
 
пока что придётся зарендерить кубмапыч в максе тоже.
его затем двиг может фильтрануть и использовать и для отражений с разным глоссом, и как дифуз лайтпробу.

RegIon 17.03.2017 19:53

Ответ: PlayCanvas
 
Хей, нужно получить пиксели в текстуре по координатам, передаю ее через атрибут, но метод lock() выдает ссылку, а не массив.
Как быть?

moka 18.03.2017 00:11

Ответ: PlayCanvas
 
А текстура рендеренная или это jpg/png и можешь её в canvas2d отрисовать?
В вебе к сожалению из картинки пиксели не просто получить.

В общем создаёшь canvas 1х1 пиксель, получаешь его 2д контекст, рисуешь туда image так чтобы пиксель был какой нужно и где нужно. И затем getImageData с этого canvas'а, выдаст массив с пикселем и его цветами.

ant0N 20.03.2017 05:17

Ответ: PlayCanvas
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 600 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Mr_F_ 20.03.2017 13:50

Ответ: PlayCanvas
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 600 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

ant0N 20.03.2017 16:52

Ответ: PlayCanvas
 
Цитата:

Сообщение от Mr_F_ (Сообщение 312592)
*** скрытый текст ***

ты сказал, а мока подтвердил. Нашел

RegIon 20.03.2017 19:56

Ответ: PlayCanvas
 
Мне тупо расставить мебель и отправить/принять JSON, на рендер срать

RegIon 20.03.2017 22:48

Ответ: PlayCanvas
 
Вопрос №2, у нас есть Mesh, мне нужно по координатам rayCast получить UV.
Как это правильно сделать?

Набросал скрипт, который если я ничего не напутал, получает rayCast point, переводит его в локальную относительно объекта и сравнивает с вершинами в меше.
По моей задумке на ближайшей вершине нужно брать UV. Так? (Влом интерполировать между несколькими)

Правда в PC с векторной математикой как-то неудобно.
https://playcanvas.com/editor/code/452172?tabs=7201110

moka 21.03.2017 23:18

Ответ: PlayCanvas
 
Цитата:

Сообщение от RegIon (Сообщение 312622)
Вопрос №2, у нас есть Mesh, мне нужно по координатам rayCast получить UV.
Как это правильно сделать?

Набросал скрипт, который если я ничего не напутал, получает rayCast point, переводит его в локальную относительно объекта и сравнивает с вершинами в меше.
По моей задумке на ближайшей вершине нужно брать UV. Так? (Влом интерполировать между несколькими)

Правда в PC с векторной математикой как-то неудобно.
https://playcanvas.com/editor/code/452172?tabs=7201110

https://playcanvas.com/editor/code/4...201110&line=87

Код:

var d = this._new.length();
  if(d < 0.2)

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

Думаю есть спец-алгоритмы как это делать быстро, но в голову приходит такая идея:
1. Получаешь список вершин отсортированных по дистанции от точки, сперва ближе, потом дальше.
2. Строишь индекс по индексному буферу треугольников-вершин. Чтобы по индексу вершины треугольник и другие вершины получать было быстро.
3. Бежишь по сортированным вершинам, получаешь их треугольники.
3а. Вычисляешь нормаль треугольника по трём вершинам.
3б. Трансформируешь точку относительно вершине используя нормаль.
3в. Проверяешь если точка в плоскости треугольника.
3г. Проверяешь если точка в рамках треугольника (3ех вершин).
4. Если что-то не удовлетворено, то запоминаешь индекс треугольника чтобы его заного не вычислять, и продолжаешь №3.
5. Когда найден треугольник, интерполировать UV между уже будет не сложно (формулы онлайн есть).

Вообще было бы хорошо иметь встроенную фичу такого рода.

Учти что vertexBuffer имеет "формат", там не только позиции, но и нормали, цвет и ещё всякая инфа в нём. Следственно там не будет 3 элемента на вершину, а будет по разному исходя из формата. getFormat (http://developer.playcanvas.com/en/a...html#getFormat) - получает формат буфера.

RegIon 22.03.2017 07:19

Ответ: PlayCanvas
 
Цитата:

Сообщение от moka (Сообщение 312635)
https://playcanvas.com/editor/code/4...201110&line=87

[code]
Учти что vertexBuffer имеет "формат", там не только позиции, но и нормали, цвет и ещё всякая инфа в нём. Следственно там не будет 3 элемента на вершину, а будет по разному исходя из формата. getFormat (http://developer.playcanvas.com/en/a...html#getFormat) - получает формат буфера.

У меня всегда только сфера всегда. По идее мне вообще нужно трансформировать точку с ScreenPoint в сферические координаты на текстуре. Если курсор в центре окна, то нормально еще, можно углы в UV перенести, а если смещать, то искажения, вот и приходится танцевать

moka 22.03.2017 23:51

Ответ: PlayCanvas
 
Цитата:

Сообщение от RegIon (Сообщение 312648)
У меня всегда только сфера всегда. По идее мне вообще нужно трансформировать точку с ScreenPoint в сферические координаты на текстуре. Если курсор в центре окна, то нормально еще, можно углы в UV перенести, а если смещать, то искажения, вот и приходится танцевать

Ну если сфера, то даже проще. Тебе даже физику не нужно использовать.
Есть BoundingSphere и Ray, и метод intersectsRay: http://developer.playcanvas.com/en/a...#intersectsRay

По мышки от камеры лучом по сфере пикаешь, получаешь точку, переводишь в координаты сферы с учётом поворота, и далее по формуле если гео-развёртка, получаешь UV.


Часовой пояс GMT +4, время: 21:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot