Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание текстурной карты по неск. изображениям 
:(
    Опции темы
RWander
Дата 1.5.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Здорова мужики! У меня такая проблема: пишу прогу, которая по нескольким изображениям объекта (максимум шесть) строит текстурную карту, а за тем накладывает ее на 3D-модель. Так вот, у меня возникла проблемка: модель представляет собой множество треугольников. Я нахожу какой треугольник на модели лучше всего соответствует тому или другому изображению, затем мне нужно взять этот треугольник и "прилепить" его к текстурной карте, причем текстурная карта тоже состоит из треугольников, количество которых равно количеству треугольников модели. Понятно, что текстурная карта должна состоять из одинаковых по размеру прямоугольных треугольников (чтобы она получилась прямоугольной), а модель состоит из абсолютно произвольных треугольников.. так вот, у меня вопрос:
1) как мне с помощью openGL произвольный треугольник наложить на прямоугольный треугольник определенного размера?
2) и как прогрограммно создать такую текстурную карту и сохранить ее в файл, например *.bmp?

Добавлено через 1 минуту и 22 секунды
Зараннее спасибо!!


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
sgi1981
Дата 1.5.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: нет
Всего: 10



В последовательности вызовов функций сообщающих вершины примитивов присутствуют вызовы функций сообщающих OpenGL текстурные координаты, соответствующие конкретным вершинам примитива.
например 
glTexCoord2f(0.237867, 0.7884687);
указывает для конкретной вершины текстурные координаты твоей текстуры.

В общем это элемент, который знает каждый программер использующий OpenGL.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
RWander
Дата 1.5.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Цитата(sgi1981 @  1.5.2007,  17:41 Найти цитируемый пост)
В общем это элемент, который знает каждый программер использующий OpenGL.


если отвечаете, то отвечайте пожалуйста по существу. Я знаю функцию glTexCoord2f. Вопрос в том как программно создать текстурную карту по изложенному выше мотоду.


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
sgi1981
Дата 2.5.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: нет
Всего: 10



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

Допустим я не знаю высокоуровневых средств для решения этой задачи, но смог бы составить функцию, которая выполняет эту задачу.
Мной составленная функция, например, получала бы массив пикселов текстурной карты исходя из массивов пикселов исходных текстур.

Это сообщение отредактировал(а) sgi1981 - 2.5.2007, 15:48


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
RWander
Дата 2.5.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Цитата(sgi1981 @  2.5.2007,  15:46 Найти цитируемый пост)
но смог бы составить функцию, которая выполняет эту задачу.

 smile  Буду очень благодарен!!



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
sgi1981
Дата 3.5.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: нет
Всего: 10



Цитата

Понятно, что текстурная карта должна состоять из одинаковых по размеру прямоугольных треугольников (чтобы она получилась прямоугольной)

Не обязательно. Текстурная карта прямоугольная может содержать изображения любой формы. И при этом на ней будут области не используемые, но за расходы памяти переживать не стоит, поскольку решение может быть таким:
неиспользуемую область текстуры нужно заполнить пикселами одинакового цвета и хранить текстуру в видеопамяти в сжатом формате. Сжатие при этом обеспечит минимальные расходы информации для кодирования соседних пикселов одинакового цвета. Сжатие происходит автоматически, если в функции определения текстуры параметр internalFormat равен, например, GL_COMPRESSED_RGB.

И потом RWander пишет
Цитата

а модель состоит из абсолютно произвольных треугольников.. 
....
1) как мне с помощью openGL произвольный треугольник наложить на прямоугольный треугольник определенного размера?

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


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
RWander
Дата 3.5.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



sgi1981
Если Вам не сложно, можно привести пример как это реализовать программно, т.к. с OpenGl я знаком не очень давно.. smile Как мне программно создать такую текстурную карту и сохранить ее в файл? smile 

Как я представляю себе этот процесс:
1)подсчитываю количество треугольников в 3D-модели
2)создаю плоскость, состоящую из прямоугольных треугольников определенного размера, количество которых = количеству треугольников в модели
3)Выбираю какой треугольник на одном из изображении больше всего соответствует треугольнику на 3D-модели
4)копирую этот треугольник в текущий треугольник(который является прямоугольным треугольником) на плоскости (будущей текстурной карте)
5)Для всех треугольников модели выполнять пункты 3 и 4.
6)Сохраняю текстурную карту в вайл texmap.bmp

так вот мне не понятно как:
1) реализовать пункт 4.   smile  
2) реализовать пункт 6. smile 

если есть какой то лучший способ создания текстурной карты, то буду очень благодарен


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
sgi1981
Дата 3.5.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: нет
Всего: 10



Вообще для вас текстурную карту можно создавать в стандартном графическом редакторе Paint, что входит в состав WINDOWS. А еще лучше - Адобе Фотошоп использовать.

Добавлено через 4 минуты и 56 секунд
Только при этом нужно будет работать вручную.
Второй вариант - создать программу для генерации текстурных карт из исходных изображений.
На вход вы подаете несколько файлов текстур (выбираются в диалоге), а на выходе - один файл текстурной карты (тоже выбирается в диалоге), и файл с текстурными координатами для каждого примитива.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.