![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
Здорова мужики! У меня такая проблема: пишу прогу, которая по нескольким изображениям объекта (максимум шесть) строит текстурную карту, а за тем накладывает ее на 3D-модель. Так вот, у меня возникла проблемка: модель представляет собой множество треугольников. Я нахожу какой треугольник на модели лучше всего соответствует тому или другому изображению, затем мне нужно взять этот треугольник и "прилепить" его к текстурной карте, причем текстурная карта тоже состоит из треугольников, количество которых равно количеству треугольников модели. Понятно, что текстурная карта должна состоять из одинаковых по размеру прямоугольных треугольников (чтобы она получилась прямоугольной), а модель состоит из абсолютно произвольных треугольников.. так вот, у меня вопрос:
1) как мне с помощью openGL произвольный треугольник наложить на прямоугольный треугольник определенного размера? 2) и как прогрограммно создать такую текстурную карту и сохранить ее в файл, например *.bmp? Добавлено через 1 минуту и 22 секунды Зараннее спасибо!! -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
В последовательности вызовов функций сообщающих вершины примитивов присутствуют вызовы функций сообщающих OpenGL текстурные координаты, соответствующие конкретным вершинам примитива.
например glTexCoord2f(0.237867, 0.7884687); указывает для конкретной вершины текстурные координаты твоей текстуры. В общем это элемент, который знает каждый программер использующий OpenGL. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
если отвечаете, то отвечайте пожалуйста по существу. Я знаю функцию glTexCoord2f. Вопрос в том как программно создать текстурную карту по изложенному выше мотоду. -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
Из нескольких изображений нужно построить одно изображение, которое содержит в различных областях все исходные изображения.
Допустим я не знаю высокоуровневых средств для решения этой задачи, но смог бы составить функцию, которая выполняет эту задачу. Мной составленная функция, например, получала бы массив пикселов текстурной карты исходя из массивов пикселов исходных текстур. Это сообщение отредактировал(а) sgi1981 - 2.5.2007, 15:48 -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
![]() -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
sgi1981 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
Не обязательно. Текстурная карта прямоугольная может содержать изображения любой формы. И при этом на ней будут области не используемые, но за расходы памяти переживать не стоит, поскольку решение может быть таким: неиспользуемую область текстуры нужно заполнить пикселами одинакового цвета и хранить текстуру в видеопамяти в сжатом формате. Сжатие при этом обеспечит минимальные расходы информации для кодирования соседних пикселов одинакового цвета. Сжатие происходит автоматически, если в функции определения текстуры параметр internalFormat равен, например, GL_COMPRESSED_RGB. И потом RWander пишет
То есть произвольный треугольник вы накладываете, я так понял - это часть текстуры текстурной карты, но вы же писали, что необходимы в текстурной карте именно прямоугольные треугольники. Если не существует подобия геометрических фигур текстурных изображений и геометрических фигур примитивов, то вариантов выгодного наложения текстуры много. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||
|
|||||
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
sgi1981,
Если Вам не сложно, можно привести пример как это реализовать программно, т.к. с OpenGl я знаком не очень давно.. ![]() ![]() Как я представляю себе этот процесс: 1)подсчитываю количество треугольников в 3D-модели 2)создаю плоскость, состоящую из прямоугольных треугольников определенного размера, количество которых = количеству треугольников в модели 3)Выбираю какой треугольник на одном из изображении больше всего соответствует треугольнику на 3D-модели 4)копирую этот треугольник в текущий треугольник(который является прямоугольным треугольником) на плоскости (будущей текстурной карте) 5)Для всех треугольников модели выполнять пункты 3 и 4. 6)Сохраняю текстурную карту в вайл texmap.bmp так вот мне не понятно как: 1) реализовать пункт 4. ![]() 2) реализовать пункт 6. ![]() если есть какой то лучший способ создания текстурной карты, то буду очень благодарен -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
Вообще для вас текстурную карту можно создавать в стандартном графическом редакторе Paint, что входит в состав WINDOWS. А еще лучше - Адобе Фотошоп использовать.
Добавлено через 4 минуты и 56 секунд Только при этом нужно будет работать вручную. Второй вариант - создать программу для генерации текстурных карт из исходных изображений. На вход вы подаете несколько файлов текстур (выбираются в диалоге), а на выходе - один файл текстурной карты (тоже выбирается в диалоге), и файл с текстурными координатами для каждого примитива. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |