Reality Composer Pro Ve RealityKitContent

Sirin Demir
Paycell Tech Team
Published in
4 min readJul 4, 2024
Reality Composer Pro

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.

Reality Composer Pro

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 ?

  1. 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.

--

--