メモリ使用量をへらしたい
ARKitでリッチなUSDZファイルを表示すると、すごくメモリを食う。
ファイルサイズが数十MBの3Dでも、レンダリングによるメモリ消費は数百MBになり、複数表示しようものなら落ちてしまう。
普段SceneKitをつかっているのだが、新しい方のRealityKitなら、レンダリングが最適化されてメモリ使用が劇的に少なかったりするんじゃないか、と思い、フレームワークによって、メモリ使用量が変わるか、調べてみた。
(左)RealityKit (右)SceneKit (ネットで拾ってきたRobot 35MBのUSDZ)
<結果>
フレームワーク | CPU使用量 | メモリ使用量 |
---|---|---|
RealityKit | 100% | 715MB |
SceneKit | 73% | 645MB |
Σ(゚∀´ フエトルヤンッ
RealityKitは「驚くほど滑らかな映像や物理シミュレーションを実現」しているせいか、メモリ使用量が10%ちょい多いようでした。
どっちがappleのサポート手厚いか、どちらがARがきれいかなど、どちらをつかうか悩む昨今です。季節はすっかり夏ですね。
ちなみに、USDZをロードしたコードは以下。
RealityKit
let anchor = AnchorEntity()
arView.scene.anchors.append(anchor)
let robot = try! Entity.loadModel(named: "robot")
anchor.addChild(robot)
SceneKit
let localURL = Bundle.main.url(forResource: "robot", withExtension: "usdz", subdirectory: "art.scnassets")!
let scene = try! SCNScene(url: localURL, options: [.checkConsistency: true])
let robotNode = scene.rootNode
sceneView.scene.rootNode.addChildNode(robotNode)
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
LGTMついてないか毎日チェックしています。嬉しいもんです。
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。