forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Расскажите плиз кто знает о материалах в Юнити (http://forum.boolean.name/showthread.php?t=12808)

Illidan 04.07.2010 04:34

Расскажите плиз кто знает о материалах в Юнити
 
Начал осваивать Юнити. непонятно пока работа с материалами. Неполучилось блин даже задать маску отдельной чернобелой картой(( Я так понял там всё через шейдеры работает? тогда как он решает вопрос совместимости со старым железом? Есть ли аналог блицевским блендам?
и как собственно задать маску?))

pax 04.07.2010 09:44

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Вложений: 1
Маска материалу не нужна, нужно чтобы у текстуры был альфа-канал. Если у текстуры есть альфа-канал, то в параметрах ее импорта юнити автоматически ставит формат DXT5, если стоит DXT1 то он не учитывает альфу. Нужно поменять на DXT5.
Посмотреть есть ли у текстуры альфа можно на иконке вверху при импорте, либо добавив ее к материалу.

Вопрос совместимости в том, что юнити использует свой внутренний формат текстур и шейдеры имеют аналоги для разных версий. В юнити есть режим эмуляции железа Edit->Graphics Emulation, так что как будет выглядеть на той или иной версии АПИ можно увидеть в окне проекции.

Illidan 04.07.2010 14:37

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
режим эмуляции влияет только на стандартные шейдеры?

pax 04.07.2010 15:04

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Все стандартные шейдеры спроектированы таким образом, чтобы работать на любых видекартах с последовательным исключением не поддерживаемых техник. С официального сайта можно скачать их исходники и посмотреть реализацию.

Illidan 04.07.2010 15:28

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
окей, как быть с мультитекстурингом? я, например, хочу загрузить две текстуры - одну как альфу, другую как дифуз и, затем, подвигать альфу.

pax 04.07.2010 15:31

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Например написать свой шейдер для этой не стандартной задачей.

pax 04.07.2010 15:39

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Готовые шейдеры можно поискать здаесь: http://www.unifycommunity.com/wiki/i...?title=Shaders
Вот например может подойти: http://www.unifycommunity.com/wiki/i...le=TextureMask

Illidan 04.07.2010 15:46

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
хорошо, будем смотреть шейдеры.
следующий вопрос.
как быть с анимацыонными последовательностями? ненашел такого в скриптах^^.

pax 04.07.2010 15:48

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Анимации чего? Текстур?

Illidan 04.07.2010 15:55

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
угу, сорри, думал что в контексте темы будет понятно. Анимационные текстуры. У меня просто, как у старого блицера, мозги кипят от всего нового.

pax 04.07.2010 15:57

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Ну стандартных компонентов для этого нет, можно импортировать все кадры анимации как отдельные текстуры и последовательно их выводить на экран с помощью простого скрипта, принимающего массив текстур.

Illidan 04.07.2010 16:07

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
я так понял, фришная поставка юнити не позволяет прямо назначать координаты текстуры вертексам? как происходит работа с наборами текстурных координат? тоесть как назначать материал разным наборам текстурных координат?

pax 04.07.2010 16:12

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Работать с мешем должно быть можно в бесплатной версии. Назначить материал разным наборам нельзя, если я понял что имеется ввиду, нужно писать шейдер который принимает две текстуры и два набора текстурных координат. Можно для этого посмотреть Lightmap шейдеры.

Вот примерный скрипт анимации:
Код:

using UnityEngine;
using System.Collections;

public class AnimTexture : MonoBehaviour {

    public Texture2D[] frames;
    public float FPS;
    public Rect rect;
    private int currentFrame = 0;

        public void Start ()
    {
        if (frames == null) return;
            if (frames.Length>0)
            {
                StartCoroutine(UpdateTexture());
            }
    }
       
       
        public IEnumerator UpdateTexture ()
    {
        if (currentFrame >= frames.Length)
            currentFrame = 0;


            currentFrame++;
            yield return new WaitForSeconds(1.0f/FPS);
        StartCoroutine(UpdateTexture());

        }

    public void OnGUI()
    {
        if (frames==null) return;
        if(frames.Length>0)
        {
            GUI.DrawTexture(rect, frames[currentFrame], ScaleMode.ScaleToFit);
        }
    }
}


Illidan 04.07.2010 16:17

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
Pax,спасибо большое.

Illidan 04.07.2010 19:05

Ответ: Расскажите плиз кто знает о материалах в Юнити
 
ещё такой вопрос. Как крутить текстуру?


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

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