Четверг, 14 Ноября 2024, 06:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: Gnomov  
Как изогнуть canvas?
timur2008Дата: Пятница, 20 Мая 2016, 09:48 | Сообщение # 1
частый гость
Сейчас нет на сайте
Народ , такой тупой вопрос, скажите как можно изогнуть Холст (Canvas) ? Например чтобы он был не в виде плоскости а в виде цилиндра ?
Snake174Дата: Пятница, 20 Мая 2016, 10:37 | Сообщение # 2
участник
Сейчас нет на сайте
Сделай модель цилиндра и на него накладывай текстуру отрендеренной сцены )

На чём делаешь? Можно пример как это должно выглядеть?


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
timur2008Дата: Пятница, 20 Мая 2016, 11:15 | Сообщение # 3
частый гость
Сейчас нет на сайте
Ну делаю то на юнити, я просто не очень прошарил еще ее, как это сделать ? В центре камера , вокруг нее цилиндр получается на которой нацеплены контролы. и вот юзер получается что вокруг юзера куча контролов. Так получается.
TLTДата: Пятница, 20 Мая 2016, 13:00 | Сообщение # 4
Сейчас нет на сайте
Не нужно плодить кучу одинаковых тем про свой конвас вокруг камеры.

Дао, выраженное словами, не есть истинное Дао.
BarbatosДата: Пятница, 20 Мая 2016, 13:22 | Сообщение # 5
3D-моделлер/Руководитель
Сейчас нет на сайте
timur2008,
Просто сделать кучу канвасов и разместить их в форме цилиндра.


Его остатки и на хлеб не намазать. Мой тебе совет Пабло - относись к жизни как к веселухе, но непродолжительной. @Эш
ShortKedrДата: Пятница, 20 Мая 2016, 13:52 | Сообщение # 6
Renword Studio
Сейчас нет на сайте
timur2008, с помощью знаний математики поверни+помести элементы полукругом на канвасе)
2 вариант: WorldSpace магия)


Сообщение отредактировал ShortKedr - Пятница, 20 Мая 2016, 14:00
timur2008Дата: Пятница, 20 Мая 2016, 14:24 | Сообщение # 7
частый гость
Сейчас нет на сайте
Извиняюсь smile да я так и сделал , но это не очень работает т.к. я пишу приложуху для VR используя Fibrum SDK и судя по всему там ограничение есть использовать только один Canvas . Полукругом не получится т.к. у мозга юзера должно создастся впечатление что эти компоненты вокруг него. sad
BarbatosДата: Пятница, 20 Мая 2016, 14:54 | Сообщение # 8
3D-моделлер/Руководитель
Сейчас нет на сайте
timur2008,
Тогда сделай все элементы на канвасе невидимым, создай второй канвас с видимыми элементами. Привяжи функции элементов второго канваса к нажатию на элементах первого. Возьми камеру которая записывает raw текстуры. Снимай ею второй канвас с визуальными элементами. RawТекстуру нацепи на изогнутый объект и помести его перед первым канвасом.
Но этот вариант требует хирургической точности.



А если серьезно, то множество канвасов это и есть ответ на твой вопрос.


Его остатки и на хлеб не намазать. Мой тебе совет Пабло - относись к жизни как к веселухе, но непродолжительной. @Эш

Сообщение отредактировал Barbatos - Пятница, 20 Мая 2016, 14:55
ShortKedrДата: Пятница, 20 Мая 2016, 16:55 | Сообщение # 9
Renword Studio
Сейчас нет на сайте
timur2008, а что значит в виде цилиндра - значит полукругом. Можно координату Z приплюснуть, но сейчас не об этом.
Поищите способ выдернуть из canvas его рендер(материал, текстурку или ещё что-то), сделайте модель этого самого полуцилиндра, воткните в него эту текстуру, приделайте триггеры на места элементов и радуйтесь. Ещё вариант, откуда взять текстуру - выкинуть UI и рисовать вручную)

Другой вариант: Нашёл в справке UIVertex, думаю ясно зачем он) UI рендерится аналогично, как 3д модель(так можно сделать), можно попробовать покопаться в справке, найти всю нужную инфу по изменению вертексов и далее вас ждёт математика)

