import SwiftUI
import RealityKit
import RealityKitContent
import AVFoundation
struct ImmersiveView: View {
var body: some View {
RealityView { content in
guard let resource = try? TextureResource.load(named: "Starfield") else {
fatalError("加载纹理贴图失败")
}
var material = UnlitMaterial()
material.color = .init(texture: .init(resource))
let environment = Entity()
environment.components.set(ModelComponent(
mesh: .generateSphere(radius: 1000),
materials: [material]
))
environment.scale *= .init(x: -1, y: 1, z: 1)
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
let radians = Float.pi / 180.0
let rotation = simd_quatf(angle: radians, axis: SIMD3<Float>(0,1,0)) /
environment.move(to: Transform(rotation: rotation), relativeTo: environment, duration: 10, timingFunction: .linear)
}
RunLoop.current.add(timer, forMode: .default)
content.add(environment)
}
}
}
Post
Replies
Boosts
Views
Activity
maybe try
let entity = Entity()
let url = URL(string: url)
let asset = AVURLAsset(url: url!)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer()
var videoPlayerComponent = VideoPlayerComponent(avPlayer: player)
videoPlayerComponent.isPassthroughTintingEnabled = true
entity.components[VideoPlayerComponent.self] = videoPlayerComponent
entity.scale *= 1
player.replaceCurrentItem(with: playerItem)
player.play()
return entity
}
@state var urlString = ""
RealityView{content in
content.add(makeMvEntity(url: urlString))
}
var body: some View {
RealityView { content in
// Add the Model content
if let modelEntity = try? await Entity(named: "Victorian_Living_Room", in: realityKitContentBundle) {
content.add(immersiveContentEntity)
// Add an ImageBasedLight for the immersive content
guard let resource = try? await EnvironmentResource(named: "shiwai_a") else { return }
//An ImageBasedLightReceiverComponent has been set up for this entity, which enables the entity to receive image-based lighting.
let iblComponent = ImageBasedLightComponent(source: .single(resource), intensityExponent: 0.25)
modelEntity.components.set(iblComponent)
modelEntity.components.set(ImageBasedLightReceiverComponent(imageBasedLight: modelEntity))
}
}
}
}