![]() |
Не получается натянуть текстуру на террайн
Народ, кто нибудь пытался программно положить текстуру на программно созданный террайн?
Просто как не пробую, что то ничего не выходит. :''(( |
Ответ: Не получается натянуть текстуру на террайн
Еще нет, но как-нибудь займусь. Есть один проект где это нужно. Но проект заморожен на неопределенный срок.
|
Ответ: Не получается натянуть текстуру на террайн
http://blog.almostlogical.com/2010/0...on-in-unity3d/
Тут текстура вроде меняется |
Ответ: Не получается натянуть текстуру на террайн
мне бы вот самому понять как с этими alphamap, splatMapData и т.д. работать и откуда их брать (у меня на террайне их нет), а по ссылке там такие тайны не раскрывают.
|
Ответ: Не получается натянуть текстуру на террайн
Так там вроде исходники есть?
UPD: На сколько я понимаю AlphaMap - это карта альфа слоев, с помощью которой смешиваются текстуры. При деформации тому слою, который должен быть отображен присваивается 1, остальным 0. Т.е. видимым становится только тот слой, который указан. |
Ответ: Не получается натянуть текстуру на террайн
|
Ответ: Не получается натянуть текстуру на террайн
ээээ может я чего не понимаю, но что мешает просто заменить текстуру в материале терайна?
|
Ответ: Не получается натянуть текстуру на террайн
а как, можно маленький пример?
Дело в том, что я через скрипт создал объект террайна, растянул его как надо, по текстуре из flaten создал рельеф и теперь как назначить материал или текстуру данному объекту? |
Ответ: Не получается натянуть текстуру на террайн
к сожалению я не знаю ответа. С террайном не работал и думал, что он как меш работает оказалось не так все.
|
Ответ: Не получается натянуть текстуру на террайн
Изучая возможности нашего VIZIO по работе с TerrainData наткнулся на это:
http://unity3d.com/support/documenta...rototypes.html http://unity3d.com/support/documenta...Prototype.html думаю это то что Вам нужно. |
Ответ: Не получается натянуть текстуру на террайн
спасибо, буду пробовать, как что то получится - отпишу в общую копилку.
|
Ответ: Не получается натянуть текстуру на террайн
Вложений: 1
Ну вот ежели кому интересно, то в двух словах делаем так:
SplatPrototype[] test = new SplatPrototype[1]; test[0] = new SplatPrototype(); test[0].texture = (Texture2D)Resources.Load("Balmoral", typeof(Texture2D)); test[0].tileOffset = new Vector2(0, 0); test[0].tileSize = new Vector2(15, 15); //test[1] = new SplatPrototype(); //test[1].texture = (Texture2D)Resources.Load("grydirt2", typeof(Texture2D)); //test[1].tileOffset = new Vector2(0, 0); //test[1].tileSize = new Vector2(15, 15); terrain.terrainData.splatPrototypes = test; terrain.terrainData.alphamapResolution = 512; print(terrain.terrainData.alphamapHeight); И получаем: |
Ответ: Не получается натянуть текстуру на террайн
Вот выпало свободное время и опять пришлось вернуться к своей проблеме.
Пытаюсь смикшировать несколько текстур и не получается :( обозначил splatmapData как: int Tw = terrain.terrainData.heightmapWidth - 1; splatmapData = terrain.terrainData.GetAlphamaps(0, 0, Tw, Tw); назначил несколько текстур SplatPrototype как описал в посте выше. В цикле бегу по высотам и пытаюсь в зависимости от высоты назначить разные текстуры: splatmapData[x, y, 0] = splat.x; splatmapData[x, y, 1] = splat.y; splatmapData[x, y, 2] = splat.z; splatmapData[x, y, 3] = splat.z; И получаю ошибку: IndexOutOfRangeException: Array index is out of range. (wrapper managed-to-managed) object:ElementAddr (object,int,int,int) test1.Awake () (at Assets/test1.cs:149) Хотя если судить по разным кускам кода в инете у всех остальных таких проблем с таим кодом нет, в чем может быть проблема? |
Ответ: Не получается натянуть текстуру на террайн
Текстур на террейне создал 4?
|
Ответ: Не получается натянуть текстуру на террайн
да, число текстур соответствует.
|
Ответ: Не получается натянуть текстуру на террайн
Неплохо бы тогда показать весь код, иначе трудно предполагать.
|
Ответ: Не получается натянуть текстуру на террайн
Да, конечно, вот код где назначаются текстуры:
PHP код:
PHP код:
|
Ответ: Не получается натянуть текстуру на террайн
Возможно проблема в том что массив размером
PHP код:
PHP код:
|
Ответ: Не получается натянуть текстуру на террайн
ошибка бьет на строку: splatmapData[x, y, 0] = splat.x;
если есть время и возможность, могк сам проект сохоанить и отослать |
Ответ: Не получается натянуть текстуру на террайн
Ну ответ прост, x или y выходят за пределы массива splatmapData. Проверь его размерность. Выведи в дебаг индекс x и y при возникновении ошибки.
|
Ответ: Не получается натянуть текстуру на террайн
вот отладочная печать процесса:
alphamapHeight=512, alphamapWidth=512 alphamapLayers=3 splat=(0.0, 0.0, 1.0) ,x=0 ,y=0 и получается в самом начале цикла ошибка: IndexOutOfRangeException: Array index is out of range. (wrapper managed-to-managed) object:ElementAddr (object,int,int,int) может мне выслать весь материал на мыло? Вот тут вроде подробно все расписано и я сделал также, но опять фиаско |
Ответ: Не получается натянуть текстуру на террайн
Кидай в личку проект, посмотрим. Можно так же по ICQ или Skype.
UPD: проблема была в неверном порядке операций, РЕШЕНО. |
Ответ: Не получается натянуть текстуру на террайн
Проблема решена, спасибо за это PAX'у.
Если кому будет интересно, проблема была банальна :( splatmapData была определенна до того как были назначены текстуры на террайн. |
Часовой пояс GMT +4, время: 02:10. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot