SCNLevelOfDetail
Использовать SCNLevelOfDetail
объекты включить автоматическую замену альтернативных уровней детализации для геометрии. Замена сложных геометрий с более простыми альтернативами, когда меньше подробности видимо, улучшает производительность рендеринга.
Вы используете объекты уровня детализации, когда у Вас есть подробная геометрия, появляющаяся в нескольких очевидных размерах в сцене. Например, модель заварного чайника на у левого на рисунке 1 есть 256 многоугольников, модель в центре имеет 1 024 многоугольника, и модель справа имеет 14 400 многоугольников. Если все три модели появляются близко к камере, заполняя большую часть представленного представления, различие подробно между ними ясно видимо — но если они появляются далеко, поднимая небольшую площадь представления, различие намного менее очевидно. Рендеринг конфигураций более высокого разрешения несет более высокие расходы производительности.
Когда Вы связываете один или несколько объектов уровня детализации с a SCNGeometry
объект с помощью levelsOfDetail
свойство, SceneKit автоматически заменяет альтернативными конфигурациями в надлежащих случаях. Например, две модели заварного чайника более низкого разрешения на рисунке 1 могут быть добавлены как уровни детализации для модели с высокой разрешающей способностью.
Для каждого уровня детализации Вы указываете или расстояние мирового пространства или радиус экранного пространства. Мера, которую Вы указываете, определяет порог, где SceneKit автоматически представляет альтернативную геометрию того уровня детализации вместо исходной геометрии. Когда узел, содержащий геометрию, отодвинут что расстояние от камеры, при указании расстояния альтернативная геометрия появляется. Когда пиксельная область, покрытая представленным геометрией, меньше, чем круг того радиуса, при указании радиуса альтернативная геометрия появляется.
Конфигурации, связанные с более низкими уровнями детализации, не должны совместно использовать все атрибуты исходной геометрии. Например, можно использовать различные материалы для уровней детализации, только появляющихся когда далеко от камеры, отключая дорогие опции такое освещение согласно пикселю, отражательное отображение или пользовательские программы программы построения теней.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.9 и позже.
-
Создает уровень детализации с указанной геометрией и пороговым пиксельным радиусом.
Объявление
Swift
convenience init(geometry
geometry
: SCNGeometry?, screenSpaceRadiusradius
: CGFloat)Objective C
+ (instancetype)levelOfDetailWithGeometry:(SCNGeometry *)
geometry
screenSpaceRadius:(CGFloat)radius
Параметры
geometry
Геометрия для рендеринга для этого уровня детализации.
radius
Максимальный радиус (в пикселях) сферы ограничения геометрии для этого уровня детализации для появления.
Возвращаемое значение
Объект уровня детализации. Вы связываете уровни детализации с a
SCNGeometry
объект с помощьюlevelsOfDetail
свойство.Обсуждение
При рендеринге геометрии со связанными уровнями детализации SceneKit вычисляет радиус в пикселях круга, покрытого сферой ограничения геометрии, затем представляет геометрию для
SCNLevelOfDetail
объект с самым большимradius
параметр, меньший, чем тот круг.Если Вы передаете
nil
для параметра геометрии SceneKit не представляет геометрии для уровня детализации. Создание объекта уровня детализации без геометрии позволяет Вам пропускать затраты рендеринга полностью для объекта, когда это появилось бы очень далеко или очень маленький.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает уровень детализации с указанной геометрией и пороговым расстоянием камеры.
Объявление
Swift
convenience init(geometry
geometry
: SCNGeometry?, worldSpaceDistancedistance
: CGFloat)Objective C
+ (instancetype)levelOfDetailWithGeometry:(SCNGeometry *)
geometry
worldSpaceDistance:(CGFloat)distance
Параметры
geometry
Геометрия для рендеринга для этого уровня детализации, или
nil
если SceneKit не должен представлять геометрию в этом уровне детализации.distance
Минимальное расстояние от текущей точки представления для этого уровня детализации для появления.
Возвращаемое значение
Объект уровня детализации. Вы связываете уровни детализации с a
SCNGeometry
объект с помощьюlevelsOfDetail
свойство.Обсуждение
При рендеринге геометрии со связанными уровнями детализации SceneKit вычисляет расстояние от текущей точки представления к родительскому узлу геометрии, затем представляет геометрию для
SCNLevelOfDetail
объект с самым маленькимdistance
параметр, больше, чем то расстояние.Если Вы передаете
nil
для параметра геометрии SceneKit не представляет геометрии для уровня детализации. Создание объекта уровня детализации без геометрии позволяет Вам пропускать затраты рендеринга полностью для объекта, когда это появилось бы очень далеко или очень маленький.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Геометрия связалась с этим уровнем детализации. (только для чтения)
Объявление
Swift
var geometry: SCNGeometry? { get }
Objective C
@property(readonly) SCNGeometry *geometry
Обсуждение
Когда уровень детализации является надлежащим, SceneKit представляет эту геометрию вместо исходной геометрии. Обычно уровни детализации с большим
worldSpaceDistance
значения или меньшийscreenSpaceRadius
значения должны содержать менее сложные геометрии.Если значение этого свойства
nil
, SceneKit не представляет геометрии в этом уровне детализации.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
screenSpaceRadius screenSpaceRadius
СвойствоМаксимальный радиус (в пикселях) сферы ограничения геометрии для этого уровня детализации для появления. (только для чтения)
Объявление
Swift
var screenSpaceRadius: CGFloat { get }
Objective C
@property(readonly) CGFloat screenSpaceRadius
Обсуждение
При рендеринге геометрии со связанными уровнями детализации SceneKit вычисляет радиус в пикселях круга, покрытого сферой ограничения геометрии, затем представляет геометрию для
SCNLevelOfDetail
объект с самым маленькимradius
параметр, больше, чем тот круг.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
worldSpaceDistance worldSpaceDistance
СвойствоМинимальное расстояние от текущей точки представления для этого уровня детализации для появления. (только для чтения)
Объявление
Swift
var worldSpaceDistance: CGFloat { get }
Objective C
@property(readonly) CGFloat worldSpaceDistance
Обсуждение
При рендеринге геометрии со связанными уровнями детализации SceneKit вычисляет расстояние от текущей точки представления к родительскому узлу геометрии, затем представляет геометрию для
SCNLevelOfDetail
объект с самым большимdistance
параметр меньше, чем то расстояние.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.