RealityKitで動画テクスチャを設定する
WWDC2020で Video materials が発表されました。こちらの動画 "What's new in RealityKit" で映像付きで解説されています。RealityKitでオブジェクトに動画を設定し再生できる新機能です。
この機能だけ試したくなりましたが、RealityKitで新規プロジェクト作成すると Experience.rcproject
を読み込んで別シーンを表示する構成で簡単には試せません。そこでシンプルに平面を配置し動画を流すまでの部分を作成してみました。
AR空間に配置されたPlaneで自動的に動画を再生します。
ソースコードは こちら に置いています。
環境
- Xcode 12.0 beta 2
- iPadOS 14 beta
- iPad Pro 11 inch (第2世代)
プロジェクト作成
今回は Content Technology
を RealityKit
で、Interface
をStoryboard
で作成しました。
video001.mp4
をプロジェクトに追加しておきます。
実装
ソース全体
import UIKit
import RealityKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet private var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
// ① Anchorの追加
let anchor = AnchorEntity()
arView.scene.anchors.append(anchor)
// ② Playerの生成と動画再生
let asset = AVURLAsset(url: Bundle.main.url(forResource: "video001", withExtension: "mp4")!)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer()
player.replaceCurrentItem(with: playerItem)
player.play()
// ③ Plane生成とVideoMaterial設定
let planeMesh = MeshResource.generatePlane(width: 0.8, height: 0.45)
let material = VideoMaterial(avPlayer: player)
let planeModel = ModelEntity(mesh: planeMesh, materials: [material])
planeModel.position = SIMD3<Float>(0.0, 0.0, -1.0)
anchor.addChild(planeModel)
}
}
① Anchorの追加
ARViewに対してAnchorを追加。
② Playerの生成と動画再生
再生対象の動画からAVPlayerItem
を生成。AVPlayer
に設定しplay()
で再生開始。
③ Plane生成とVideoMaterial設定
MeshResource.generatePlane
でPlaneを生成。数値は現実世界でメートルです。これにより「0.8m x 0.45m の横長の板」が生成されます。VideoMaterial
を生成後、ModelEntity
でEntity
生成。positionはzに-1.0を設定し「1メートル手前」を設定。anchorにaddChild
で追加。
この状態で起動すると
無事再生されました!
Author And Source
この問題について(RealityKitで動画テクスチャを設定する), 我々は、より多くの情報をここで見つけました https://qiita.com/satoshi0212/items/a4674b52623acf4cb2b0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .