Как я могу получить тени для рендеринга в RealityKit при загрузке моделей непосредственно из файлов usdz, а не из файла Reality Composer?

При добавлении модели непосредственно к привязке сцены из файла usdz под моделью не появляются тени заземления. Они появляются, если вы импортируете модель в RealityComposer и добавляете сцену RealityComposer. Но можно ли включить тени заземления без использования RC?

Я попытался добавить к сцене DirectionalLight, но он не отбрасывает тени. Я также попытался изменить RenderingOptions в ARView.

//no shadows
  penguin = try? Entity.loadModel(named: "penguin", in: nil)
  penguinAnchor.addChild(penguin!)

//shadows
  penguinScene = try! PenguinRC.loadPenguinScene()
  arView.scene.addAnchor(penguinScene)

person Sam Woolf    schedule 13.09.2019    source источник
comment
У меня такие же проблемы - решений пока не найдено. Тем не менее, предварительно запеченная текстура тени, спроецированная на плоскость, может быть решением. Надеюсь, что Apple это исправит.   -  person HelloTimo    schedule 25.09.2019


Ответы (1)


Я добился некоторого прогресса в решении этой проблемы.

Отбрасывание теней от загруженных USDZ, похоже, полагается на Entity (или лучше) ModelEntity, добавляемую к AnchorEntity с помощью инициализатора плоскости, а не простого AnchorEntity (), например:

 let penguinAnchor = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.1, 0.1])

Не уверен на 100%, что это действительно та часть, которая решила мою проблему.

person HelloTimo    schedule 02.11.2019
comment
Это определенно исправило это для меня, до этого я использовал простой подкласс Entity в качестве привязки для моей модели, и я не видел никаких теней. Теперь, используя AnchorEntity, он сразу же начинает работать. - person floriankrueger; 31.07.2020