簡體   English   中英

SceneKit / ARKit:將屏幕形狀映射到3D對象

[英]SceneKit / ARKit: map screen shape into 3D object

我在屏幕中間有一個UIView ,在這種情況下為100x100,對於用戶來說,它應該像“目標”指南一樣工作。

當用戶按下“添加”按鈕時,應該在世界上的同一位置添加一個SCNBox ,其寬度/高度/比例/距離/旋轉度應與UIView在屏幕上的大小和位置相對應。

此圖像可能有助於理解我的意思。

UIView的大小可能有所不同,但始終為矩形,並在屏幕上居中。 相應的3D模型也可能會有所不同。 在這種情況下,正方形的UIView將映射到一個框,但是稍后,同一正方形的UIView可能會映射到具有相應直徑(寬度)和高度的圓柱體中。

有什么想法可以實現這樣的目標嗎?

我試過拆UIView並將該框作為占位符,作為sceneView.pointOfView的子級,然后將其position / parent轉換為rootNode ,但是沒有運氣。

謝謝!

獲取UIView在其父視圖中的中心位置,並使用SCNRenderer的unprojectPoint方法將其轉換為場景中的3D坐標,以獲取應放置3D pbject的位置。 您將必須采取一些手段來確定z值。

顯然,物體的距離將決定其在屏幕上的大小,但是如果您還想縮放物體,則可以使用相機縮放比例的倒數作為縮放比例。 縮放級別是指您自己的縮放方式(例如,將相機移動到比默認距離近的位置會創建較小的比例模型)。 如果UIView的大小發生變化,則可以附加地或代替中心點將其所有角點分別投影到3D空間,但是將uiview的比例轉換為3D節點的比例可能更容易。 例如,如果您知道UIView的最大大小,則可以將一個較小的視圖表示為其最大大小的百分比,並使用相同的百分比縮放對象。

您還提到了對象的旋轉應對應於UIView。 我認為這意味着您希望物體面對相機。 為此,您可以基於pointOfView節點的.transform屬性將旋轉應用於對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM