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


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


Задавая параметры материала, можно до некоторой степени управлять тем, насколько блестящим будет выглядеть материал и будет ли он самостоятельно излучать свет. Интерфейс IDirect3DRMMaterial содержит три функции, определяющие основные свойства материала: цвет испускаемого им света (если он имеется), цвет зеркального отражения и показатель степени для уравнения зеркального отражения.

Вполне возможно, что от всего сказанного вы чувствуете себя слегка не в себе. В таком случае давайте рассмотрим пример. На Рисунок 8-2 изображены сферы с различными параметрами (показателями степени и свойствами излучаемого света). Однако на печати уловить отличия между ними довольно трудно, так что я советую присмотреться к сферам на экране вашего компьютера (кроме того, посмотрите на полноценный вариант этого рисунка на цветной вкладке). Запустите приложение Color и выполните команду Edit ¦ Materials.

Рисунок. 8-2. Сферы с различными свойствами материала


Свойства материала '^il 189

Посмотрите на верхний ряд. Левый шар был создан со свойствами материала, принятыми по умолчанию. Центральный шар излучает красный свет, так что он выглядит как бы светящимся. Правый шар тоже излучает красный свет, но он обладает более высоким показателем степени зеркального отражения (400), отчего его поверхность становится более похожей на металл. Все шары в среднем ряду имеют белый цвет, но их показатели степеней равны 3, 10 и 50. В нижнем ряду все шары красные, а показатели степени равны 100, 500 и 2000.

Чтобы немного облегчить работу со свойствами материала, я создал класс C3dMaterial:

class C3dMaterial : public C3d0bject

{

public:

DECLARE_DYNAMIC(C3dMaterial) ;

C3dMaterial() ;

virtual --C3dMaterial () ;

void SetEmissiveColor(double r, double g, double b) ;

void SetSpecularPower(double p);

void SetSpecularColor(double r, double g, double b) ;

IDirect3DRMMaterial* Getlnterface() {return m_pIMat;}

protected:

IDirect3DRMMaterial* m_pIMat;

};

Ниже приведен фрагмент кода, в котором создается красный шар в середине нижнего ряда на Рисунок 8-2. Это является типичным примером использования класса C3dMaterial:




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



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