Главная страница
    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.45 MB
Время: 0.028 c
1-1086253320
Сергей_И
2004-06-03 13:02
2004.06.20
Помогите создать в гриде чекбокс


1-1086745884
Глеб
2004-06-09 05:51
2004.06.20
Код завершения процесса


3-1085416122
pok
2004-05-24 20:28
2004.06.20
Как узнать имя поля...


1-1086250968
Rulezz
2004-06-03 12:22
2004.06.20
Алгоритм


3-1085569663
студентМАИ
2004-05-26 15:07
2004.06.20
Idapi.cfg и список алиасов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский