RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Vision Pro開(kāi)發(fā)實(shí)踐(結(jié)合24黑馬idea)

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-04 17:56 ? 次閱讀

這是我參與創(chuàng)作者計(jì)劃的第1篇文章

開(kāi)篇

之前寫過(guò)一篇文章,主要介紹visionPro基本信息、操作和基礎(chǔ)適配的文章: http://sd.jd.com/article/30242?shareId=152384&isHideShareButton=1

恰逢2024黑客馬拉松舉行,我結(jié)合本次參賽的一個(gè)idea,介紹一下visionOS的開(kāi)發(fā)實(shí)踐,希望能為大家在進(jìn)行“空間計(jì)算”開(kāi)發(fā)的過(guò)程當(dāng)中提供幫助。

idea內(nèi)容

這次結(jié)合的idea是我參加黑馬比賽時(shí)想到的,主要內(nèi)容是:在商品評(píng)價(jià)時(shí)增加商品的3D模型,用戶可以在虛擬現(xiàn)實(shí)環(huán)境中查看商品的3D模型,并對(duì)模型的特定位置進(jìn)行評(píng)論。例如,用戶可以點(diǎn)擊運(yùn)動(dòng)鞋鞋底部分,留下關(guān)于材質(zhì)和舒適度的評(píng)論。直接在商品3D模型的對(duì)應(yīng)位置添加詳細(xì)評(píng)論具像化評(píng)價(jià)內(nèi)容,更為直觀。

結(jié)合這個(gè)idea我實(shí)踐開(kāi)發(fā)了簡(jiǎn)單的展示Demo,開(kāi)發(fā)過(guò)程和用到的知識(shí)點(diǎn)比較適合作為visionOS開(kāi)發(fā)入門的教程,所以在本篇文章里向大家作簡(jiǎn)單的介紹。

實(shí)踐開(kāi)發(fā)

場(chǎng)景

結(jié)合idea,我們要做的工作,首先是采用mixed的展示形式,這樣更符合“商品評(píng)價(jià)”的應(yīng)用場(chǎng)景。如果對(duì).mixed, .progressive,.full三種展示形式還不了解的同學(xué),可以看我前一篇文章的介紹。

@main
struct MyImmersiveApp: App {
    @State private var currentStyle: ImmersionStyle = .mixed


    var body: some Scene {
        WindowGroup() {
            ContentView()
        }


        // Display a fully immersive space.
        ImmersiveSpace(id: "USDZ Test") {
        }.immersionStyle(selection: $currentStyle)
    }
}

后續(xù)的開(kāi)發(fā)主要集中在ContentView中。

添加3D模型

Xcode原生支持的3D模型文件類型是.usdz,支持編程的模型文件類型是.reality,右鍵點(diǎn)擊工程,可以直接向工程里添加模型文件。

wKgZombX08SAVJnJAAKIjvbhxvw902.png

添加后的模型可以預(yù)覽

wKgaombX08WAUysUAANlBjuLik0143.png

visionOS開(kāi)發(fā)中主要有兩種方式向view中添加3D模型:Model3D和RealityView+ModelEntity

Model3D

Model3D(named: "sneaker", bundle: realityKitContentBundle)
    .scaleEffect(0.1)
    .frame(depth: 120)
    .frame(width: 200, height: 200)
    .background(Color.gray.opacity(0.3))
    .cornerRadius(12)

這種方式主要用于簡(jiǎn)單的加載和展示3D模型,如果僅用于展示,可以采用這種方式。

RealityView+ModelEntity

RealityView { content in
    if let sneaker = try? await ModelEntity(named: "sneaker") {
        content.add(sneaker)
    } Task {
        // Asynchronously perform any additional work to configure
        // the content after the system renders the view.
    }
}
.frame(width: 600, height: 600)
.scaleEffect(1)
.edgesIgnoringSafeArea(.all)
.background(Color.white.opacity(0.1))

利用ModelEntity加載模型,添加到RealityView的content中展示,這樣可以對(duì)模型做各種操作,比如添加子模型,修改光照,材質(zhì)等要素。舉個(gè)例子來(lái)講,我需要在運(yùn)動(dòng)鞋模型“sneaker”上面添加一個(gè)可以與用戶交互的白色圓點(diǎn)模型,用于在用戶點(diǎn)擊的時(shí)候添加/展示對(duì)應(yīng)部分的評(píng)價(jià)。

