ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


Цвет и текстуры - часть 15


(-1.0, -1.0, 1.0),

(-1.0, 1.0, 1.0),

{ 1.0, 1.0, 1.0),

( 1.0, -1.0, 1.0) // Дальняя грань

int iVectors = sizeof(vlist) / sizeof(D3DVECTOR);

int iFaces[] = (4, 0, 1, 2, 3,

4, 4, 7, 6, 5, 4, 8, 11, 10, 9, 4, 12, 13, 14, 15, 4, 16, 17, 18, 19, 4, 20, 23, 22, 21, 0);

/b> IJI'*' Глава 8. Цвет и текстуры

p3hape-»Create (vlist, iVectors, iFaces);

for (int i = 0; i « 6; i++) {

// Загрузить текстуру char buf[64] ;

sprintf(buf, "g%d.bmp", i+1) ;

C3dTexture* pTex = new C3dTexture;

m pScene-»m_ImgList .Append (pTex) ;

if (pTex-»Load(IDB_Gl+i) ) (

// Присоединить текстуру к грани p3hape-»SetFaceTexture(i, pTex) ;

// Получить нормаль к грани C3dVector vn = pShape-»GetFaceNormal (i) ;

// Изменить направление вектора нормали, чтобы он // показывал направление покрытия vn = -vn;

// Вычислить произвольный верхний вектор C3dVector vu •= vn.GenerateUp ();

// Создать покрытие, ориентированное по данной

// грани

C3dWrap wrap;

wrap.Create(D3DRMWRAP_FLAT, NULL,

-s/2, -s/2, -s/2, // Базовая точка vn.x, vn.y, vn.z, // Направление vu.x, vu.y, vu.z, // Верх // Базовая точка текстуры О, pTex-»GetHeight () -1, // Масштаб текстуры (с инверсией) 1.0/s, -1.0/s);

// Наложить покрытие на переднюю грань wrap.Apply(pShape, i);

} }

pShape-»SetName ("Picture cube") ;

m_pScene-»AddChild(pShape) ;

m pScene-»m_ShapeList .Append (pShape) ;

MakeCurrent(pShape) ;

)

Параметры покрытия "^l 201

Цилиндрическое покрытие

Давайте рассмотрим следующий вид покрытия, при котором текстура оборачивается вокруг объекта по цилиндрической поверхности. На Рисунок 8-9 изображен пример наложения цилиндрического покрытия на объект.

Рисунок. 8-9. Цилиндрическое покрытие


Текстура сворачивается в цилиндр, который затем проектируется на поверхность объекта. Я обнаружил, что эта методика придает кроне и стволам моих деревьев более реалистичный вид. На Рисунок 8-10 изображен результат наложения текстур с цилиндрическим покрытием. Вы можете увидеть его на экране, запустив приложение Color и выполнив команду Edit ¦ Insert Тех Map Face.




Начало  Назад  Вперед



Книжный магазин