IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> 3d-графика, Накладывающиеся полигоны.
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Я решил начинать осваивать 3d не с 3DSMax-a, а с более глубокого уровня - типа, как всё это делается "изнутри". Ну создавал максимум выпуклые многогранники, да текстурки на кубик накладывал. И вот мучает меня вопрос: полигон, при выводе, полностью закрашиваетcя? Просто я делал чёрно-белые многогранники (черные грани, белые контуры) и действовал по принципу "Если проекция нормали отрицательна, то рисуем". А вот если полигоны накладываются друг на друга (например, при наложении двух объектов)? Тогда, что? Надо отсортировать полигоны по удалённости от камеры и рисовать, начиная с самых дальних, каждый полностью закрашивая в свой цвет/текстуру? Мне-то надо было для рисования полигона три линии вывести в 3d, а так надо полностью закрашивать что-ли?
ЗЫ. В обучалках этого нет.


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Чтобы не слипалось, нужны промежуточные цвета. Рисуешь объект похожими неиспользуемыми цветами а потом перекрашиваешь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


z-буфер?

или надо каркасные (wireframe) объекты рисовать? тогда ищи довольно сложные и тормозные алгоритмы отсечения невидимых линий...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Могу посоветовать только одно - RTFM smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


Я бы преположил, что стоит сортировать полигоны по удаленности от камеры, закрашивая их целиком. Это, наверное, быстрее, чем искать пересечения и отсекать невидимые фрагменты. Единственное, что нужно решить, это как определить "расстояние от камеры до полигона". Какую точку на полигоне выбрать в качестве конца отрезка?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Ну вот так вот я и хотел недавно сделать спрайтовую 3D-стрелялку - так даже простой кубик со спрайтами 70x70 тормозит (3 fps). Все-таки пора на 32-bit переходить...


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 160
Пол: Мужской
Реальное имя: Серый

Репутация: -  0  +


Зачем так извращаться-то ? А Direct3D на что ? А OpenGL ? Все так и норовят велосипед изобрести... Если есть все необходимые механизмы, зачем их заново придумывать ? (это касается фразы: "хочу написать простую 3D игру), вот для того чтобы понять, как вообще это работает - еще понимаю, я для программ - нет.


--------------------
Все в жизни ботва... Кроме пчел!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Ну так я же не для результата. Я просто хочу разобраться во всем этом с самого начала. Понятно, все что на аппаратном уровне поддерживается незачем программно реализовывать. Но все же хочется начать путь от истоков.


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


А то обычные юзера делают за 30 минут одной мышкой мини 3D-шку и доказывают, что круты, хотя почти и не шарят в этом. Не хочу таким быть.


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 160
Пол: Мужской
Реальное имя: Серый

Репутация: -  0  +


Аааа... В принцыпе, подход правильный. На самом деле, можно сэмулировать Z-буффер: есть массив объектов, а есть массив, в котором номера выводимых объектов сортируются и объекты выводятся по мере удаления (или приближения, или еще как-нибудь) по номеру в буфере... Должно работать.


--------------------
Все в жизни ботва... Кроме пчел!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


[offtop]
Цитата
Я просто хочу разобраться во всем этом с самого начала.

Респект! Тоже когда-то таким был... пока не разленился...[/offtop]

Сообщение отредактировано: Бродяжник -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Класная тема!!! Меня самого это жутко интересует. Эксперементировал много (как пример смотри тему "Labyrinth"), но очень хочется узнать, как это делают большие дяди програмисты smile.gif .
Насчёт сортировки по удалённости, подход правильный, на мой взгляд. От каких точек считать? От средних - это будит алгоритм художника. Правда подходит он только для выпуклых многогранников, с другими могут быть проблемы неправильного перекрывания.
А Direct3D и OpenGL - это не интересно, согласен. В старых играх (да и в новых, некоторых) был режим софтверной отрисовки. Вот там всё это делалось вручную. Эх, были же времена... <_<


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Цитата(Archon @ 10.06.05 13:28)
Эх, были же времена...


Ага! Тогда 2-3 человека могли такооое написать! По крайней разработчику игр было легче утвердится (ИМХО)...


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Z-buffer конечно дело хорошее, надёжное, но очень медленное, т.к в сложных сценах рисование ВСЕХ видимых полигонов не оптимально. Оказывается есть такой метод "обратной трассировки лучей". Из каждой точки экрана берётся перпендикулярный ему луч и ищется полигон, с которым он пересекается. Но неужели перебираются ВСЕ полигоны?! Если кто слышал о таком, не могли бы вы объяснить (на словах) как реализуется этот метод?


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.05.2024 6:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name