|
Unity Мультиплатформенный инструмент для разработки игр |
04.04.2012, 21:59
|
#842
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Блин! Как же туплю. Не глянул на все варианты метода. Хотя все равно мой вариант ObjectField выглядит намного проще.
pax, а ты ngui использовал или свой писал? Не пойму как там что все объекты имея одинаковые z координаты отображаются правильно и со всех сторон. Как будь-то рисуется в порядке от родителя к детям.
|
(Offline)
|
|
04.04.2012, 22:23
|
#843
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Не использовал, но сортировка должна быть обязательно. Если проще, там у шейдера должен быть отключен ztest и zwrite
|
(Offline)
|
|
04.04.2012, 23:39
|
#844
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(
кстати, я вот не пойму событие типа OnMouseOver вызываются для всех колайдеров? Не слишком ли это затратно, ведь это почти никогда не надо. И на с тачами это я так понимаю не работает?
|
(Offline)
|
|
04.04.2012, 23:49
|
#845
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от WISHMASTER35
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(
|
Зачем пересоздавать? Использовать тот же.
Сообщение от WISHMASTER35
кстати, я вот не пойму событие типа OnMouseOver вызываются для всех колайдеров? Не слишком ли это затратно, ведь это почти никогда не надо. И на с тачами это я так понимаю не работает?
|
Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.04.2012, 00:12
|
#846
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Зачем пересоздавать? Использовать тот же.
|
Только на массивы для вершин, текстурных координат и индексов много памяти уйдет. Еще проблематично сделать в таком способе поддержку нескольких материалов. Придется сначала подсчитывать сколько материалов используется, а потом формировать для каждого меш. еще на пересчет текста уйдет время.
А объект может узнать, что в его иерархии произошли изменения? Для Editor'а такое событие есть, а для скрипта не видел. Интересно как там происходит добавление новых элементов.
Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.
|
А я уж испугался))
|
(Offline)
|
|
05.04.2012, 06:44
|
#847
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Ну памяти уйдет не так уш и много, а ускорить пересоздание массивов можно разными способами.
Вот про событие изменения объекта ничего не знаю, что за событие вызывается в редакторе?
Вообще можно, при добавлении или удалении компонента, мессадж вверх по иерархии слать.
|
(Offline)
|
|
05.04.2012, 08:21
|
#848
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Да вообщем-то можно пересоздавать массивы только когда полигонов станет больше.
А вот использовать два материала на самом деле еще сложнее. Если нету проверки з-буфера, то отрисовать два меша правильно вообще нельзя, если конечно они не накладываются друг на друга.
Событие EditorWindow.OnHierarchyChange.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.04.2012, 08:33
|
#849
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Если отрисовка идет в порядке созданных полигонов, то почему нет? Сортировать полигоны по субмешам со своими материалами тоже не сложно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.04.2012, 15:25
|
#850
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Я видел модели на которых было несколько материалов. Это называется субмеш? И я так понимаю материалов может быть не больше 3х т.к. есть только uv, uv1, uv2 ?
И за сколько дравкалов отрисуется такой объект, если у него первый полигон будет с одним материалом, второй с другим, третий снова с первым и так вперемешку.
|
(Offline)
|
|
05.04.2012, 15:33
|
#851
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Субмешей может быть сколько угодно, на каждый свой материал.
Дравколов будет столько, сколько субмешей.
uv, uv1, uv2 указываются для вершин, субмеш это набор индексов вершин треугольников.
Причем uv это одно и то же что и uv1
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.04.2012, 17:23
|
#852
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Даже не представляю как это реализовано в unity.
Отрисовать несколько групп треугольников, причем в таком порядке, что, треугольник то с 1й группы, то со 2й, то снова с 1й.
На opengl es 1.0 такое будет работать?
Конечно, если можно будет не использовать 3-буфер, то можно повысить скорость. Особенно благодаря отключению очистки буфера глубины у камеры.
Но вызов для каждой вершины TransformPoint и запись в массив может быть довольно медленным.
|
(Offline)
|
|
05.04.2012, 20:07
|
#853
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
И зачем трансформировать вершины, если это делать видеокарта?
|
(Offline)
|
|
05.04.2012, 20:17
|
#854
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
И зачем трансформировать вершины, если это делать видеокарта?
|
Если самому собирать все в один меш, то и вершины надо самому трансформировать.
1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
|
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.
Может можно было бы создать шейдер, который принимает массив текстур или просто какое-то количество и в шейдере выбирать нужную текстуру. Только не знаю можно ли так сделать и куда записывать какому треугольнику какую текстуру.
|
(Offline)
|
|
05.04.2012, 20:22
|
#855
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от WISHMASTER35
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.
|
Зачем? Поставил камеру в нужные координаты, а вершины в локальных координатах своего объекта.
В шейдер максимум может попасть до 8 текстур на современных видеокартах, и переключение текстур делать совсем не стоит. Проще упаковать текстуры в одну большую и вывести за один дравкол.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:16.
|