Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Карта нормалей. 
:(
    Опции темы
zMan
Дата 11.3.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.6.2006
Где: Новосибирск

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



Доброго времени суток.

Меня интересует, каким образом создаются карты нормалей для текстур, например, для реализации bump mapping.

Если кто нибудь знает - буду очень благодарен!
PM MAIL WWW ICQ   Вверх
Snowy
Дата 11.3.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Вот список статей по теме:
http://www.google.com/search?hl=ru&inl...=www.gamedev.ru
PM MAIL   Вверх
Alexeis
Дата 11.3.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Можно нормаль и вручную посчитать. Для этого нужно всего 3 точки. По ним строятся 2 вектора, с одной общей точкой в конце каждого из векторов. Векторное произведение векторов есть вектор перпендикулярный плоскости образованной первыми двумя. Теперь остается его нормализовать, т.е. координаты разделить на длину вектора.

Вот моя реализация в виде модуля. Функция Normal - возвращает нормаль полученную по 3м точкам. В зависимости от того в каком порядке указаны вершины, получаем либо внешнюю нормаль либо внутреннюю.
Код

unit GLAux;

interface

uses OpenGl;

const
   opengl32 = 'opengl32.dll';

type
 TPoint = Record
            x, y, z : Single
          end;

 TVector = Record
             x,y,z :  Single
           end;

 AUX_RGBImageRec = Record
    sizeX, sizeY : GLint;
    data : array of Byte;
 end;


procedure glTexSubImage2D (target: GLEnum; level, xoffset, yoffset: GLint; width, height: GLsizei; format,
    atype: GLEnum; pixels: Pointer); stdcall; external opengl32;

procedure glGenTextures (n : GLsizei; textures : pGLuint); stdcall; external opengl32;
procedure glBindTexture (target : GLenum; texture : GLuint); stdcall; external opengl32;

Function MakeV(var p1, p2 : TPoint) : TVector;
Function VMultVector(v1, v2 : TVector) : TVector;
Function Normal(var p1, p2, p3 : TPoint) : TVector;

implementation

Function MakeV(var p1, p2 : TPoint) : TVector;
Begin
  Result.x := p2.x - p1.x;
  Result.y := p2.y - p1.y;
  Result.z := p2.z - p1.z;
end;

Function VMultVector(v1, v2 : TVector) : TVector;
Begin
  Result.x := v1.y * v2.z - v2.y * v1.z;
  Result.y := v2.x * v1.z - v1.x * v2.z;
  Result.z := v1.x * v2.y - v2.x * v1.y
end;

Function Normal(var p1, p2, p3 : TPoint) : TVector;
var
  t : Extended;
Begin
  Result := VMultVector(MakeV(P2, P1), MakeV(P3, P1));
  t := 1 / Sqrt(Sqr(Result.x) + Sqr(Result.y) + Sqr(Result.z));
  Result.x := Result.x * t;
  Result.y := Result.y * t;
  Result.z := Result.z * t;
end;

end.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




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


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

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