Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Самопальный рендер на канве   Найти похожие ветки 

 
Pa5ha   (2004-07-03 01:23) [0]

Хочу написать 3д движок для своих нужд, общего развития и вообще просто организм требует. Пока есть такие проблеммы:
1. Как накласть текстуру?
2. Как сделать отсечение (одной передней плоскости думаю хватит)?
3. Как сделать ZBuffer?
Просьба на примеры не посылать и ф1 не предлагать. Меня интересует не реализация, а принципы и желательно словами (кому лень писать, но у кого есть, что сказать можно оч. коротко).
Спасибо всем заранее.


 
pavia   (2004-07-03 20:42) [1]

Где-то видел все что тебе нужно.Но не нашел.
X,Y координаты экранный. Z уходит в глубь монитора.
3. ZBuffer-это легко.Что из себя представляет ZBuffer?Ответ мосив размером с облость вывода.Каждое значение элемента это координата Z для данного пикселя. Если пиксель, который мы выводим лежит ближе. тое его координата Z меньше чем та которая лежит в Zбуфере то мы заносем его в Zbuffer, а пиксель ресуем.Иначе нет.
2.Как сделать осечение?Есть разные методы.Несовсем понял коментария.Не выводить пиксели у которых Z меньше 0.
Фракталы(Один из методов отсечения).Отсечение завис от задачи.
1.Текстуирование тоже есть разные методы.Сейчас ни один не помню.

Алгоритм художника.
Позволяет быстро не используя Zбуфера.Вывести фигуры.Но он работает не для всех фигур.


 
pavia   (2004-07-03 21:07) [2]

Ошибся не Фракталы ,а порталы.Еще про отсечение. Выодим только правельные триугольники.(Правельным считается триугольник с вершинами расположеными против часовой стрелке).Это делаеться для того чтобы не рисовать то ,что мы не видем.Пример задняя стенка кубика.


 
pavia   (2004-07-03 21:09) [3]

Ищи demo.design 3D programming FAQ там есть все.


 
Pa5ha   (2004-07-04 13:57) [4]

pavia, спасибо. Пошукаю. нЕкоторые пояснения:
1. допустим у меня есть три точки (X,Y) - проекции (X,Y,Z) на экран и для каждой (U,V). Как лучше нарисовать треугольник (ну не полигоны же юзать) и как для каждой точки треугольника найти соотв точку текстуры?
2. в ДХ и в ГЛ есть передняя и задняя отсекающая плоскости, чтоб сократить количество рисуемых объектов и соотв. объем вычислений.

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

Или как тогда считать Z каждой точки треугольника?

3. про Z-Buffer я все знаю. Вопрос: известно три точки,(X,Y,Z)-координаты каждой точки в 3д. Как лучше нарисовать этот треугольник и для каждого пиксела на холсте посчитать Z координату?


 
Pa5ha   (2004-07-04 15:08) [5]

pavia, спасибо, что послал на фак. Там стоко всего полезного... Я в диком восторге. Уже почти все, что хотел нашел.



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

Форум: "Media";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
3-1093521589
Топ
2004-08-26 15:59
2004.09.26
Дельфи+фокспро


3-1093604207
Dima
2004-08-27 14:56
2004.09.26
проблема с dbExpress и Oracle


14-1094399846
Igorek
2004-09-05 19:57
2004.09.26
Сможем ли мы когда-нибуть увидеть Большой Взрыв и другие космосы?


11-1080766748
Максим
2004-04-01 00:59
2004.09.26
Как в RichEdit добавить картинки?


1-1094893452
AntiGen
2004-09-11 13:04
2004.09.26
Алгоритм случайного выбора без повтора





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