Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > GLScene - проблемы с дымом


Автор: p0s0l 31.5.2005, 23:34
Блин, диплом горит, а некоторые мелочи не дают мне покоя, а разбираться некогда уже.
Если кто с GLScene имел дело, помогите!

Вообщем, загружаю в GLFreeForm модельку завода, у GLFreeForm добавлен эффект TGLSourcePFXEffect для создания эффекта дыма, идущего из труб завода...
В GLPFXRenderer и в GLPerlinFXManager свойство BlendingMode = bmTransparent.
И тут начинаются интересные вещи:
1. Если GLPFXRenderer стоит в начале сцены, то всё бы ничего, но нет прозрачности дыма, что очень сильно бросается в глаза.
2. Если GLPFXRenderer засунуть в конец сцены, то прозрачность появляется и всё бы ничего, но у меня динамически создаются объекты (эти же заводы), и на фоне этих новых заводов глючит дым - как бы это объяснить, там, где должны быть прозрачные пикселы дыма, показывается так, как будто бы этих новых объектов нет (т.е. прозрачность-то есть, но смешивается она не с тем, что находится за созданными объектами, см. присоединенный рисунок)...
(объекты создаю так:
Код
    Factory[i] := TGLDummyCube.CreateAsChild(Factory1.Parent);
    Factory[i].Assign(Factory1);
// Factory1 - "прототип", содержит подобъекты, в т.ч. GLFreeForm с эффектом дыма

Такое предположение, что новосозданные объекты как будто бы рендерятся после дыма, а т.к. у PFXRenderer'а стоит ZWrite = True, то понятное дело, что на месте уже нарисованного дыма ничего рисоваться не будет.
Если ZWrite отрубить, то получается так, что более дальние объекты рисуются поверх дыма.

Автор: p0s0l 31.5.2005, 23:54
Выход, как мне кажется, заключается в том, чтобы сделать так, чтобы дым рендерился после динамически созданных объектов...

Автор: p0s0l 1.6.2005, 00:06
Цитата(p0s0l @ 31.5.2005, 23:54)
Выход, как мне кажется, заключается в том, чтобы сделать так, чтобы дым рендерился после динамически созданных объектов...
Мдя... Иногда для нахождения решения бывает достаточно вслух произнести вопрос smile... Как только тот пост написал, сразу понял, что я тупо протормозил, все проще простого...
Решение оказалось простым: сделал 1 общий GLDummyCube (стоящий до GLPFXRenderer), и в него уже засунул завод. Новые объекты заводов засовывались уже в этот общий GLDummyCube, поэтому рисовались до дыма.

Автор: Yanis 1.6.2005, 00:24
smile Везёт же. Такие клёвые курсовые. У нас к сожалению не такие smile smile

Автор: p0s0l 1.6.2005, 10:35
Это не курсач, а диплом smile
Когда будет у тебя диплом - сам придумаешь себе темку по-интереснее smile
У меня диплом до ужаса простой (простой, но объемный), это лабораторный практикум по моделированию. Руководитель просил сделать красиво... Вот и делаю smile

Автор: Yanis 2.6.2005, 09:59
Цитата(p0s0l @ 1.6.2005, 10:35)
Это не курсач, а диплом

Ой! Точно smile

Автор: RA 2.6.2005, 21:58
p0s0l Не забудь нам показать результат, очень интересно. smile
Зы: ну если не сложно.

Автор: Yanis 3.6.2005, 00:04
Цитата(RAdmin @ 2.6.2005, 21:58)
Зы: ну если не сложно.

Я бы даже сказал - если не жалко smile Все же человек диплом пишет

Автор: p0s0l 3.6.2005, 12:12
Ок, как-нибудь покажу smile, только многого не ждите smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)