Open5

RealityKit

ta_ka_tsuta_ka_tsu

RealityKitの基本

データ構造は基本的にすべてEntityと考えて良い。
Entityは親子関係を持ちツリー構造を作れる。

このEntityARViewSceneプロパティに追加することで関連付ける。

様々なEntity派生クラスがあり、AnchorEntityは固定する位置を表現し、ModelEntityは物理オブジェクトとして親のAnchorEntityの位置に表示される。
https://developer.apple.com/documentation/realitykit/entity

ta_ka_tsuta_ka_tsu

平面

let plane = ModelEntity(mesh: .generatePlane(width: 1.0, height: 1.0))
var material = SimpleMaterial()
material.color = try! .init(tint: white, texture: .init(.load(named: "textureName")))
plane.model?.materials = [material]

とすればテクスチャが適用された平面が作れる

追記:
透過PNGでは透過部分が黒くなる
しかしtintのアルファ値を1より少し小さくすると透過になるらしい
https://developer.apple.com/forums/thread/119265

また、FaceCullingはSimpleMaterialにはなさそう。
CustomMaterialにはあるようだ
https://developer.apple.com/documentation/realitykit/custommaterial/faceculling-swift.property

CustomMaterialの作り方は
https://qiita.com/katopan/items/802a80798c2409d02984

ta_ka_tsuta_ka_tsu

ModelEntity

平面の例のようにModelEntityのイニシャライザの第一引数にMeshResourceのインスタンスを渡すことで形状が作られる。
文字をメッシュ化したものが欲しければMeshResource.generateTextが使える。
衝突判定用の形状を指定したければShapeResourceを、物理演算をしたければ重さを指定するイニシャライザもある。
https://developer.apple.com/documentation/realitykit/modelentity