14.11. Отражения и прозрачность

2-я конструкторская установка: взаимопроникновение прозрачных объектов разрешается Задача несколько усложнится, если мы разрешим разработчику модели размещать прозрачные объекты на сцене так, чтобы они проникали друг в друга. На рис. 14.53, а показан стеклянный куб, в который вложено несколько объектов: сферический кварцевый шарик, цилиндрическая «воздушная полость», заполненный водой куб и частично вставленный стеклянный конус. В каждом из объектов свет распространяется с различной скоростью. На рис. 14.53, б изображен в разрезе луч, проходящий через совокупность прозрачных объектов. Этот луч входит в объекты и выходит из них в сложной последовательности. Рядом с каждым отрезком луча показан список объектов, через которые проходит луч. Читая этот список вдоль траектории луча, можно отметить сложную последовательность включений объектов в этот список и исключений из него. Разумеется, это запутанная сцена, однако стоит посмотреть, во что нам обойдется гарантия того, что подпрограмма БИаёеО всегда будет обрабатывать такие сцены корректно. (Тогда это дополнительное свойство можно будет включать в трассировщик лучей или исключать из него).

Несколько взаимопроникающих прозрачных объектов

Рис. 14.53. Несколько взаимопроникающих прозрачных объектов Что же означает быть одновременно внутри двух прозрачных объектов, так что определенные точки пространства «принадлежат» двум объектам? На стадии моделирования вы должны решить, какова природа материала внутри каждой области стыка. Если зеленый мрамор полностью содержится в синем мраморе, то имеет смысл сказать, что такая область стыка принадлежит зеленому мрамору, и задать ее зеленой. Если же, однако, объекты проникают друг в друга частично, как на рис. 14.53, б, то отнюдь не очевидно, свойства какого из них следует использовать в стыковочных областях. Дизайнер должен задать каждому объекту приоритет, тогда в каждой области стыка будет доминировать объект с наивысшим приоритетом.

Один из способов обработки такой ситуации заключается в следующем"opengl1_1012.html">⇐ Предыдущая| |Следующая ⇒