forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 04.04.2012 21:29

Ответ: Фак по Юнити.
 
Если ты не заметил, то там три перегрузки, две из которых принимают label
http://unity3d.com/support/documenta...jectField.html
А у этой аш шесть, 4 с лэйблом
http://unity3d.com/support/documenta...EnumPopup.html

WISHMASTER35 04.04.2012 21:59

Ответ: Фак по Юнити.
 
Блин! Как же туплю. Не глянул на все варианты метода. Хотя все равно мой вариант ObjectField выглядит намного проще.
pax, а ты ngui использовал или свой писал? Не пойму как там что все объекты имея одинаковые z координаты отображаются правильно и со всех сторон. Как будь-то рисуется в порядке от родителя к детям.

pax 04.04.2012 22:23

Ответ: Фак по Юнити.
 
Не использовал, но сортировка должна быть обязательно. Если проще, там у шейдера должен быть отключен ztest и zwrite

WISHMASTER35 04.04.2012 23:39

Ответ: Фак по Юнити.
 
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(

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

pax 04.04.2012 23:49

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224600)
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(

Зачем пересоздавать? Использовать тот же.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 224600)
кстати, я вот не пойму событие типа OnMouseOver вызываются для всех колайдеров? Не слишком ли это затратно, ведь это почти никогда не надо. И на с тачами это я так понимаю не работает?

Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.

WISHMASTER35 05.04.2012 00:12

Ответ: Фак по Юнити.
 
Цитата:

Зачем пересоздавать? Использовать тот же.
Только на массивы для вершин, текстурных координат и индексов много памяти уйдет. Еще проблематично сделать в таком способе поддержку нескольких материалов. Придется сначала подсчитывать сколько материалов используется, а потом формировать для каждого меш. еще на пересчет текста уйдет время.
А объект может узнать, что в его иерархии произошли изменения? Для Editor'а такое событие есть, а для скрипта не видел. Интересно как там происходит добавление новых элементов.

Цитата:

Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.
А я уж испугался))

pax 05.04.2012 06:44

Ответ: Фак по Юнити.
 
Ну памяти уйдет не так уш и много, а ускорить пересоздание массивов можно разными способами.

Вот про событие изменения объекта ничего не знаю, что за событие вызывается в редакторе?

Вообще можно, при добавлении или удалении компонента, мессадж вверх по иерархии слать.

WISHMASTER35 05.04.2012 08:21

Ответ: Фак по Юнити.
 
Да вообщем-то можно пересоздавать массивы только когда полигонов станет больше.
А вот использовать два материала на самом деле еще сложнее. Если нету проверки з-буфера, то отрисовать два меша правильно вообще нельзя, если конечно они не накладываются друг на друга.

Событие EditorWindow.OnHierarchyChange.

pax 05.04.2012 08:33

Ответ: Фак по Юнити.
 
Если отрисовка идет в порядке созданных полигонов, то почему нет? Сортировать полигоны по субмешам со своими материалами тоже не сложно.

WISHMASTER35 05.04.2012 15:25

Ответ: Фак по Юнити.
 
Я видел модели на которых было несколько материалов. Это называется субмеш? И я так понимаю материалов может быть не больше 3х т.к. есть только uv, uv1, uv2 ?
И за сколько дравкалов отрисуется такой объект, если у него первый полигон будет с одним материалом, второй с другим, третий снова с первым и так вперемешку.

pax 05.04.2012 15:33

Ответ: Фак по Юнити.
 
Субмешей может быть сколько угодно, на каждый свой материал.
Дравколов будет столько, сколько субмешей.

uv, uv1, uv2 указываются для вершин, субмеш это набор индексов вершин треугольников.
Причем uv это одно и то же что и uv1

WISHMASTER35 05.04.2012 17:23

Ответ: Фак по Юнити.
 
Даже не представляю как это реализовано в unity.
Отрисовать несколько групп треугольников, причем в таком порядке, что, треугольник то с 1й группы, то со 2й, то снова с 1й.
На opengl es 1.0 такое будет работать?

Конечно, если можно будет не использовать 3-буфер, то можно повысить скорость. Особенно благодаря отключению очистки буфера глубины у камеры.
Но вызов для каждой вершины TransformPoint и запись в массив может быть довольно медленным.

pax 05.04.2012 20:07

Ответ: Фак по Юнити.
 
1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
И зачем трансформировать вершины, если это делать видеокарта?

WISHMASTER35 05.04.2012 20:17

Ответ: Фак по Юнити.
 
Цитата:

И зачем трансформировать вершины, если это делать видеокарта?
Если самому собирать все в один меш, то и вершины надо самому трансформировать.
Цитата:

1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.

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

pax 05.04.2012 20:22

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224661)
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.

Зачем? Поставил камеру в нужные координаты, а вершины в локальных координатах своего объекта.

В шейдер максимум может попасть до 8 текстур на современных видеокартах, и переключение текстур делать совсем не стоит. Проще упаковать текстуры в одну большую и вывести за один дравкол.


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

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