Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
1-1086745884
Глеб
2004-06-09 05:51
2004.06.20
Код завершения процесса


9-1078044611
Filther
2004-02-29 11:50
2004.06.20
Dullets


11-1075639173
Vladimir Kladov
2004-02-01 15:39
2004.06.20
замена sysdcu для D4 - by Thaddy de Koning


14-1085834559
AlexG
2004-05-29 16:42
2004.06.20
Позволим пользователю упаравлять своей веткой!


14-1086202687
Cobalt
2004-06-02 22:58
2004.06.20
Кривые Безье




   Наверх