Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 03.01.2011, 15:03   #16
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Неплохо бы тогда показать весь код, иначе трудно предполагать.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.01.2011, 12:59   #17
Slayer
Нуждающийся
 
Регистрация: 23.09.2010
Сообщений: 54
Написано 8 полезных сообщений
(для 26 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Да, конечно, вот код где назначаются текстуры:
SplatPrototype[] test = new SplatPrototype[3];
    
float[,,] splatmapData;
    
int Tw terrain.terrainData.heightmapWidth 1;
    
splatmapData terrain.terrainData.GetAlphamaps(00TwTw);
    
terrain.terrainData.alphamapResolution Tw;
    
//float[,,] splatmapData = new float[terrain.terrainData.alphamapWidth, terrain.terrainData.alphamapHeight, terrain.terrainData.alphamapLayers];
    
test[0] = new SplatPrototype();
    
test[0].texture = (Texture2D)Resources.Load("grass"typeof(Texture2D));
    
test[0].tileOffset = new Vector2(00);
    
test[0].tileSize = new Vector2(1515);
    
test[1] = new SplatPrototype();
    
test[1].texture = (Texture2D)Resources.Load("Balmoral"typeof(Texture2D));
    
test[1].tileOffset = new Vector2(00);
    
test[1].tileSize = new Vector2(1515);
    
test[1].texture.Apply(true);
    
test[2] = new SplatPrototype();
    
test[2].texture = (Texture2D)Resources.Load("grydirt2"typeof(Texture2D));
    
test[2].tileOffset = new Vector2(00);
    
test[2].tileSize = new Vector2(1515);
    
test[2].texture.Apply(true);
    
    
terrain.terrainData.splatPrototypes test
а вот кусок, где пытаюсь назначить эти текстуры:
for(int y=0terrain.terrainData.alphamapHeighty++)
    {
        for(
int x=0terrain.terrainData.alphamapWidthx++)
        {
        
float height terrain.terrainData.GetHeight(x,y);
        
Vector3 splat = new Vector3(0,1,0);
        if (
height 10.0) {
            
splat Vector3.Lerp(splat, new Vector3(0,0,1), (height-0.5f)*);
        } else {
            
splat Vector3.Lerp(splat, new Vector3(1,0,0), height*);
        }
        
        
splat.Normalize();
        
splatmapData[xy0] = splat.x;
        
splatmapData[xy1] = splat.y;
        
splatmapData[xy2] = splat.z;
        
        }
    }
    
    
terrain.terrainData.Flush(); 
Если нужно. могу выслать на мыло все куском.
(Offline)
 
Ответить с цитированием
Старый 04.01.2011, 18:43   #18
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Возможно проблема в том что массив размером
int Tw terrain.terrainData.heightmapWidth 1
а перебор идет по
for(int y=0terrain.terrainData.alphamapHeighty++)
    {
        for(
int x=0terrain.terrainData.alphamapWidthx++)
        { 
На какой строке ошибка? В посте 13 написано что она на 149 строке. Где эта строка?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.01.2011, 20:31   #19
Slayer
Нуждающийся
 
Регистрация: 23.09.2010
Сообщений: 54
Написано 8 полезных сообщений
(для 26 пользователей)
Ответ: Не получается натянуть текстуру на террайн

ошибка бьет на строку: splatmapData[x, y, 0] = splat.x;
если есть время и возможность, могк сам проект сохоанить и отослать
(Offline)
 
Ответить с цитированием
Старый 04.01.2011, 22:31   #20
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Ну ответ прост, x или y выходят за пределы массива splatmapData. Проверь его размерность. Выведи в дебаг индекс x и y при возникновении ошибки.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.01.2011, 21:03   #21
Slayer
Нуждающийся
 
Регистрация: 23.09.2010
Сообщений: 54
Написано 8 полезных сообщений
(для 26 пользователей)
Ответ: Не получается натянуть текстуру на террайн

вот отладочная печать процесса:
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)

может мне выслать весь материал на мыло?

Вот тут вроде подробно все расписано и я сделал также, но опять фиаско
(Offline)
 
Ответить с цитированием
Старый 06.01.2011, 15:42   #22
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Кидай в личку проект, посмотрим. Можно так же по ICQ или Skype.

UPD: проблема была в неверном порядке операций, РЕШЕНО.
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 06.01.2011 в 23:02.
(Offline)
 
Ответить с цитированием
Старый 07.01.2011, 13:12   #23
Slayer
Нуждающийся
 
Регистрация: 23.09.2010
Сообщений: 54
Написано 8 полезных сообщений
(для 26 пользователей)
Ответ: Не получается натянуть текстуру на террайн

Проблема решена, спасибо за это PAX'у.
Если кому будет интересно, проблема была банальна splatmapData была определенна до того как были назначены текстуры на террайн.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (07.01.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com