[personal profile] victor_chapaev
 Об трехмерную графику 2


     Неужели никто не заметил, как на последней картинке поста "Об трехмерную графику" пропадает свет (вот она сверху)? Посмотрите, как отражается стенка с дыркой в правом шаре. Она совсем темная, хотя рядом довольно яркий источник света. Нашел ошибку в своей программе, и исправил, конечно.


     Чтобы получить цвет освещенной точки, надо цвет поверхности умножить на цвет падающего света. И еще на косинус угла между нормалью поверхности в этой точке, который дается скалярным произведением этих векторов. В отражении точка видна, поэтому определяются вклады в ее яркость от всех источников, которые не затенены посторонними предметами. В данном случае яркий удаленный источник вносит отрицательный вклад – косинус меньше нуля, поверхность повернута обратной стороной к нему. Баг пофиксен…

     Может, кто-нибудь не понял, зачем нужен "прозрачный цвет" у текстуры? Демонстрирую...

 <----------->

      

      Чтобы можно было вставлять в сцены такие вот спрайты – точечные масштабируемые изображения. Видите, девушка отбрасывает тень и отражается в зеркальных поверхностях. Освещена, правда, немного неестественно, но надо учитывать, что она совершенно плоская :)

      Откуда взялась эта девушка? Чтобы найти подходящую текстуру, я просмотрел свои китайские снимки, и на одном из них ее увидел…

 

Это площадь перед входом в Запретный город – дворец китайских императоров в Пекине, где сейчас музей…

      Я вырезал ее из снимка и закрасил фон сине-зеленым цветом.

  

     Ну, и назначил этот цвет прозрачным… Вот. Никогда не фотографируйтесь у незнакомых людей, а то можете неожиданно оказаться в незнакомой обстановке со странным освещением…

      Поразбирался с текстурами, оказалось, что афинное преобразование треугольника к единичному виду делать не надо, при вычислении барицентрических координат вся эта работа уже делается попутно... Заработало в три раза быстрее… И вообще, метод натягивания текстуры на треугольник, который я сам придумал, оказался негодным, хоть и работал в некоторых случаях. Все нормальные люди используют метод задания текстурных координат для вершин. Сделал так, стало работать очень хорошо.

      Для человека, освоившего метод текстурных координат, не составляет труда натянуть текстуру даже на шар!

      Вот тут и пригодилась мне сферическая текстура из моих давних опытов с Direct3D.

   (Космическая фея готовится к визиту на Землю, обзавелаcь глобусом)

 

Profile

victor_chapaev

April 2017

S M T W T F S
      1
23 45678
91011 12 131415
16171819202122
23242526272829
30      

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 03:06 pm
Powered by Dreamwidth Studios