Texture Animation

Шейдеры и все-все-все.

Texture Animation

Сообщение WhiteDevil 08 мар 2011, 16:40

Такой вопрос. Есть меш танка. На всю модель, со всем его чайлдами есть одна большая текстурная мапа.
Проблема такая: хочется анимации гусеничной текстуры. Как выделить на мапе кусок UV координат и перемещать их при наступлении события (нажатия на кнопки).
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Battle Angel Alita 08 мар 2011, 17:24

легче будет отцепить гусеницы в отдельную текстуру
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Texture Animation

Сообщение WhiteDevil 08 мар 2011, 19:19

Сделать 2 материала: одна с движущейся текстурой, вторая нет. И менять их когда надо?
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Battle Angel Alita 08 мар 2011, 20:08

сделать один материал для танка, и сделать второй для гусениц. тот что для гусениц скролить.
сделать то что написано в первом посте можно, но оно не оправдано для экономии одного драв-кола.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Texture Animation

Сообщение WhiteDevil 10 мар 2011, 22:51

Тут же вопрос, а как в шейдере можно крутить текстуру? Крутить пиксели относительно центра

Пс: гусеницы прекрасно анимируются, спасибо :)

А раз крутятся гусеницы, надо закрутить и колеса. Выделять каждое колесо в объект, чтоб крутить в юнити, будет уже дороговато :)
Их 14 и каждый минимум 2 дк.
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Paul Siberdt 10 мар 2011, 23:21

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

Re: Texture Animation

Сообщение WhiteDevil 10 мар 2011, 23:28

Но обидно, у меня танк 10 дк весит всего-лишь. Если отделить каждое колесо и крутить, выйдет около 40-50, что не пропорционально :) Впрочем динамик батчинг может спасти, но я на него особо уже и не расчитываю. Поэтому такая идея, чтоб от общей текстуры отделить кусочек для колес, и перемапить ЮВ карту для колес. Выйдет +1 материал, и не более. Ну и шейдер нужно будет написать.
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Battle Angel Alita 10 мар 2011, 23:46

текстуру можно прекрасно крутить матрицей, смотри в справке Material.SetMatrix
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Texture Animation

Сообщение gnoblin 11 мар 2011, 00:10

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

Re: Texture Animation

Сообщение WhiteDevil 11 мар 2011, 00:36

Battle Angel Alita писал(а): смотри в справке Material.SetMatrix


Ухты, пасибы, прямо-таки готовенькое :)
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение WhiteDevil 11 мар 2011, 17:43

Сделал все как надо, взял скрипт из референса и применил. Проблема в том, что вращение происходит относительно начала ЮВ текстуры (0,0), когда мне надо относительно центра (0.5, 0.5). Не получается задать смещение :(

http://docs.unity3d.ru/ScriptReference/ ... atrix.html
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Battle Angel Alita 11 мар 2011, 18:46

Matrix4x4.TRS (pos : Vector3, q : Quaternion, s : Vector3)
этим не получается? тогда сделай отдельно матрицу перемещения и помнож её на матрицу вращения(или наоборот, непомню)
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Texture Animation

Сообщение WhiteDevil 11 мар 2011, 21:43

Вообще в теории, требуется сначала сместить текстуру на начало координат, чтоб центр текстурки оказался в центре системы отсчета, повернуть, а затем вернуть обратно. Получается что как-то так:
Синтаксис:
Используется javascript
var rot = Quaternion.Euler (0.0f, 0.0f, Time.time * rotateSpeed);

var r = Matrix4x4.TRS (Vector3.zero, rot, Vector3.one );
var t = Matrix4x4.TRS(Vector3(0.5f, 0.5f, 0.0f), Quaternion.identity, Vector3.one);
var t2 = Matrix4x4.TRS(Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity, Vector3.one);

var result = t * r * t2;
renderer.materials[2].SetMatrix ("_Rotation", result);


Но все-равно что-то не очень получается :) Оно вращается как надо, но... со смещением) Большим.
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Texture Animation

Сообщение Battle Angel Alita 12 мар 2011, 07:02

Синтаксис:
Используется javascript
var m_translate = Matrix4x4.TRS(Vector3(-0.5f, -0.5f, 0.0f), Quaternion.identity, Vector3.one);
var m_rotate = Matrix4x4.TRS(Vector3(0.5f, 0.5f, 0.0f), rot, Vector3.one);

var m = m_rotate * m_translate;
 
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Texture Animation

Сообщение WhiteDevil 13 мар 2011, 01:43

Спасибо большое, работает!
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55


Вернуться в Shader Lab

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

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