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=13827)

pax 03.01.2011 15:03

Ответ: Не получается натянуть текстуру на террайн
 
Неплохо бы тогда показать весь код, иначе трудно предполагать.

Slayer 04.01.2011 12:59

Ответ: Не получается натянуть текстуру на террайн
 
Да, конечно, вот код где назначаются текстуры:
PHP код:

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

а вот кусок, где пытаюсь назначить эти текстуры:
PHP код:

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(); 

Если нужно. могу выслать на мыло все куском.

pax 04.01.2011 18:43

Ответ: Не получается натянуть текстуру на террайн
 
Возможно проблема в том что массив размером
PHP код:

int Tw terrain.terrainData.heightmapWidth 1

а перебор идет по
PHP код:

for(int y=0terrain.terrainData.alphamapHeighty++)
    {
        for(
int x=0terrain.terrainData.alphamapWidthx++)
        { 

На какой строке ошибка? В посте 13 написано что она на 149 строке. Где эта строка?

Slayer 04.01.2011 20:31

Ответ: Не получается натянуть текстуру на террайн
 
ошибка бьет на строку: splatmapData[x, y, 0] = splat.x;
если есть время и возможность, могк сам проект сохоанить и отослать

pax 04.01.2011 22:31

Ответ: Не получается натянуть текстуру на террайн
 
Ну ответ прост, x или y выходят за пределы массива splatmapData. Проверь его размерность. Выведи в дебаг индекс x и y при возникновении ошибки.

Slayer 05.01.2011 21:03

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

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

Вот тут вроде подробно все расписано и я сделал также, но опять фиаско

pax 06.01.2011 15:42

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

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

Slayer 07.01.2011 13:12

Ответ: Не получается натянуть текстуру на террайн
 
Проблема решена, спасибо за это PAX'у.
Если кому будет интересно, проблема была банальна :( splatmapData была определенна до того как были назначены текстуры на террайн.


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

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