Войти
ПрограммированиеФорумГрафика

[Unity3D] Делаем нормальный инструментарий для линий без трололо и бесплатно. (6 стр)

Страницы: 13 4 5 6 7 8 Следующая »
#75
5:23, 5 фев. 2019

Кое что добавил и залил новую версию 0008 в шапку.


#76
0:42, 6 фев. 2019

Во! Другое дело! И альфа, и размер теперь как надо!)

Изменение одного элемента массива Points такое же дорогое как изменение всего массива? Или данные в меш запишутся только после того как я вызову апдейт?

Изображение

В обозримом будущем планирую такие дрожащие линии рисовать твоим ассетом, поэтому важно заранее разобраться, как лучше обновлять точки.
#77
(Правка: 15:46) 15:21, 6 фев. 2019

E-Cone
> Изменение одного элемента массива Points такое же дорогое как изменение всего
> массива? Или данные в меш запишутся только после того как я вызову апдейт?
Для LinesRenderer меш формируется одним вызовом UpdateMesh. Как ты его будешь вызывать для анимации твое дело. Но это не сам Mesh, а только его значения "Meshtmp". Непосредственно unity Mesh создается одной строкой в LateUpdate, только если Meshtmp был изменен.

Mesh = Meshtmp.UpdateToMesh(Mesh);

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

Для целей создания уникальной геометрии со своим функционалом есть базовые функции для формирования меша. LinesRenderer - это как user friendly пример.

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

У меня есть несколько доработок для LinesRenderer, которые позволять изменять сами шейдеры и использовать анимацию, но пока нет на это времени.

#78
15:35, 6 фев. 2019

Принято. Сделаю - отпишусь

#79
(Правка: 10 фев. 2019, 14:57) 1:08, 8 фев. 2019

Я немного подкрутил и сделал такой вот пример, можно посмотреть в Exaple.scene

linerender_011 | [Unity3D] Делаем нормальный инструментарий для линий без трололо и бесплатно.

В новом пакете 0009. Все что требуется для анимации это поменять параметр Seed в материале.

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

Для рисования таких эффектов линии очень плохо подходят. Вот на системе частиц получается круче.

И еще на частицах можно много интересных эффектов сделать

#80
5:04, 11 фев. 2019

Большинство эффектов по ссылкам создают трейлрендереры за частицами. А я сюда пришел, чтобы как раз не пользоваться стандартными трейлрендерерами)

#81
9:27, 11 фев. 2019

Ого оно молнии уже умеет рендерить?)

#82
17:03, 15 фев. 2019
foxes
MSA2
Тебе видимо нужно сделать обрезание краев. Тут такая проблема обсуждалась. Мои линии на ui вообще ни как не отображаются (Canvas нужно настраивать).

Или потетстировать специальные UI примитивы

Благодарю за наводку!
После длительного перерыва продолжил разработку игры и, на свежую голову, по вашему совету, поюзал этот кит скриптов - UI примитивы и сделал всё как мне надо, при любом разрешении экрана:

Скриншот 15-02-2019 163102 | [Unity3D] Делаем нормальный инструментарий для линий без трололо и бесплатно.

Правда пришлось распотрошить скрипты, чтобы убрать всё лишнее и соединить со своими скриптами. С непривычки немного попутался, но потом вспомнил некоторые особенности C# и всё заработало как надо. Единственное отличие от линии нарисованной оригинальным renderline это - отсутствие сглаживания, что не критично.

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

Я поискал и нашёл ещё один кит - LeopotamGroupLibraryUnity, но пока не изучал что он включает.

Большое спасибо за наводку!

#83
20:52, 16 фев. 2019

Вот тут лежит очень неплохая мултиплатформная либа с качественной реализацией 2Д канваса и некислым GUI на основе того канваса.
Pasvulkan
T.k. либа писана для FreePascal/Delphi и использует Vulkan то я поместил скомпилированный экзешник с ресурсами здесь:
Compiled example
Вот скриншоты:
GUI
Изображение
Canvas2D
Изображение

#84
21:22, 1 апр. 2019

Вернулся к теме. Посмотрел, как реализованы точки. Можно сократить: 9 вершин + 8 треугольников можно заменить на 8 вершин + 6 треугольников или 8 вершин + 3 квада:

+ Картинка

#85
(Правка: 21:58) 21:49, 1 апр. 2019

cankot, экзешник пропал, а картинки почему то не отображаются. Кстати рисование линий не такая и простая задача, если даже брать 2д. Как то копался в исходниках на делфи и нашел быструю линию, реализованную одним французом на делфи, которая по скорости обгоняла дельфийскую LineTo в несколько раз.

#86
(Правка: 15:35) 10:15, 2 апр. 2019

alexzzzz
К сожалению нужна центральная точка для текстурирования. Иначе текущий способ текстурирования не подойдет, а если рисовать просто точку на текстуре, то там и одного квада хватит (это уже возможно если точки рисовать иконками), но тогда не получиться использовать одну текстуру. Так что приходиться делать в виде пиццы, но если пробовать делать меньше сегментов по кругу то интерполяция не даст эффекта ровного круга и точки без текстуры тоже перестанут быть точками.

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

cankot
ArtProg
Если бы было все так просто и можно было бы использовать уже готовые кросплатформенные либы минуя API Unity для любой его версии, то темы с велосипедами бы не было.

#87
1:03, 3 апр. 2019

Смотрю геометрические шейдеры. Пока выглядят как идеальный способ рисования простых линий, точек и билбордов. Меш создавать не надо, из-за этого всё работает на порядок быстрее. Куб из 100х100х100 ячеек (~30000 линий) ― 2..3 миллисекунды на всё, из них собственно на рисование 0,2..0,3 мс.

#88
8:56, 3 апр. 2019

alexzzzz
> Смотрю геометрические шейдеры.
Да для PC реализации это идеальный выбор, но для web и других платформ нереально.

#89
(Правка: 14:44) 14:44, 3 апр. 2019

Я сделал рисование линий геометрическим шейдером по почти готовому примеру. Принцип был такой:
1. Пишем данные (начало линии, конец линии) в ComputeBuffer.
2. Рендерим через Graphics.DrawProcedural таким шейдером, который из каждой пары точек делает два треугольника.

А можно ли шейдер использовать обычный, не геометрический, но данные (вершины, индексы, тангенты...) передавать не в виде меша, а в виде нескольких ComputeBuffers? Просто чтобы не тратить половину времени на постоянное пересоздание бесполезного меша.

Такое будет работать на других платформах (если вообще будет)?

Страницы: 13 4 5 6 7 8 Следующая »
ПрограммированиеФорумГрафика