Замена текстуры на модели

Общие вопросы о Unity3D

Замена текстуры на модели

Сообщение John_3drt 31 янв 2009, 18:42

Dobroe vremia sutok

Podskazite cainiku pozalsta kak opisat funkciju zameni texturi na modele

za ranie spasibo


gt: Johngamedev@gmail.com
John_3drt
UNец
 
Сообщения: 2
Зарегистрирован: 31 янв 2009, 18:36

Re: Замена текстуры на модели

Сообщение Neodrop 31 янв 2009, 19:07

Я изменил название твоей темы, потому что в "правилах форума" сказано:

3. Старайтесь создавать темы, в разделах, близких этим темам.

1. Обязательно!!! Давайте вашим темам информативные названия. Не "вопрос от начинающего", а "как найти расстояние между двумя точками?"


А теперь по теме. Вешаешь этот скрипт на свой объект и вперед. Измени по своему вкусу.

Код: Выделить всё
var textureToReplace : Texture; // сюда вводишь текстуру на которую будешь заменять
private var originalTexture : Texture;

function Start()
{
   originalTexture = renderer.material.texture; // сохраняем оригинальную текстуру, чтобы можно было ее вернуть
}

function ChangeTextures()
{
     renderer.material.texture = textureToReplace;
}

function ReturntexToOrigin()
{
   renderer.material.texture =  originalTexture;
}


Если хочешь заменить текстуру сразу на всех копиях (клонах) этого обекта, то используй sharedMaterial вместо material

P.S. все это написано для одного материала на объекте. Если их больше, то и писать малость больше ;0)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Замена текстуры на модели

Сообщение John_3drt 31 янв 2009, 19:16

bolshoe celoveceskoe spasibo !!!
John_3drt
UNец
 
Сообщения: 2
Зарегистрирован: 31 янв 2009, 18:36

Re: Замена текстуры на модели

Сообщение MediaMen 07 май 2009, 10:37

Скажите, а если материалов на объекте несколько, как определить сколько элементов и заменить определенный материал на другой или количество материалов изменить (Java)?
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Замена текстуры на модели

Сообщение Const_47 07 май 2009, 18:04

Почти копипастить сюда код, я думаю без смысла.

file:///C:/Program%20Files/Unity/Editor/Data/Documentation/Documentation/ScriptReference/Renderer-material.html
file:///C:/Program%20Files/Unity/Editor/Data/Documentation/Documentation/ScriptReference/Renderer-materials.html
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Замена текстуры на модели

Сообщение MediaMen 08 май 2009, 05:11

А можно поконкретнее, ничо не понял из этой справки. У меня есть объект с N разными материалами, нужно при нажатии на нем все материалы заменить одним (например материалом "hrome"), а при снятии выделения вернуть на место эти материалы без использования инспектора. Тоесть при нажатии скрипт должен определить количество материалов на объекте, записать их в переменную, заменить все материалы другим, а потом вернуть материалы на место. Помогите пожалуйста с синтаксисом. Заранее спасибо.
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Замена текстуры на модели

Сообщение Const_47 08 май 2009, 11:26

SOS!!!
Делал это для MediaMen, но сам вляпался... Смотреть на код и комменты!
Код: Выделить всё
//Вот это GameObject на котором висит камера
var cam : GameObject;
//Луч
var ray : Ray;
//Количество материалов
var materialsLength : int;
//подгружаемый материал
var hrome : Material;

function Awake()
{
//Подгружаю материал из папки Resources
hrome = Resources.Load("MyMat");
}
function FixedUpdate()
{
//Трайсирую луч
ray = cam.camera.ScreenPointToRay(Input.mousePosition);
//Проверяю на колизию луча и коллайдера + нажата ли первая кнопка мышки
if (Physics.Raycast (ray, 100) && Input.GetButtonDown ("Fire1")) {
//Cпрашиваю сколько материалов на меше
materialsLength = renderer.materials.Length;
/*
!!!SOS!!! Cмотрим быстренько сюда!!! Если я пытаюсь например присвоить второму
элементу массива cвой материал, как в коде ниже, то всем полям в вкладке Materials в
инспекторе ,если элементы пустые(None(Materials) ) присваивается материал Deffault-Diffuse!!!.
Это что?????Глюк такой??? Или как вариант - Научите меня ЛАМЕРА как достучатся к КОНКРЕТНОМУ
материалу из массива Materials???
*/
renderer.materials[1] = hrome;
}
}

Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Замена текстуры на модели

Сообщение Neodrop 08 май 2009, 14:18

А с нулевым материалом чего? Вы ставите renderer.materials[1] = hrome;
А как же renderer.materials[0] = hrome; ?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Замена текстуры на модели

Сообщение Const_47 08 май 2009, 17:10

&Neodrop
Элементов в инспекторе на боксе я поставил три, то есть Materials[3];
Второй [1] элемент избран произвольно.
С первым[0] элементом результат аналогичный, как собсно и с третим.

Пытался так
renderer.materials.SetValue(hrome,0);
результат аналогичный.

но если я делаю вот так
renderer.material = hrome;
то все ок, но присваивает токо первому элементу. Как мне присвоить второму? И т д?

&All
Проделайте кто нибудь пожалуйста аналогичный эксперимент, и отпишите о результатах.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Замена текстуры на модели

Сообщение Neodrop 08 май 2009, 18:09

А зачем вообще эти лишние материалы? Раз назначается один материал, надо и оставить один материал.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Замена текстуры на модели

Сообщение Const_47 08 май 2009, 19:43

Ну это на боксе бессмысленно.

Но вот как пример, моя ситуация -

Есть дом, который состоит из несколько этажей.
Каждый этаж, это отдельный меш состоящий из нескольких комнат, естесно каждая комната может иметь разные материалы стен,пола и тд... В общем на этаж 10-30 материалов. Моя задача - дать пользователю возможность редактировать материалы-текстуры(сменить паркет на мрамор например, или выбор покрытия разных производителей). Я посмотрел в справку где ясно пишет var materials : Material[], вот я и начал моделить-собирать проект с учетом этого. Хорошо что появился MediaMen и задал вопрос, теперь мне нужно будет перемоделивать-пересобирать где то 60% проекта, что совсем не гуд.

Пока этот баг не будет исправлен, Юнити совсем не оптимальный выбор для архитектурных презентаций.
Или это все же я так тупо по Ламерски туплю?

&gnoblin, Neodrop

^:)^ Поднимите пожалуйста вопрос на офф форуме, со своим инглышом я не справлюсь нормально обяснить...
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Замена текстуры на модели

Сообщение Neodrop 09 май 2009, 12:43

Сделай демо-пример. Выложи проект тут. Поглядим вместе.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Замена текстуры на модели

Сообщение Const_47 09 май 2009, 14:18

Интересно в чем это поможет? Единственный вопрос который я не могу решить, это достучатся до элемента массива Materials! Все что я хочу, что бы мне показали как это сделать. Или всем это получается, и никто не понимает о чем это я? Хотя бы напишите, что нам тоже не получается это сделать, или получается.

Сейчас я занимаюсь экстренным перекраиванием этажей, на кучу обжектов.(каждый редактированный материал-отдельный меш).Пока вопрос решается токо так.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Замена текстуры на модели

Сообщение Neodrop 09 май 2009, 14:27

Это поможет в том, что если действительно есть глюка, тогда я отпишусь на ОФФ форуме. Проверять самостоятельно у меня нет ни времени ни желания.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Замена текстуры на модели

Сообщение Const_47 09 май 2009, 15:05

Вы правы. Вот прошу
http://www.sharemania.ru/0195374
Пообрезал все что можно, оставил токо сам факт.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

След.

Вернуться в Общие вопросы

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

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