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

Вниз

Проверка на видимость   Найти похожие ветки 

 
K.o.Z ©   (2003-06-14 23:49) [0]

Добрый вечер. Скажите как написать ф-цию проверки на видимость треугольника, зная координаты всех 3 вершин.
Если необходимы и др. данные, то я постараюсь их предоставить.
Спасибо.


 
Landgraph   (2003-06-15 10:47) [1]

Я с этим фиг знает сколько промучался, так ничего толкового и не получилось: то слишком мало треугольников убирал, то слишком много, то только с одной стороны... В общем копай в сторону нормалей! "В чем сила брат?" В нормалях сила! У кого нормали тот и сильнее! =)


 
K.o.Z ©   (2003-06-15 12:50) [2]

Нормали это конечно замечательно, но я не понимаю какой в них толк?


 
Asteroid ©   (2003-06-15 18:02) [3]

Например в том, чтобы проверять на видимость. Если скалярное произведение вектора зрения на нормаль плоскости (треугоьлника в плоскости) больше 0, значит плоскость (треугольник) повернут к тебе задом и рисовать его не надо.
Или ты не знаешь, как нормаль считать? А еще и с высшим образованием %(


 
K.o.Z ©   (2003-06-15 22:16) [4]

2 Asteroid
Нормаль к треугольнику - это векторное произведение векторов-сторон, образованных вершинами , если ничего не перепутал :)
А вот про "вектор зрения" никогда не слышал... можно по-подробнее?


 
Asteroid ©   (2003-06-16 03:15) [5]

Не перепутал :) Вектор зрения - вектор, по направлению которого смотрит камера. Кстати, нормали обычно единичной длины.


 
K.o.Z ©   (2003-06-16 14:06) [6]

Подловил ;) А как этот сам вектор зрения получить?


 
Asteroid ©   (2003-06-16 16:19) [7]

> K.o.Z © (16.06.03 14:06)
А ты знаешь, куда у тебя камера смотрит?
Обычно она может смотреть либо на точку target из другой точки pos - тогда вектор будет targ-pos, или же камера задается просто точкой pos и вектором dir, который и есть "вектор зрения".


 
K.o.Z ©   (2003-06-21 17:13) [8]

Логично... у меня ж камера задаётся командой gluLookAt...
Но всё таки, может есть где почитать? т.к. я наложил текстуру на свой ландшафт и он у меня стал жуууутко тормозить, поэтому вопрос невидимых полигонов сейчас встал ещё более остро.
Люди помогите!?


 
Asteroid ©   (2003-06-22 22:34) [9]

Если ты на чистом GL, попробуй с Z-буфером поработать (сейчас не напишу, как он включается). А чтобы не морочаться с невидимыми поверхностями, ставь glCullMode(GL_FRONT) (кажется, сейчас нет справки под рукой).
Вот только вывод ландшафта удалением невидимых поверхностей не ускорить. Поищи инфу по BSP-деревьям, оно же octree (нечто вроде мип-маппинга для объектов).


 
Sapersky_   (2003-06-23 11:40) [10]

Во-первых, BSP-деревья и octree - это не одно и то же. Во-вторых, для ландшафта лучше подходит quadtree, т.е. вся сетка ландшафта делится на 4 части, каждая часть ещё на 4 и т.д. Причём доходить до уровня отдельных треугольников вовсе не обязательно и даже нежелательно - можно сделать минимальной ландшафтной единицей (тайлом, так сказать) фрагмент 8*8, или 16*16 или ещё какой. Если не хочется использовать деревья (quadtrees) - можно просто перебирать все фрагменты и проверять их bounding box"ы на видимость. Будет медленнее, чем с деревьями (при больших размерах ландшафта), но быстрее, чем выводить весь ландшафт.
Вообще, статья по ландшафту была на gamedev.ru. Или вот, правда, на английском -
http://www.cs.sun.ac.za/~henri/terrainmain.html


 
Kelegorm   (2003-06-24 19:54) [11]

Хоть я не знаю OPENGL, расскажу, как зделать всё побыстрее.
1) Перво-наперво, как у тебя перерисовывается экран? Надо по таймеру, 30 раз в секунды, то есть каждые 25 миллисекунд. Постоянно - вредно.
2) какого размера текстура? Попробой поменьше и юзай мип-мэпинг.
3) Разве в ОпенГЛ нету автомат. отсечки невидимых поверхностей? Думаю, это расширение, тогда. Всё равно, даже 4-х меговая карта поддержит о бодбодрит.
4) Тогда вручную.
5) Что за народ. Не читая, не рисуя самим, из ГДИ, лезут куда не попадя! А ты возьми старую(1980-1989) книжку, почитай, как там народ вручную накладывал фактуру(текстурки.) :-)

Я не злой старик. Мне вчера 17, и я сначала рисовал и отсекал, даже перспективы(когда линии на экране не паралеьны, а стремятся в точку горизонта) сам на паскале, а потом только совесть позволила изпользовать чужие заготовки. Я использовал только функцию рисования точки!


 
K.o.Z ©   (2003-06-30 23:17) [12]

2 Kelegorm (24.06.03 19:54)
К великому сожалению не извлёк ничего конструктивного :-(


 
Asteroid ©   (2003-07-03 02:40) [13]

> K.o.Z © (30.06.03 23:17)
Какой-то пример лежал на DelphiGFX, правда на DX8.

Насчет отсечения невидимых граней:
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );


 
K.o.Z ©   (2003-07-05 00:54) [14]

2 Asteroid © (03.07.03 02:40)
какой пример?


Насчет отсечения невидимых граней:
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );

про это я знаю - я говорю самому не рисовать лишние полигоны в принципе


 
Asteroid ©   (2003-07-05 04:53) [15]

http://delphigfx.mastak.ru/samples/samp37.rar
http://delphigfx.mastak.ru/samples/samp35.rar



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

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

Наверх




Память: 0.5 MB
Время: 0.018 c
1-63124
Dust
2004-01-08 05:12
2004.01.20
Поиск в получиных пакетах


14-63399
sirgfine
2003-12-28 03:19
2004.01.20
Неполадка программы


3-62968
Olivka
2003-12-24 12:49
2004.01.20
Работа с ХП, возвращающими данные через FIBdataset


14-63294
Rauf
2003-12-31 20:47
2004.01.20
(СРОЧНО) В Харьков звонить так: 38 (Украина) 0572 (Харьков)???


14-63302
Nick-From
2003-12-26 21:11
2004.01.20
Система на Atlon XP