Добавлено (20 мая 2016, 16:55)
---------------------------------------------
Немного покапал в этом направлении. Используйте BaseMeshEffect класс, на его основе можете написать класс, который будет автоматически изгибать элементы на Canvas, как вам надо, причём, каждый по отдельности) Работает, как компонент


Сообщение отредактировал ShortKedr - Пятница, 20 Мая 2016, 16:55
URGINSANДата: Пятница, 20 Мая 2016, 17:18 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
А чем не вариант сделать отдельную камеру (именно для канваса) и наложить на нее эффект fishEye ?

Я на драйве
LertmindДата: Пятница, 20 Мая 2016, 18:05 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Ох, надавали ему советов, а погуглить "unity canvas vr" не удосужились. В Unity целый раздел по VR http://unity3d.com/learn/tutorials/topics/virtual-reality и там есть про UI и ссылка на Samples https://www.assetstore.unity3d.com/en/#!/content/51519.

Сообщение отредактировал Lertmind - Пятница, 20 Мая 2016, 18:06
ShortKedrДата: Пятница, 20 Мая 2016, 18:48 | Сообщение # 12
Renword Studio
Сейчас нет на сайте
Lertmind, вопрос, собственно стоял в том, что бы погнуть canvas и его содержимое. Для этого: решение BaseMeshEffect. Но, да, можно и 3d mesh'ы тыкнуть, так даже лучше) Если предположить, что мы в старых версиях Юни(где не было UI), то эта задача реализовывалась за счёт 3d mesh'ей, преимущественно.

Добавлено (20 мая 2016, 18:48)
---------------------------------------------
Цитата Barbatos ()
А если серьезно, то множество канвасов это и есть ответ на твой вопрос.

Автору нужно скруглить интерфейс


Сообщение отредактировал ShortKedr - Пятница, 20 Мая 2016, 19:29
LertmindДата: Пятница, 20 Мая 2016, 19:31 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Вот согнутый UI с BaseVertexEffect http://forum.unity3d.com/threads/warp-bend-the-ui.283066/#post-1886153, чтобы работало в новых версиях Unity, где перешли на BaseMeshEffect, надо изменить TessellationVertexEffect.cs:

Переход основывался на этом, но использую циклы для заполнения, так как GetUIVertexStream и AddUIVertexTriangleStream работают не так, как хотелось бы. Из-за первого метода в общем-то (смотрел исходный код UI), в ShadowEffect появляются лишние 4 вершины на букву, которые можно было избежать (в OutlineEffect ещё больше, так как он состоит из 4 теней от ShadowEffect).
В сцене CylinderUI у Canvas стоит Render Mode -> Screen Space, чтобы было в мире - изменяем на World Space.

Добавлено (20 мая 2016, 19:31)
---------------------------------------------
ShortKedr, проблема в том, что здесь "ошибка XY". Автор вопроса стал решать задачу не тем методом.

Сообщение отредактировал Lertmind - Пятница, 20 Мая 2016, 19:24
ShortKedrДата: Пятница, 20 Мая 2016, 22:09 | Сообщение # 14
Renword Studio
Сейчас нет на сайте
Lertmind, согласен, частая ошибка большинства)

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

"Куча канвасов или элементы полукругом - выглядит не плохо, но не то, нет эффекта изгиба да и больше 1 canvas на интерфейс - это уже слишком). Идём дальше: дополнительный рендер с помощью камеры и наложение на цилиндрическую модель - уже лучше, но всё равно не то, т.к. лишние затраты на доп. рендер(хоть и не большие) и нужно добавлять кучу триггеров.
Точно Canvas же выводится аналогично 3д модели, значит вероятно можно найти способ изменять его mesh, добавить изгиб. Ага, покапался в справке, нашёл UIVertex, нашёл в Unity3d компонент PositionAsUV1, почитал про него в справке, узнал, что он унаследован от BaseMeshEffect, увидел у него метод ModifyMesh, понял - это то что нужно. Исследовал 1-2 странички интернета или поковырялся сам, понял как он работает. Написал компонент изгиба mesh для UI элементов) С удовольствием закончил свою работу над этой задачей - принялся за следующую)"


Сообщение отредактировал ShortKedr - Пятница, 20 Мая 2016, 22:17
timur2008Дата: Вторник, 24 Мая 2016, 08:08 | Сообщение # 15
частый гость
Сейчас нет на сайте
Lertmind, ShortKedr Спасибо !! smile Попробую разобраться как сделать smile .
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг