  We present a major new version of Scenic, a probabilistic programming
language for writing formal models of the environments of cyber-physical
systems. Scenic has been successfully used for the design and analysis of CPS
in a variety of domains, but earlier versions are limited to environments which
are essentially two-dimensional. In this paper, we extend Scenic with native
support for 3D geometry, introducing new syntax which provides expressive ways
to describe 3D configurations while preserving the simplicity and readability
of the language. We replace Scenic's simplistic representation of objects as
boxes with precise modeling of complex shapes, including a ray tracing-based
visibility system that accounts for object occlusion. We also extend the
language to support arbitrary temporal requirements expressed in LTL, and build
an extensible Scenic parser generated from a formal grammar of the language.
Finally, we illustrate the new application domains these features enable with
case studies that would have been impossible to accurately model in Scenic 2.
