Форум: "Игры";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизПроверка на видимость Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c