Похоже, абстракция формы, которую класс SCNPhysicsShape вычисляет из ARSCNPlaneGeometry, полностью отключена, если вы не поможете ей с опцией. Если вместо:
planeNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: planeGeometry!))
вы используете:
planeNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: planeGeometry!, options: [SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.boundingBox]))
Получается «приблизительная», хотя и не совсем точная форма.
Ссылка, которую Вы отправили для Учебного руководства по Доступу к данным, является реализацией шаблона MVC. Шаблон MVC является понятием, реализация может отличаться; у Вас есть это в ASP.NET тогда как в Java существует одна платформа, названная Struts, который является реализацией MVC.
Шаблоны DAL & BLL отличаются от шаблона MVC с точки зрения понятий; но НЕ эта определенная реализация. MVC на самом деле достигается посредством использования DAL, BLL & View Patterns.
MVC обращается к больше, чем просто доступ к данным. В MVC и DAL и BLL включены в Модель. Представление определяет, как данные модели представлены пользователю, в то время как контроллер - то, что отвечает на вводы данных пользователем (ДОБЕРИТЕСЬ/POST в сети).
Альтернатива MVC является классической архитектурой N-tier, где у Вас есть уровень представления, бизнес-слой и уровень доступа к данным. В этой архитектуре компоненты представления и контроллера перенесены вместе на уровне представления. WebForms/WinForms является примером архитектуры N-tier, в то время как ASP.NET MVC является примером MVC в пространстве Microsoft.