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

Вниз

Подсветка объектов. GLScene.   Найти похожие ветки 

 
VitGun   (2004-06-09 22:31) [0]

С GLScene поставляется демка \Demos\Interface\Pick там показано как можно подсвечивать объекты при наведении на них указателея мыши. Вопрос: можно ли таким же образом подсвечивать ТЕКСТУРИРОВАННЫЕ объекты (неправильной формы), или прийдеться рисовать для каждого отдельную текстуру?


 
kas-t   (2004-06-09 22:41) [1]

Как я понял из демки этой, там меняется цвет объекта. Так что текстурированные объекты, наверное, таким способом подсвечивать не удастся, придется рисовать отдельную текстуру.


 
VitGun   (2004-06-09 22:56) [2]

>kas-t

Ну в общем я так и думал...Чтож будем рисовать...


 
kerby ©   (2004-06-10 14:02) [3]

можно попробовать написать шейдер


 
wiz ©   (2004-06-10 14:42) [4]

2 VitGun: честно говоря не смотрел демку (и вообще не ставил себе GLScene), но...

в opengl треугольник ресуется с использованием текущего значения glColor (если установлен бит GL_COLOR_MATERIAL) или только на основе текущих значений glMaterial(gl_diffuse/gl_ambient/...).
если ты накладываешь текстуру, то для каждой точки её цвет получается из смешения цветов материала свёрнутого с картой текстуры (умножение).

таким образом, если ты будешь рисовать один и тот-же объект с одной и той же текстурой , но с разными значениями glColor(...) (если установишь glEnable(GL_COLOR_MATERIAL)) или с разными значениями glMaterial(...), то результат получишь разный.

что тебе и нужно.

(к посту [3]: см. origin)

---
бритва Оккама: "Не создавайте сущности сверх необходимого"


 
NailMan ©   (2004-06-10 14:46) [5]

А если точечный источник света или лайтмапом?

---
WBR, NailMan aka 2:5020/3337.13


 
wiz ©   (2004-06-10 15:15) [6]

можно и так, как предложил NailMan: изменять цвет источника света. Но в этом случае нужно будет менять параметры источника до и после отрисовки подсвеченного объекта (или glPushAttrib/glLight/.../glPopAttrib) иначе все предметы вокруг источника будут менять цвет.

по моему проще и правильнее с идейной точки зрения сделать моим путём, т.к. мы хотим поменять свойства (цвет) самого объекта, а не свойства источника "излучения".

Для примера кусочек кода из моего проекта:

//устанавливаю свойства материала
glMaterialfv(...)
...
glMaterialfv(...)

//подключаю текстуру
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, curr_mtl[part_fire_tex_bind].diff_map);

//для простоты включаю установку материала через цвет
glEnable(GL_COLOR_MATERIAL);

for i:=0 to "всего партиклов" do
 begin

//устанавливаю положение объекта
...glTranslated(), glRotated(), glRotated()...

//в зависимости от того, какой тип партикла устанавливаем его цвет
case ogl_Particle_list[i].typ of
 pt_eng_part: glColor3d(1,0.5+random*0.4,random*0.5); //random для большей "живости" огня
 pt_ship_expl: glColor3d(0.8,0.2,0.2);
...
end;

//выводим партикл (внутри только glVertex и glTexCoord)
glBegin(GL_TRIANGLE_STRIP);
 ...
glEnd;

 end;


в результате получаю на одной и той же текстуре (белой) партиклы совершенно разного цвета. (для сомневающихся, см. мою демку)

---
бритва Оккама: "Не создавайте сущности сверх необходимого"


 
DeadMeat ©   (2004-06-10 17:46) [7]

> VitGun
Укажи в свойствах текстуры TextureMode в tmModulate

---
...Death Is Only The Begining...



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1096360736
Леван
2004-09-28 12:38
2004.10.10
Отправка письма с атачментом


6-1091377619
Batoon
2004-08-01 20:26
2004.10.10
Как скачать все файлы с сервера


1-1096289020
Dimon_St
2004-09-27 16:43
2004.10.10
Помогите найти библиотеку (Построение B-сплайнов)


8-1090012783
кактусбел
2004-07-17 01:19
2004.10.10
Как загрузить в Тimage фаилы в форматах tif, png, gif


3-1095144874
Diman
2004-09-14 10:54
2004.10.10
Как получить доступ к полям DBF-файла?