Reality Composer Pro Ve RealityKitContent
Reality Composer Pro, Apple’ın geliştirmiş AR (Artırılmış Gerçeklik) içerik oluşturma aracı olan Reality Composer’ın daha gelişmiş bir versiyonudur. Bu araç, özellikle iOS, iPadOS ve macOS için artırılmış gerçeklik (AR) deneyimleri yaratmak için tasarlanmıştır.
Grafiksel kullanıcı arayüzü ile sürükle-bırak yöntemiyle kolayca AR sahneleri oluşturabilir.
İçerisinde şablonlar ve 3D nesneleri hazır olarak bulundurur, bu şablonları ve nesneleri kullanarak hızlı bir şekilde AR projeleri oluşturulabilir.
Nesnelerin gerçek dünyadaki fizik kurallarına uygun hareket etmesini sağlayan bir fizik motoru içerir. Bu sayede AR deneyimleri daha gerçekçi ve etkileşimli hale gelir.
Nesnelerin animasyonlarını ve geçişlerini kolayca ekleyebilir ve yönetilebilir. Bu, AR sahnelerinizi daha dinamik ve kullanışlı bir hale getirir.
USDZ Desteği: Reality Composer Pro, Apple’ın artırılmış gerçeklik dosya formatı olan USDZ dosyalarını destekler. Bu format, 3D nesnelerin ve animasyonların AR deneyimlerine kolayca entegre edilmesini sağlar.
NASIL KULLANILIR ?
- Xcode üzerinden create new project seçilir. visionOS → App
2. Açılan yeni proje içerisinde Packages → RealityKitContent → Soruces → Package içerisinde hali hazırda proje içerisine entegre bir şekilde gelecektir.
2.1 Open in Reality Composer Pro’ ya tıklanıldığında Reality Composer Pro başlayacaktır.
3. Ana görünüm alanı, Xcode’da gördüğümüz sahnenin aynısını gösterir. Solda, sahnenin hiyerarşisini gösteren bir bölme bulunur. Sağdaki bölme ise, o anda seçili olan nesnenin parametrelerini ayarlayabilmenizi sağlar.
4. RealityView, RealityKit ile SwiftUI arasında köprü oluşturan özel bir SwiftUI görünümü türüdür . RealityKit sahnenize giriş noktasıdır. Xcode içerisine Venus.usdz uzantılı 3D modelimizi ekliyoruz.
5.
Bu SwiftUI kodu, RealityKit kullanarak Venüs gezegeninin 3D modelinin döndürülmesi ve bir metin açıklamasının gösterilmesi için tasarlanmış bir uygulama görünümünü oluşturur. Kodun detaylı açıklaması aşağıda verilmiştir:
Kütüphaneler
import SwiftUI
import RealityKit
import RealityKitContent
Bu kütüphaneler, SwiftUI ile kullanıcı arayüzü oluşturmak ve RealityKit ile 3D modelleri işlenmesi için gereklidir.
PlanetAnimation UI Geliştirmesi
struct PlanetAnimation: View {
var body: some View {
NavigationStack {
VStack {
Model3D(named: "Venus") { model in
model
.resizable()
.aspectRatio(contentMode: .fit)
.scaleEffect(0.4)
.phaseAnimator([false, true]) { Venus, threeDYRotate in
Venus
.rotation3DEffect(.degrees(threeDYRotate ? 0 : -360 * 5), axis: (x: 0, y: 1, z: 0))
} animation: { threeDYRotate in
.linear(duration: 10).repeatForever(autoreverses: false)
}
} placeholder: {
ProgressView()
}
}
.navigationTitle("Venüs")
.toolbar {
ToolbarItem(placement: .bottomOrnament) {
HStack {
Text("Venüs'ün yüzeyinde dağlar ve volkanlar bulunur.
Venüs'ün boyutları Dünya'ya çok yakındır.
Venüs'ü diğer gezegenlerden ayıran önemli bir özelliği,
kendi etrafında Dünya ve diğer birçok gezegenin tersi yönünde dönmesidir.
Venüs'ün kendi etrafında dönmesini tamamlaması
Dünya günü olarak yaklaşık 243 gün sürer.")
.fontWeight(.ultraLight)
.multilineTextAlignment(.center)
.lineLimit(20)
.frame(width: 350.0, height: 350.0)
}
}
}
}
}
}
NavigationStack
NavigationStack
bileşeni, gezinme tabanlı kullanıcı arayüzleri oluşturmak için kullanılır. Bu, diğer görünümlere gitmek ve geri gelmek için bir stack yapısı sağlar.
Model3D
Model3D
bileşeni, bir 3D modelini yüklemek ve görüntülemek için kullanılır. Bu örnekte, "Venus" adlı bir 3D model yüklenir.
Model Özellikleri
resizable()
: Modelin yeniden boyutlandırılmasını sağlar.aspectRatio(contentMode: .fit)
: Modelin boyutlarını koruyarak uygun bir şekilde sığdırır.scaleEffect(0.4)
: Modelin ölçeğini %40 yapar.phaseAnimator([false, true])
: Modelin animasyon fazını kontrol eder.rotation3DEffect(.degrees(threeDYRotate ? 0 : -360 * 5), axis: (x: 0, y: 1, z: 0))
: Modeli 3D uzayında Y ekseni etrafında döndürür.threeDYRotate
değeri doğru olduğunda, model 0 dereceye döner, aksi takdirde -360 x 5 derece döner.animation: { threeDYRotate in .linear(duration: 10).repeatForever(autoreverses: false) }
: Animasyonun nasıl gerçekleştirileceğini tanımlar. Animasyon 10 saniye boyunca lineer olarak çalışır ve sonsuz kez tekrarlanır.
Placeholder
ProgressView()
: Model yüklenirken bir yükleme göstergesi görüntülenir.
NavigationTitle
Görünümün başlığı “Venüs” olarak ayarlanır.
Toolbar
ToolbarItem
, alt description gösterilecek öğeleri tanımlar.
Text
Metin bileşeni, Venüs hakkında bilgi verir.
fontWeight(.ultraLight)
: Metnin ağırlığını çok hafif yapar.multilineTextAlignment(.center)
: Metni merkezde hizalar.lineLimit(20)
: Metin 20 satırla sınırlandırılır.
Preview
SwiftUI önizleme işlevi, PlanetAnimation
görünümünü otomatik window stiliyle Similasyon ekranına yapılan geliştirme yansıtılır.
#Preview(windowStyle: .automatic) {
PlanetAnimation()
}
Bu kod, Venüs’ün 3D modelini döndürürken, metin aracılığıyla Venüs hakkında bilgi sağlayan bir SwiftUI görünümü oluşturuyor.