![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Нужна помощь как по точкам (X,Y,Z) построить поверхность в Delphi. Я решил использовать OpenGL, но вот проблема нигде не могу найти примера, совета... Просмотрел весь форум по 2-3 ответа, но все равно ничего не ясно. Мне бы для начала понять саму идею как это делается... Как мне показалось, облазил весь интернет, поэтому буду рад абсолютно любому совету, примеру...
Строить нужно имеено по точка, поверхность заведомо не известная.. и точки могут лежать как внутри нее так и на границе... Поверхность должна быть сеткой, то есть прозрачная отчасти... |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Что-то никто на эту тему не хочет говорить, даже идей)))
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Есть идеи, времени нет
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Благодарю. Вот хоть что-то... немножко бы подробнее было бы вообще чудесно
Это сообщение отредактировал(а) Mixasik - 21.7.2008, 16:39 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Любой паре X, Y должно соответствовать уникальное значение Z по определению.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
С пространственным мышлением у меня что-то плохо... То есть надо выделить три точки через которые можно провести плоскость, то есть они не должны лежать на одной прямой потом найти к ним нормаль... и вызвать некую функцию OpeGL? (Какую? Нужно чтобы поверхность как бы была обтянута сеткой и было видно поверхности за ней и т.д) |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Mixasik, на счет нормалей и добавления точек все уже было, нуна тока поиском воспользоваться. Эту задачу уже решали много раз.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
А насчет сетки и видимости дальних поверхностей?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Нинаю чего ето. В Опенгл работает отсечение полигонов по нормалям + z-buffer. Этого хватает пока что, тем более что реализовано аппаратно в видеокартах. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
То есть поверхность с меньшим числом z итак будет на заднем фоне? Я вот не понял одного - мне потребуется найти вершинные точки поверхности, а потом брав их по три находить нормаль?
И в итоге передавать в какую функцию?) p.s Может как-нибудь я напишу по icq? Это сообщение отредактировал(а) Mixasik - 21.7.2008, 20:21 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Все уже было см. http://forum.vingrad.ru/index.php?show_typ...howtopic=204885
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Спасибо... буду копать в той стороне. Этот метод называется методом четверок?)
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
А точки у тебя задаются сразу все или надо получать поверхность полсе каждой следующей точки?
Ну в любом случае это задача триангуляции. То есть разбиение набора точек на группы из 3-х точек... После триангуляции у тебя будет n-2 треугольников, где n - кол-во точек. А функция, возвращающая нормаль выглядит примерно так (но пример привожу для DirectX):
Так что копай в сторону триангуляции Это сообщение отредактировал(а) Bitter - 21.7.2008, 21:37 |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Благодарю... ТАк и сделаю... а точки задаются все сразу они считаются отдельно и потом передаются в компонент
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Допустим я всзял по три точки, нашел нормаль, а как дальше в openGL нарисовать поверхность(то есть обтянуть сеткой)?
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Mixasik,
Грузишь текстуру сетки с альфой. Дальше рисуешь полик с ней:
При инициализации нужно включить альфатест glEnable(GL_ALPHA_TEST); Это сообщение отредактировал(а) TDM - 22.7.2008, 17:28 |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
А можно подробнее? Что такое tex, tc1, tc2, tc3, v1, v2, v3?
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
tex - идентификатор загруженной текстуры
tc* текстурные координаты полигона v* координаты вершин |
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Понятно
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
vector2 = record
u : single; v : single; end; vector3 = record x : single; y : single; z : single; end; tex - cardinal tc - vector2 v - vector3 Это сообщение отредактировал(а) TDM - 23.7.2008, 22:48 |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Чесно говоря подобную задачу гораздо проще режить с помощью GLScens.
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
А что такое в данном случае - "s"? |
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Mixasik,
число на которое делится вектор v |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
http://glscene.ru/ Там есть примеры и форум... Скажу так мне как то нужно было сделать 3д график ввиде куба в катором были бы точки по трем координатом так я с помощью этой компоненты сделал все буквалня за 30 минут. Там есть работа с поверхностями и прочее... посомортри не подоидет можеш тогда дальше изобретать вилосипед
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
||||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
оно может быть любым каким тебе надо
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
||||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
А что за вектор ты туда подставляешь?
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Который v3 то есть v1,v2 - это координаты первых 2 точек, а v в данном случае ретьей...
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
И зачем его делить? Этож координата точки
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Хм.. Буду разбираться глубже, пока снова глупостей не сморозил...
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Делить надо при нормализировании нормали, когда делишь вектр на его длину.
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Ясно, то есть когда найду координаты нормали надо их поделить на ее длину..?
|
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
да, только не координаты а вектор
|
|||
|
||||
| Mixasik |
|
|||
|
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
TDM,
Вот все таки не совсем понял, например у меня есть массив вершин
v1,v2,v3 - это координаты 3-х точек треульника, normal - нормаль. Мне надо построить по этому массиву поверхность (должны быть точки обтянутые сеткой). Как мне быть? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |