Войти
ПрограммированиеФорумГрафика

Граница дня и ночи на плоской карте Земли (3 стр)

Страницы: 1 2 3
#30
21:45, 23 мар 2020

urii
Единственное, что мне бросилось в глаза, так это то, что сферу ты строишь не правильно! Возможно я ошибаюсь, т.к. очень внимательно в коде не разбирался. Но! Я содрал как-то класс сферы из какого-то урока и всегда его использовал для своих экспериментов, он работал, я не парился! Но как-то раз в дурапедии увидел уравнение сферы, и оно отличалось от того, что я строил.
У меня было так ось Y вверху, что логично, в OpenGL правосторонняя система координат:
float X = cosf(theta) * sinf(phi);
float Y = cosf(phi);
float Z = sinf(theta) * sinf(phi);
А в дурапедии ось Z вверху:
Изображение
Как только я поменял у себя в примере оси Y и Z, чтоб было как в дурапедии, свет у меня пропал... то есть он так же был... но я его уже не видел...
так что скорее всего, ты карту выводишь в координатах X и Y, а свет у тебя идёт с оси X вдоль картинки, поэтому нифига теней нету!!! Ещё раз, в коде я особо не разбирался, и скорее всего там всё верно!

#31
0:34, 27 мар 2020

фишка не в буфере глубины. Вот накидал тест для цилиндра (синий) и его развертки (красная) и все работает....

photo-2020-03-23-23-28-14

https://dropmefiles.com/uXdR7

буду еще раз проверять математику координат и нормалей...

#32
23:42, 30 мар 2020

Ivashka

Ну да, судя по всему у тебя нормали всё таки неправильные.

самое забавное что не нормали. случайно обратил внимание  что если выключаю вывод текстур то тень появляется...

Изображение
#33
12:18, 31 мар 2020

Попробовал на тестовом примере, откуда выпилил все лишнее:
Изображение

код примера: https://dropmefiles.com/ghrli

Красный квадрат это версия без текстуры.
Зеленый - попробовал натянуть однотонную текстуру зеленого цвета и нифига тени не работают...

У кого есть мысли?

#34
19:29, 31 мар 2020

возможно вот это тебе пригодится https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/

"If pname is GL_TEXTURE_ENV_MODE, then params is (or points to) the symbolic name of a texture function. Six texture functions may be specified: GL_ADD, GL_MODULATE, GL_DECAL, GL_BLEND, GL_REPLACE, or GL_COMBINE."

поменяй режимы, может что сыграет

#35
15:24, 1 апр 2020

агрессор

поменяй режимы, может что сыграет

Спасибо Большое!!! Проблема действительно оказалось в этом.

Плюс для текстур надо убрать.

glEnable(GL_COLOR_MATERIAL); //отображение цветов материалов

.
Источник: https://www.cyberforum.ru/opengl/thread1883375.html

Я остановился на варианте GL_MODULATE. При этом для того чтобы текстура отображалась нормально без освещения нужно также задать цвет glColor:

GL_MODULATE:
     
Cv=At*Cf или Cv=Cf*Ct

Здесь используются следующие обозначения:

          C - RGB-значение
          A - альфа-значение
          f - значение RGB или альфа, получаемое из фрагмента, на который
                  осуществляется наложение (значение, получаемое в результате
                  вычисления освещенности или задаваемое командой glColor, в
                  случае, когда расчет освещенности выключен)
          t - значение RGB или альфа, получаемое из текстуры

источник: http://steps3d.narod.ru/tutorials/tutorial-4.html

По умолчанию :

GL_TEXTURE_ENV_MODE defaults to GL_MODULATE and GL_TEXTURE_ENV_COLOR defaults to (0, 0, 0, 0).

источник: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexEnv.xml

Страницы: 1 2 3
ПрограммированиеФорумГрафика

Тема в архиве.