Цвет меша как?

Программирование на Юнити.

Re: Цвет меша как?

Сообщение Kann 08 мар 2010, 22:51

что бы получить шейдер с прозрачностью и освещением с всех сторон, можно использовать стандартный VertexLit
в него нужно добавить всего 3 строчки
Код: Выделить всё
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
   Alphatest Greater 0
        Blend SrcAlpha OneMinusSrcAlpha

и дальше тупо управлять альфой так
Код: Выделить всё
renderer.material.color.a =0

больше разговоров из нечего.....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 01:04

Kann писал(а):блин, это уже даже не смешно, Tolking когда ты создаеш какой либо примитив, или же тупо импортируеш абсолютно любую модель в Юнити, автоматически создается материал, и ему назначается диффузный шейдер, отсюда выходить что плевать работаеш ты сам с шейдерами или нет, объект у тебя все равно прорисовывается на экран с помощью какого либо из шейдеров,
Вот еще немного и до тебя дойдет, что мне как разработчику, плевать как Юнити рисует шейдерами под ДХ7 и это правильно! Меня не должно волновать как реализован рендер.

Kann писал(а): по умолчанию это default-diffuse, что бы чем то управлять, например цветами или прозрачностью, нужно назначить нужный шейдер на модель в ручную или через renderer.material.shader и уже от этого плясать, забудь те времена когда все рисовалось через CPU, сейчас все работает через GPU и шейдеры.
Это ты такие модели грузишь что у тебя default-diffuse, у меня ни одного материала в проекте такого нет... Ты опять уперся в шейдеры, что такое "нужный шейдер"? Твое предложение ручками определать шейдеры для тысяч обьектов забавно, и даже в таком случае неясно как определить "нужный шейдер". У объекта шейдер "Transporent\Cutout\Diffuse", какой нужный шейдер?

Sef писал(а):знаю только про EntityAlpha - renderer.material.color = new Color(0, 0, 0, Alpha);
А обратно Color(1, 1, 1, 1) или Color(0, 0, 0, 1)? По умолчанию цвет меша черный?
Вот видите? Ненужно никакие шейдеры менять! :)

Kann писал(а):что бы получить шейдер с прозрачностью и освещением с всех сторон, можно использовать стандартный VertexLit
в него нужно добавить всего 3 строчки

Kann, отвлекись от своих кубиков с и моделек с "default-diffuse". Такими действиями ты просто снесешь материал с объекта, он не будет вылядеть освещеным со всех сторон. Нет! Он будет освещен (наверное), но он небудет выглядеть так, как задумал моделер.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Цвет меша как?

Сообщение gnoblin 09 мар 2010, 01:22

Предлагаю создать общество бьющихся головой об стенку :ymdevil:
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Цвет меша как?

Сообщение Sef 09 мар 2010, 01:44

Tolking писал(а):
Kann писал(а): А обратно Color(1, 1, 1, 1) или Color(0, 0, 0, 1)? По умолчанию цвет меша черный?
Вот видите? Ненужно никакие шейдеры менять! :)

Я этим игрался только в редакторе в материале и настройки цвета (четыре ползунка) и по-умолчанию цвет 255,255,255,(нужная альфа 0-255).
Аватара пользователя
Sef
Старожил
 
Сообщения: 595
Зарегистрирован: 29 окт 2009, 13:24
  • ICQ

Re: Цвет меша как?

Сообщение gnoblin 09 мар 2010, 03:18

В коде только не 0-255, а 0.0f-1.0f :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Цвет меша как?

Сообщение Kann 09 мар 2010, 10:08

