2017-08-22 14 views
1

誰かがARKitのcontainerFrame内でSCNText文字列を正しくラップすることができましたか?SCNText、containerFrame、ラッピングとARKit

私は動きがありましたが、行は垂直方向に連続してレンダリングされるのではなく、互いに重ね合わされているようです。それが小さすぎるcontainerFrameのサイズに問題があった場合、私は文字列がちょうど切り捨てられると思います。これは、切り捨てモードは、私が使用して違い(...エンド/ ...なし/ ..middle)など

https://www.dropbox.com/s/hfe01fm2bfvuvs0/IMG_1E372152586C-1.jpeg?dl=0

これは私のSCNNodeサブクラスのコードで、押し出されたテキストを作成することはありません。 initメソッドで呼び出されます。同じコードは、標準のSceneKitビューでラップされた、押し出されたテキストを生成するために、異なるサイズを使ってうまく機能します。

let extrudedText = SCNText(string: definition.text, extrusionDepth: 0.1) 
    extrudedText.font = UIFont(name: definition.fontname, size: 0.2)! 

    extrudedText.containerFrame = CGRect(origin: .zero, size: CGSize(width: 1.8, height: 1.5)) 
    extrudedText.truncationMode = kCATruncationMiddle 
    extrudedText.isWrapped = true 
    extrudedText.alignmentMode = kCAAlignmentLeft 


    let material = SCNMaterial.material(named: "rustediron-streaks") 
    extrudedText.materials = [material] 
    geometry = extrudedText 

    // Update pivot of object to its center 
    // https://stackoverflow.com/questions/44828764/arkit-placing-an-scntext-at-a-particular-point-in-front-of-the-camera 
    let (min, max) = boundingBox 
    let dx = min.x + 0.5 * (max.x - min.x) 
    let dy = min.y + 0.5 * (max.y - min.y) 
    let dz = min.z + 0.5 * (max.z - min.z) 
    pivot = SCNMatrix4MakeTranslation(dx, dy, dz) 

答えて

2

アップルからの回答:私のフォントサイズが小さすぎます。 "通常の"フォントサイズを使用し、SCNTextオブジェクトにフレームを格納し、それを含むノードにスケールを設定すると、すべてが期待通りに折り返されます。次のようなもの:

extrudedText.font = UIFont(name: definition.fontname, size: 20)! 
extrudedText.containerFrame = CGRect(origin: .zero, size: CGSize(width: 100.0, height: 500.0)) 
... 
scale = SCNVector3Make(0.01, 0.01, 0.01)