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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> свет и тень directx, при включении света исчезают тени 
V
    Опции темы
Nick007
Дата 16.5.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

если кто сталкивался с проблемой отсутствия теней 
и победил ее,
пожалуйсто напишите как вы это сделали.

может отрисовку теней дополнительно включать надо
или наоборот что то отключить нужно?

Добавлено через 6 минут и 41 секунду
я включаю свет так:

1 создаю источник света
2 запускаю конвеер освещения
3 подключаю источник
4 включаю его

больше никаких движений не делалаю.
свет есть , тени нет.
PM MAIL WWW   Вверх
Nick007
Дата 16.5.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проблема решена:
у источника света есть несколько составляющих:
фооновый 
рассеивающий и
отраженный свет.
еслифоновую составляющую поставить на максумум: 1.0f
то вместо тени обект будет полостью осчещен изнутри

чтобы у объекта была затененная сторона
фоновую составляющую объекта нужно обнулить
или выставить на 10-40 процентов,
(1.0f == 100%)
чтобы не освещенная сторона была слегка видна
Код


    D3DLIGHT9 PointLight;

bool initLight(D3DLIGHT9 &PointLight,IDirect3DDevice9 **pD3DDevice,int type)
{
    D3DLIGHT9 PointLight;

    // Очищаем структуру
    ZeroMemory(&PointLight, sizeof(D3DLIGHT9));

    // Располагаем источник света в точке 0.0, 100.0, 200.0
    PointLight.Position = D3DXVECTOR3(0.0f, 100.0f, 200.0f);// для зонального и точечного

switch (type){
        case 0:
    PointLight.Type = D3DLIGHT_POINT;//точечный
            break;
        case 1:
    PointLight.Type = D3DLIGHT_SPOT;//зональный
            break;
        case 2:
    PointLight.Type = D3DLIGHT_DIRECTIONAL;//направленный
            break;
        case 3:
    PointLight.Type = D3DLIGHT_FORCE_DWORD;
            break;
    }

    //---точечный

    //сассеиваемый свет
    PointLight.Diffuse.r = 0.7f;
    PointLight.Diffuse.g = 0.7f;
    PointLight.Diffuse.b = 0.7f;
    //фоновый свет
    PointLight.Ambient.r = 0.0f;
    PointLight.Ambient.g = 0.0f;
    PointLight.Ambient.b = 0.0f;
    //отражаемый свет
    PointLight.Specular.r = 1.0f;
    PointLight.Specular.g = 1.0f;
    PointLight.Specular.b = 1.0f;
    //фоновый свет

    // Устанавливаем дальность равной 1000 единиц //направление для зонального и точечного
    PointLight.Range = 30.0f;


    //---направленный
    D3DXVECTOR3 Dir = D3DXVECTOR3(-10.0f, 0.0f, 0.0f);//направление для зонального и направленного

    //---зональный
    // Задаем затухание внутри конуса для зонального
    PointLight.Falloff = 1.0f;

    // Устанавливаем размеры конусов для зонального
    PointLight.Phi   = 0.3488;   // Внешний 20 градусов
    PointLight.Theta = 0.1744;   // Внутренний 10 градусов

    D3DXVec3Normalize((D3DXVECTOR3*)&PointLight.Direction, &Dir);

           //Чтобы включить конвейер освещения используйте следующий код:
    (*pD3DDevice)->SetRenderState(D3DRS_LIGHTING, TRUE);

    // подключение источника света
    (*pD3DDevice)->SetLight(0,&PointLight);
    // Включение источника света
    (*pD3DDevice)->LightEnable(0, TRUE);
}



Это сообщение отредактировал(а) Nick007 - 16.5.2010, 23:17
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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