Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Прозрачная Вода   Найти похожие ветки 

 
Nic87 ©   (2004-12-10 18:57) [0]

У меня никак не получается сделать в ландшафте воду. Help me кто-нибудь плиз! Я пытаюсь сделать просто прозрачную плоскость синего цвета - глючит жутко. Хто нибудь помогите, горю!
glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Алгоритм расчета прозрачности
glEnable(GL_BLEND); // Включаем прозрачность
glDisable(GL_DEPTH_TEST); // Выключаем буфер глубины
glColor4f(1.0,1.0,1.0,0.5);
дальше рисую полигон. ПОлучается такая проблема, что этот полигон виден только с одной стороны. Вектор нормали пробовал менять :( Help кто-нибудь!


 
Nic87 ©   (2004-12-10 19:01) [1]

Забыл уточнить. Пишу на OpenGL API


 
Домовенок   (2004-12-10 19:16) [2]

Для общего развития: полигон не может быть видным с двух строн. Для этого нужен еще один полигон.

А не пробывал сделать *.tga текстуру с фактурой воды, прозрачностью в 50%?


 
Bryke   (2004-12-10 19:18) [3]

:))))))
Выруби режим отсечения.


 
Nic87 ©   (2004-12-10 19:19) [4]

Хочется без текстур. Как можно нарисовать второй полигон?


 
Nic87 ©   (2004-12-10 19:23) [5]


> Bryke

Режим отсечения чего? Я новичок в деле графики :(


 
Nic87 ©   (2004-12-10 20:28) [6]

Помогите же кто-нибудь! Проект горит!


 
miek ©   (2004-12-10 21:58) [7]

>Для общего развития: полигон не может быть видным с двух строн. Для этого нужен еще один полигон.

Может. RTFM.

Воду я на GLScene делал как полупрозрачную плоскость с анимированной бесшовной текстурой (можно просто склеить несколько кадров в один и переключать их координаты). Текстурку можно из Quake взять.


 
Домовенок   (2004-12-10 23:30) [8]

>miek (10.12.04 21:58) [7]

А можно конкретный кусочек из мануала, где про это сказано, или хотя бы ссылку на мануал по полигонам? А то я прям в замешательстве. Сколько уже с 3д работаю, впервые слышу про "двусторонние" полигоны.

Из личного опыта знаю, что если полигон виден с двух сторон, значит это два склеенных полигона. Вообще у полигона есть нормаль. Куда она направлена с той стороны и видно его.

Реально можно побаловаться с полигонами в 3DMax. И все будет ясно.

>Nic87 (10.12.04 19:19) [4]

Так же точно как и первый, только нормалью в обратную сторону.


 
Nic87 ©   (2004-12-11 07:32) [9]

Вот, я менял направление нормали и что-то не получается. Сегодня ещё попробую.


 
IRIX   (2004-12-11 10:07) [10]

>> А можно конкретный кусочек из мануала, где про это сказано, или хотя бы ссылку на мануал по полигонам? А то я прям в замешательстве. Сколько уже с 3д работаю, впервые слышу про "двусторонние" полигоны.

:_)
да ты наверное целых 3 дня уже с 3D "работаешь" :)))))

glDisable(GL_CULL_FACE);
рисуем воду
glEnable(GL_CULL_FACE);


 
ViK ©   (2004-12-11 10:17) [11]

В ОпенГЛ по умолчанию отображается только одна сторона примитива (лицевая). При взгляде на лицевую сторону точки примитива должны описываться против часовой стрелки (описание по или против часовой стрелки можно менять командой glFrontFace() с параметрами GL_CW и GL_CCW).
Чтобы примитив был двусторонний надо отключить отсечение обратной стороны, далается это с помощью команды glDisable(GL_CULL_FACE).
Но лучше рисовать два примитива: чтобы первый был виден сверху, а второй - снизу.


 
miek ©   (2004-12-11 10:29) [12]

Почитай хелп к GL_POLYGON_MODE. По умолчанию рисуется только поверхность, повернутая нормалью к камере. Но можно рисовать только обратную строну, или обе сразу (какая видна, такая и рисуется - это и есть двусторонний полигон).

Видимо, ты используешь только GL_FRONT_FACE? Обычно так и делают, потому что двусторонние полигоны действительно редко нужны.

>Реально можно побаловаться с полигонами в 3DMax. И все будет ясно.
"Если вам все ясно, значит, вам не все говорят" (С) Поговорка.


 
Nic87 ©   (2004-12-11 12:40) [13]

Всем спасибо огромное! У меня получилось! Но есть ещё один маленький вопросик. Итак, полученный код:
procedure DW(a, b: Integer);
begin
 glDisable(GL_CULL_FACE);
 glBlendFunc(GL_SRC_ALPHA,GL_ONE); //
 glEnable(GL_BLEND);               //
 glColor4f(0.0,0.0,1.0,0.5);
 glBegin(GL_QUADS);
   glNormal3f(0, -1, 0);
     glVertex3f(a/2, 3, b/2);
     glVertex3f(-a/2, 3, b/2);
     glVertex3f(-a/2, 3, -b/2);
     glVertex3f(a/2, 3,-b/2);
 glEnd;
 glDisable(GL_Blend);
 glEnable(GL_CULL_FACE);
end;
Почему-то вода над ландшафтом не синяя, а того тона, который имеет ландшафт. Например, если ландшафт текстурирован под травку (зелёный), то вода получается едко-жёлтой, а не голубой. В чём может быть проблема?


 
Nic87 ©   (2004-12-11 14:41) [14]

Help!


 
Bryke   (2004-12-11 17:51) [15]

Ты текстуру на водичку нанеси.


 
Nic87 ©   (2004-12-11 18:39) [16]


> Bryke

А без этого никак нельзя? Если нет, тогда, сделаю именно так :)
Спасибо.


 
TButton ©   (2004-12-11 19:06) [17]


> Сколько уже с 3д работаю, впервые слышу про "двусторонние"
> полигоны.
>
> Из личного опыта знаю, что если полигон виден с двух сторон,
> значит это два склеенных полигона. Вообще у полигона есть
> нормаль. Куда она направлена с той стороны и видно его.

зато есть двухсторонние материалы!
вотЪ!
=)


 
ViK ©   (2004-12-11 19:48) [18]

Попробуй использовать режим
glBlendFunc(GL_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA)
может быть поможет



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

Форум: "Игры";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
9-1095375266
Ктото
2004-09-17 02:54
2005.03.13
Давайте попробуем развить демку dceDemo из состава GLScene ?


1-1109491767
tazik
2005-02-27 11:09
2005.03.13
Кто может, подкиньте, пожалуйста, DirectShow.dcu!


3-1107975358
_Oleg1
2005-02-09 21:55
2005.03.13
Доступ к Oracle


9-1103298955
Zak
2004-12-17 18:55
2005.03.13
DirectInput - коды клавишь.


1-1109509552
ser35
2005-02-27 16:05
2005.03.13
Почему активна кнопка?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский