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


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


До настоящего момента мы связывали цвет с сеткой объекта. Оказывается, связать цвет можно и с фреймом, содержащим визуальный элемент объекта. Тем самым мы указываем фрейму, что при воспроизведении визуального элемента на экране его цвет должен быть взят из фрейма, а не из сетки. Позднее мы увидим, что аналогичная методика также используется и для наложения различных текстур на дубликаты одной и той же фигуры (текстура связывается с фреймом, а не с визуальным элементом объекта).

Цвет фрейма задается функцией C3dShape::SetFrameColor. Кроме того, вы должны разрешить использование цвета фрейма, вызывая функцию C3dFrame::SetMaterialMode(D3DRMMATERIAL_FROMFRAME). В приложении Color работа с ней продемонстрирована на примере функции, которая создает красную сферу и затем копирует ее, варьируя цвет (команда Edit Color from Frame). Ниже приведен фрагмент функции, в котором создается красная сфера и первая копия:

Цвет

/b>

void CMainFrame::OnEditClrframe()

t

// Создать первую сферу C3dShape* pShape = new C3dShape;

pShape-»Create3phere (1) ;

pShape-»SetColor (1, 0, 0); // Красный цвет m_pScene-»AddChild(pShape) ;

m p3cene-»m_ShapeList. Append (pShape) ;

MakeCurrent(pShape) ;

pShape-»SetName ("Red master") ;

// Создать копию C3dShape* pClonel = m_pCurShape-»Clone () ;

m_pScene-»m_ShapeList. Append (pClonel) ;

m_pScene-»AddChild(pClonel) ;

pClonel-»SetPosition(-2, 0, 0) ;

// Задать цвет, связанный с фреймом копии pClonel-»SetMaterialMode(D3DRMMATERIAL_FROMFRAME) ;

pClonel-»SetFrameColor(0, 1, 0); // Green pClonel-»SetName ( "Green clone") ;

}

Чтобы задать цвет объекта-копии, достаточно связать этот цвет с фреймом копии (вместо визуального элемента) и вызвать функцию SetMaterialMode с аргументом D3DRMMATERIAL FROMFRAME.

Свойства материала

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




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



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