Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Текстурирование объектов   Найти похожие ветки 

 
Poison man   (2004-02-25 08:00) [0]

Хелло, Мастера!
При создании своей игрушки возникла большая проблема с текстурированием объектов. Сам пытался разобраться, но ничего не вышло. Обращаюсь к вам.
Растолкуйте, пожалуйста, почему не работает следующий код:

type
.............
.............
.............
var
 Infra:array [1..5] of TFreeForm; //Массив объектов
 N_Infra:integer;                //Счетчик объектов
 Path1, Path2:string;           //Пути к объектам и текстурам
.............

procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then Path1:=OpenDialog1.FileName;
end;

procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then Path2:=OpenPictureDialog1.FileName;
end;

procedure TForm2.SpeedButton4Click(Sender: TObject);
begin
Infra[N_Infra]:=TFreeForm(Form1.GLScene1.Objects.AddNewChild(TFreeForm));
Infra[N_Infra].LoadFromFile(path1);
Infra[N_Infra].Material.Texture.Image.LoadFromFile(Path2);
Infra[N_Infra].Material.Texture.Disabled:=False;
Infra[N_Infra].Materail.Texture.TextureMode:=tmModulate;

Inc(N_Infra);
end;

end.

Если все ставлю на одной форме (и GLScene, и диалоги), то все ОК. Если же диалоги по выбору моделей и
текстур вешаю на отдельную форму, то объект грузится в сцену, управляется и т.д., а текстуры нет. В чем ошибка?


 
Alek Aaz ©   (2004-02-25 14:34) [1]

Черт его знает... Переменные Path2 и Path1 глобальные?
ИМХО. Нужно делать через GLMaterialLibrary. Грузишь в нее сразу все текстуры, а в диалогах проставляешь какую конкретно грузить.


 
Poison man   (2004-02-25 19:56) [2]

У меня эти переменные объявлены тут:

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;
 Path1, Path2:string;
 Infra:array [1..500] of TFreeForm;
 N_Infra:integer;

implementation
.....................
.....................

А GLMaterialLibrary я пробовал так:
На первую форму (ту, что с GLScene) ставил эту самую Library,
а во второй форме уже загружал в нее при необходимости текстуру.
Вот так:

Form1.GLMaterialLibrary2.Materials.Add;
Form1.GLMaterialLibrary2.Materials[N_Infra].Name:="Texture"+inttostr(N_Infra);
Form1.GLMaterialLibrary2.Materials[N_Infra].Texture.Image.LoadFromFile(Path2);

А присваивал материал объекту так:

Infra[N_Infra].Material.MaterialLibrary:=Form1.GLMaterialLibrary2;
Infra[N_Infra].Material.LibMaterialName:="Texture"+inttostr(N_Infra);

И, понятное дело, ставил Texture.Disabled:=false; и в библиотеке материалов, и в самом объекте.

Но толку нет. Текстур как не было, так и не появилось.


 
Alek Aaz ©   (2004-02-26 16:54) [3]

не, я тебе здесь не помощник...



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
1-1086764457
AleXqwq
2004-06-09 11:00
2004.06.20
TreeView


3-1085494417
linx
2004-05-25 18:13
2004.06.20
После внесения изменений в базу не могу подключиться снова.


1-1086174531
Ш-К
2004-06-02 15:08
2004.06.20
Клонировать форму


4-1084527320
OlegM
2004-05-14 13:35
2004.06.20
Подскажите как отправить факс программно


1-1086627168
Chlavik
2004-06-07 20:52
2004.06.20
Таймер не хочет работать...