// 創(chuàng)建白色圓點(diǎn)
let sphere = MeshResource.generateSphere(radius: 0.8)
// 材質(zhì)
let material = SimpleMaterial(color: .white, isMetallic: false)
let sphereEntity = ModelEntity(mesh: sphere, materials: [material])
                                    
// Add tap gesture to the model
sphereEntity.generateCollisionShapes(recursive: true)
// 將圓點(diǎn)放置在運(yùn)動(dòng)鞋模型的底部
sphereEntity.position = [-10, -0.8, 3] //
// 將圓點(diǎn)添加到模型
sneaker.addChild(sphereEntity)

效果:

wKgZombX08aAK5zQAAzjrbSwaXk905.png

用戶交互

模型旋轉(zhuǎn)可以通過(guò)gesture實(shí)現(xiàn),使用戶可以360度的觀察商品,并在不同的位置添加評(píng)論:

@State private var sneaker: ModelEntity?

.gesture(
    DragGesture()
    .onChanged { value in
        // 計(jì)算旋轉(zhuǎn)角度
        let rotationDelta = Float(value.translation.width / 100.0) // 調(diào)整比例因子以控制旋轉(zhuǎn)速度
        print("drag!(rotationDelta)")
        if let modelEntity = sneaker {
            modelEntity.transform.rotation = simd_quatf(angle: currentRotation + rotationDelta, axis: [0, 1, 0])
        }
    }
    .onEnded { value in
        // 更新當(dāng)前旋轉(zhuǎn)角度
        currentRotation += Float(value.translation.width / 100.0)
    }
)

效果:

wKgaombX08uAAFyBACfp00Kb_NQ769.gif

然后為該模型添加點(diǎn)擊效果,點(diǎn)擊時(shí)展示用戶針對(duì)商品該部分的詳細(xì)評(píng)論:

.onTapGesture {
    showTextOverlay.toggle()
}

效果:

wKgZombX09SANS-OAFjEtoKamio740.gif

更多擴(kuò)展

如果有一定的3D模型編程經(jīng)驗(yàn),就可以直接把用戶交互做在模型上,比如展示商品材質(zhì),使用動(dòng)畫等等,我借用蘋果官方提供的示例模型進(jìn)行演示:

wKgaombX09eAK7D6AAjvx7xGJRw272.gif

同時(shí),可以為該商品添加空間視頻評(píng)價(jià),利用visionPro拍攝的空間視頻,可以直接通過(guò)AVKit加載,上傳和播放,使用戶可以通過(guò)空間視頻第一視角真切地看到商品的真實(shí)情況,增強(qiáng)用戶信心:

import AVKit

public func makeVideoEntity() -> Entity {
    let entity = Entity()
    // 加載視頻
    let asset = AVURLAsset(url: Bundle.main.url(forResource: "evaluate", withExtension: "MOV")!)
    let paltItem = AVPlayerItem(asset: asset)
    // 創(chuàng)建播放器
    let player = AVPlayer()
    entity.components[VideoPlayerComponent.self] = .init(avPlayer: player)
    // 操作視頻文件
    entity.scale *= 0.4
    player.replaceCurrentItem(with: paltItem)
    //播放
    player.play()
        
    return entity
}

其他idea

本次參加黑馬大賽,我還有兩個(gè)更進(jìn)一步的idea:

3D模型動(dòng)畫展示

?用戶可以直接對(duì)商品3D模型進(jìn)行操作,掌握使用方法,了解相關(guān)特性

?功能描述:通過(guò)3D模型動(dòng)畫,用戶可以直觀地了解產(chǎn)品的特性和使用方法。例如,用戶可以看到升降桌的升降詳細(xì)過(guò)程,或者一款咖啡機(jī)的操作步驟。

?實(shí)現(xiàn)方式:在3D模型中嵌入動(dòng)畫腳本,用戶可以通過(guò)點(diǎn)擊或語(yǔ)音指令觸發(fā)動(dòng)畫播放。動(dòng)畫將展示產(chǎn)品的各個(gè)細(xì)節(jié)和使用場(chǎng)景,幫助用戶更好地理解產(chǎn)品。

比如,可以直接通過(guò)3D模型演示宇航服的開(kāi)啟和穿戴方法,用戶可以360度的學(xué)習(xí):

wKgaombX09uAJMpTACDRRBpsLNI610.gif

虛擬商品銷售

?在京東app直接購(gòu)買虛擬類型商品,并能夠直接在京東vision的虛擬空間中使用

?功能描述:針對(duì)非實(shí)體類虛擬商品,拓展新的銷售模式和渠道,購(gòu)買的商品可以在虛擬現(xiàn)實(shí)設(shè)備中展示和使用。例如花卉商品的3D模型、畫作等。

?實(shí)現(xiàn)方式:通過(guò)NFT等認(rèn)證技術(shù)授予購(gòu)買者產(chǎn)權(quán)認(rèn)證,在京東vision中創(chuàng)建虛擬空間,用戶可以查看、擺放和使用虛擬商品。

形象一下:藝術(shù)家可以直接在京東上架自己的虛擬藝術(shù)品,用戶購(gòu)買后可以在京東Vision的虛擬空間里直接陳列展示。我可以擁有全虛擬世界唯一的一副《蒙娜麗莎》,并把它掛在我家的墻上!

這種營(yíng)銷模式在國(guó)外的某些平臺(tái)上已經(jīng)有所嘗試,我們可以搶占商機(jī),拓寬出這樣一條新的賽道。

?審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    40836
  • VisionPro
    +關(guān)注

    關(guān)注

    6

    文章

    19

    瀏覽量

    15648
  • idea
    +關(guān)注

    關(guān)注

    1

    文章

    68

    瀏覽量

    4271
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    好了,我們來(lái)好好聊聊Vision Pro這東西吧!

    好了,我們來(lái)好好聊聊Vision Pro這東西吧! 01 Vision Pro是個(gè)啥 這東西就是這次蘋果推出的Apple Vision
    發(fā)表于 06-07 10:14

    蘋果MR Vision Pro將會(huì)帶動(dòng)哪些零部件出貨?

    蘋果身上。 簡(jiǎn)單來(lái)說(shuō),Vision Pro本質(zhì)上其實(shí)還是VR設(shè)備,不過(guò)所有操作界面可以結(jié)合頭顯攝像頭捕捉的外界環(huán)境,在頭顯內(nèi)部顯示出來(lái),即一款數(shù)字內(nèi)容無(wú)縫融入真實(shí)世界的VR顯示設(shè)備。同時(shí)Vi
    發(fā)表于 06-08 10:19

    LabVIEW調(diào)用康耐視Vision Pro dll

    LabVIEW調(diào)用康耐視Vision Pro dll,直接調(diào)用CogToolBlock
    發(fā)表于 09-08 15:07

    儀器設(shè)備研制與開(kāi)發(fā)-科研與實(shí)踐教學(xué)結(jié)合,自主開(kāi)發(fā)實(shí)踐教學(xué)設(shè)

    摘 要:我們將科研與實(shí)踐教學(xué)相結(jié)合,有意識(shí)地將科研成果轉(zhuǎn)移到學(xué)生的實(shí)踐教學(xué)中去,自主開(kāi)發(fā)了3套學(xué)生實(shí)踐教學(xué)使用的設(shè)備和系統(tǒng),對(duì)學(xué)生素質(zhì)培養(yǎng)起
    發(fā)表于 02-14 16:11 ?0次下載

    IntelliJ Idea開(kāi)發(fā)環(huán)境安裝教程

    我們后面會(huì)在IntelliJ Idea開(kāi)發(fā),因此先安裝開(kāi)發(fā)環(huán)境。
    的頭像 發(fā)表于 10-17 10:53 ?1318次閱讀

    TinyAnimal:Grove Vision AI上的動(dòng)物識(shí)別實(shí)踐

    電子發(fā)燒友網(wǎng)站提供《TinyAnimal:Grove Vision AI上的動(dòng)物識(shí)別實(shí)踐.zip》資料免費(fèi)下載
    發(fā)表于 06-13 16:20 ?0次下載
    TinyAnimal:Grove <b class='flag-5'>Vision</b> AI上的動(dòng)物識(shí)別<b class='flag-5'>實(shí)踐</b>

    蘋果公司或下調(diào)MR頭顯Vision Pro的產(chǎn)量

    蘋果公司或下調(diào)MR頭顯Vision Pro的產(chǎn)量 蘋果的MR頭顯Vision Pro一經(jīng)推出就吸引了一大批的眼球,盡管價(jià)錢高到離譜,依然被寄予厚望。 在2023年6月6日的蘋果WWDC
    發(fā)表于 07-04 11:58 ?5559次閱讀

    蘋果apple Vision Pro 設(shè)計(jì)亮點(diǎn),震撼!

    近期,蘋果重磅發(fā)布Apple Vision Pro,標(biāo)志著用戶界面UI設(shè)計(jì)方式的革新。蘋果Apple Vision Pro 是一種VR 和 AR 混合現(xiàn)實(shí)
    的頭像 發(fā)表于 07-04 19:56 ?3027次閱讀
    蘋果apple <b class='flag-5'>Vision</b> <b class='flag-5'>Pro</b> 設(shè)計(jì)亮點(diǎn),震撼!

    Intellij IDEA 開(kāi)發(fā)工具實(shí)例

    本篇博客我們將會(huì)以Intellij IDEA 開(kāi)發(fā)工具為例,所以我這里簡(jiǎn)單談?wù)勎覀兯褂玫?b class='flag-5'>開(kāi)發(fā)工具。 目前大家做Java開(kāi)發(fā)的,無(wú)外乎就兩種,eclipse或者Intellij
    的頭像 發(fā)表于 09-25 16:21 ?878次閱讀
    Intellij <b class='flag-5'>IDEA</b> <b class='flag-5'>開(kāi)發(fā)</b>工具實(shí)例

    曝蘋果砍掉了低配版Vision Pro:銷量不被看好

    分析師郭明錤據(jù)蘋果已經(jīng)取消了他開(kāi)發(fā)低配版vision pro 2024年vision pro的出貨量為40萬(wàn)到60萬(wàn)輛之間,不會(huì)有大幅增長(zhǎng)。
    的頭像 發(fā)表于 09-28 14:41 ?992次閱讀

    蘋果Vision Pro這塊屏,有故事

    體驗(yàn)過(guò) Vision Pro 的媒體們都對(duì)這兩塊屏幕的顯示效果表示了肯定。屏幕顯示效果可以說(shuō)是 XR 都帶設(shè)備的靈魂,而 Vision Pro 的屏幕做到了看不到像素點(diǎn),幾乎就是肉眼看
    的頭像 發(fā)表于 10-22 10:11 ?2703次閱讀
    蘋果<b class='flag-5'>Vision</b> <b class='flag-5'>Pro</b>這塊屏,有故事

    蘋果Vision Pro夏季將在法國(guó)推出?

    據(jù)悉,自去年12月份以來(lái),蘋果已經(jīng)針對(duì)美國(guó)零售員工啟動(dòng)Vision Pro相關(guān)培訓(xùn),并在今年1月中旬開(kāi)展,此時(shí)距離Vision Pro正式開(kāi)售僅有兩周左右。
    的頭像 發(fā)表于 03-30 11:13 ?1581次閱讀

    Vision Board 創(chuàng)客營(yíng)】Vision Board上的DAC實(shí)踐

    1、概述 感謝官方舉辦【Vision Board 創(chuàng)客營(yíng)】活動(dòng),使得我有機(jī)會(huì)試用Vision Board開(kāi)發(fā)板,體驗(yàn)嵌入式AI的快樂(lè)。在此,再次感謝官方以及導(dǎo)師們的熱情幫助。在本次活動(dòng)中,本人
    的頭像 發(fā)表于 04-24 21:55 ?592次閱讀
    【<b class='flag-5'>Vision</b> Board 創(chuàng)客營(yíng)】<b class='flag-5'>Vision</b> Board上的DAC<b class='flag-5'>實(shí)踐</b>

    蘋果擱置Vision Pro 2開(kāi)發(fā),轉(zhuǎn)向更親民頭顯

    在全球科技行業(yè)持續(xù)發(fā)展的背景下,蘋果公司的一則最新消息引起了廣泛關(guān)注。由于第一代Vision Pro頭顯設(shè)備上市后銷售情況并不理想,蘋果決定暫時(shí)擱置第二代Vision Pro
    的頭像 發(fā)表于 06-20 10:52 ?637次閱讀

    蘋果低價(jià)版Vision Pro量產(chǎn)延至2027年后

    知名分析師郭明錤近日發(fā)表觀點(diǎn),指出低價(jià)版Vision Pro的量產(chǎn)時(shí)間已被遞延至2027年之后,這一決定已醞釀多時(shí)。 據(jù)悉,Vision Pro是蘋果公司推出的一款頭戴顯示設(shè)備,因其出
    的頭像 發(fā)表于 11-05 10:40 ?282次閱讀
    RM新时代网站-首页