Tolking тогда сожалею, но по теме вопроса, ты не как не можеш управлять цветом меша, пусть за тебя им управляет твой моделлер, а ты только пиши движок и программируй игру :((
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 10:38

Западлянское западло! Не на всех материалах работает... Мне почему-то кажется, что не в материале дело должно быть... Я сейчас наткнулся на объект в проекте у которого штук 5 материалов...

Гноблин, не бейся головой! Вот тебе объект Go, сделай его полупрозрачным. Я туп и все просто? Напиши код который сделает любой Go полупрозрачным.

Kann, цветом управлять могу, получается универсально и красиво. Заставлять моделера делать 2 модели - это жлобство! Уж лучше я в Юнити в модели в вертексы альфу запихну или еще как... То, что возможно сделать объект полупрозрачным не трогая материал, я уверен. Максимум нужно добавить к тем материалам, которые есть еще один...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Цвет меша как?

Сообщение Paul Siberdt 09 мар 2010, 10:55

Вот, млин, бодание...

Имейте в виду, Tolking, что прозрачные объекты задействуют механизмы сортировки. То есть, видеокарта продолжает трассировать сцену за этим объектом. Если все в сцене будет с возможностью прозрачности, при любой альфе, даже равной 1.0 или 0.0, это сильно скажется на производительности по причине филлрейт-нагрузки.

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

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

Для меня единственное решение - это рабочая группа материалов, строго оговоренная с художником.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 11:33

Paul Siberdt, почему в Блице с возможностью сделать любой объект полупрозрачным одной командой это никак не влияет на скорость, пока не сделаешь объект полупрозрачным, а в Юнити влияет?

Хорошо, вот нам нелениво. Как назначить моделлеру в Максе оговоренный материал? Что потом в юнити делать с этим оговореным материалом? У нас есть Go на который наложен какой-то оговоренный материал (рейтрейс нам его вернул), что нужно сделать чтобы он стал полупрозрачным?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Цвет меша как?

Сообщение Paul Siberdt 09 мар 2010, 12:11

Эээ... я Блитз не видел, наверное, там хитрый шейдер тем самый одним движением включает и выключает прозрачность объекта. Я сам совсем не силен в Юниматериалах, но, уверен, тоже самое можно написать и тут.

В Юнити, если хочется постоянно контролировать альфу, надо пользовать материал из раздела Transparent, например, самый простой - Diffuse. И тем же _Color можно задавать вертексную прозрачность.

Я всегда переназначаю материалы в движке, выбрасывая те, что приходят с экспортом. Можно же просто заменять пришедшие диффузы на транспарент/диффузы... разве так проблема не вылечится?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 12:35

Блиц не использует шейдеры, он ДХ7.

Цвет вертекса неучитывается я уже проверил:
Код: Выделить всё
                Mesh mesh = CurFloor.GetComponent<MeshFilter>().mesh;
                Color[] colors = mesh.colors;
   
                for (int i=0;i<colors.Length;i++) {
                    colors[i].a = 0.0f;
                }
                mesh.colors = colors;

Никакого влияния в моем случае не оказывает. Это в документации так-же оговорено. :( Только некоторые материалы учитывают цвет вертекса.

Дифуз, похоже, просто складывает цвета без учета альфы, с учетом альфа складывается transparent/diffuse

Материал из раздела Transparent - "Transporent\Cutout\Diffuse" - визуально это решетка, как сделать ее полупрозрачной?

З.ы. Менять материалы во всем проекте это не наш метод. Объектов будет тысячи и Дифуз не везде.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Цвет меша как?

Сообщение Paul Siberdt 09 мар 2010, 12:46

Cutout - это шейдер не для полупрозрачностей. Он пользует альфатест, то есть, методику отсечения в рендере областей полигона со значением альфы, выше заданного.

Он пользуется именно для решеток, травы, листвы, волос и облегчает сортировку (не а яблафоне) кучи слоев с прозрачкой в виде маски, где важно не смешивание слоев, а их порядок отрисовки в сцене и друг с другом.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 12:52

И что? Решетка неможет быть полупрозрачной?

Вот чего до меня не доходило:

CurFloor.renderer.material.shader = Shader.Find("Transparent/" + CurFloor.renderer.material.shader.name);

Вот такая реализация меня устраивает:
Код: Выделить всё
if (go != null)
            {
                Color col = CurFloor.renderer.material.color;
                col.a = 0.3f;
                CurFloor.renderer.material.color = col;
                string ShaderName=CurFloor.renderer.material.shader.name;
                if (!ShaderName.StartsWith("Transparent/"))
                    CurFloor.renderer.material.shader = Shader.Find("Transparent/" + ShaderName);
            }

Как Нео написал ненужно никакие шейдеры писать, используется соответствующий шейдер. :) Интиресно всем шейдерам соответствует шейдер в Transparent?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Цвет меша как?

Сообщение Paul Siberdt 09 мар 2010, 12:54

Дык гляньте в Юне - в разделе Транспарентов именно и представлены все типы базовых шейдеров, но уже с настраиваемой прозрачкой.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Цвет меша как?

Сообщение Tolking 09 мар 2010, 13:04

Нету Decal, Difuse Detail, Diffuse Fast ну и соответственно всех сгруппированных FX, Nature и т.п. Но они, скорее всего, понимают альфу сами по-себе. :) Иначе Юнитивцы сделали Транспарент версии...
Нужно использовать такую конструкцию:
Код: Выделить всё
Shader shader=Shader.Find("Transparent/" +CurFloor.renderer.material.shader.name);
                if (shader!=null)
                    CurFloor.renderer.material.shader = shader;
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8