Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
14-63303
Thor
2003-12-27 00:48
2004.01.20
какой программой открыть файл формата nmb?


1-63184
oens
2004-01-10 08:52
2004.01.20
шрифт


14-63383
Juster~~
2003-12-28 11:43
2004.01.20
SB Live!


14-63344
Igorek
2003-12-26 13:16
2004.01.20
Порекоммендуйте программу чтения новостей


11-63048
Юрий
2003-05-04 18:43
2004.01.20
TKolRichEdit и TKolListBox





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