LINUX.ORG.RU

[3D][Алгоритмы] Построение Face по точкам

 ,


0

1

У себя я использую достаточно примитивную, но оптимизированную технологию - два режима отрисовки - только точки (пример) и только линии (пример). (* На самом деле режима 4 (цветной\зелено-черный), но это сейчас не важно *). Я хочу добавить режим рисования полигонов. Подбросьте, пожалуйста, литературы по этому вопросу. Я думаю, что один из путей - нахождение нормалей к плоскости face`са, но такой метод будет работать только для выпуклых поверхностей.

И бонус вопрос - подбросьте, пожалуйста, алгоритм проверки вхождения точки в четырехугольник произвольной формы.

Спасибо.

Я так понимаю, речь идет о построении графика функции двух переменных? Лучше такие вещи рисовать цветом (цвет точки зависит от знач ф-ии). Еще лучше взять напр MathGL, там это (и многое другое, в т.ч. и полигоны) давно реализовано.

Я то велосипеды строю потому что у нас форматы данных специфические, а Вам оно зачем?

AIv ★★★★★
()
Ответ на: комментарий от AIv

>речь идет о построении графика функции двух переменных?

Нет. О построении трехмерной модели по изображению + вообще такую фичу в движок.

AlexCones ★★★
() автор топика

>Подбросьте, пожалуйста, литературы по этому вопросу.

Лови: Ласло М. Вычислительная геометрия и компьютерная графика на C++ (djvu, 19,05 MB).

>алгоритм проверки вхождения точки в четырехугольник произвольной формы.

Метод луча (стр.144): int pointInPoligon(Point &a, Poligon &p).

quickquest ★★★★★
()

Я думаю, что один из путей - нахождение нормалей к плоскости face`са, но такой метод будет работать только для выпуклых поверхностей.

Это будет работать. Я только недавно на флеше начал софт рендерер писать:
http://flashgamedev.ru/viewtopic.php?f=6&t=4355
И столкнулся с такой же задачей. Поверхность не обязана быть выпуклой.

Вообще, я по этому поводу задумал написать серию статей:
http://flashgameblogs.ru/blog/developing/799.html
но пока до отрисовки треугольников не дошёл :)

Вот тебе ссылки на хорошие маны:
http://pmg.org.ru/basic3d/index.html
http://www.enlight.ru/faq3d/content.htm

NightmareZz
()

Подбросьте, пожалуйста, литературы по этому вопросу.

Ну так это ж классика — закраска Фонга (раз||два), закраска Гуро (раз||два).

В этой книжке всё это, емнип, даже на псевдокоде было:

Название: Алгоритмические основы машинной графики
Автор: Роджерс Д.
Издательство: Мир
Год издания: 1989
Число страниц: 512
ISBN: 5-03-000476-9

blexey ★★★★★
()
Ответ на: комментарий от NightmareZz

>Поверхность не обязана быть выпуклой.

Что насчет тора? Если мы начнем рисовать внутренние грани, он будет вывернутым наизнанку.

AlexCones ★★★
() автор топика

Хочу напомнить о таком неожиданном слове, как «триангуляция». Авось, поможет.

Shtucer
()
Ответ на: комментарий от AlexCones

Что насчет тора? Если мы начнем рисовать внутренние грани, он будет вывернутым наизнанку.

Дык, ясен пень, нужно невидимые грани отсекать. Метод в «лоб» - z-буфер.

NightmareZz
()
Ответ на: комментарий от NightmareZz

Ваша работа? По какому справочнику делали? По тому, на который дали ссылку? А кодъ увидеть нельзя?

AlexCones ★★★
() автор топика
Ответ на: комментарий от AlexCones

Ваша работа? По какому справочнику делали? По тому, на который дали ссылку?

Моя работа. Делал по справочнику, на который дал ссылку.

А кодъ увидеть нельзя?

Можно. Давай мыло - вышлю. Или скажи, куда выложить.

Только код там далеко не шикарен, ибо это было скорее исследование и изучение, а не полноценный проект )

NightmareZz
()
Ответ на: комментарий от NightmareZz

>Давай мыло - вышлю

Мой ник @gmail.com

код там далеко не шикарен


Это не важно. просто хорошо иметь перед глазами пример.

AlexCones ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.