sceneKit-SCNTextが詳細に説明されています
Scenekit Scntext Explained Detail
このセクションの学習目標
1. 2D / 3Dファイルを作成するにはどうすればよいですか?
2.テキストを縦にレイアウトする方法
3.テキストの6つの面を別々にマッピングする方法(実際には、3つの面のみ)
4.テキストの幅と高さの合計を計算するにはどうすればよいですか?
5.テキストを座標系の中央に配置する方法
始めましょう!行く
NO.1テキストモデルを作成する
IMG_0640(20170923-131321).jpg |_+_|
促す
1.フォントの単位はmです。ゲームエンジンで1mを表すofsize = 1を設定します。
2.外部から他のフォントをインポートしたい場合があります。ここで、いいえ、フォントスタイルは変更できないことに注意してください。
3.球はシーンの中心にあります。テキストノードをシーンの中央に配置していることに気付くかもしれませんが、そうではありません。これは、システムのデフォルトのテキストレイアウトであり、左下隅の座標です。値は(x:0.0460000001、y:0.901000023、z:-0.5)です。この値は動的に変更されます。テキストを中心点に置きたい場合は、再計算する必要があります。後でどのように計算しますか?
NO.2はテキストに制約を追加し、コンテナに制限します
Let text = SCNText(string: 'Cool', extrusionDepth: 2) let textNode = SCNNode(geometry: text) textNode.position = SCNVector3Make(0, 0, 0) scene.rootNode.addChildNode(textNode) // When creating 2D text, just set extrusionDepth to 0. text.extrusionDepth = 0 / / Set the size of the font text.font = UIFont.systemFont(ofSize: 1)
IMG_0643(20170923-131206).jpg |_+_| IMG_0644(20170923-131239)(1).jpgNO.3テキストの6つの面を別々にマッピングする方法(実際には3つの面のみ)
テキストには実際には3つの面しかありません。前後で、これはテクスチャ配列のレンダリング順序でもあります。
Let text = SCNText(string: 'Cool is the world', extrusionDepth: 1) text.font = UIFont.systemFont(ofSize:1) // first step to open the package mode text.isWrapped = true // Step 2 Set the size of the parcel container text.containerFrame = CGRect(x: 0, y: 0, width: 1, height: 6)
IMG_0646(20170923-131937).jpg IMG_0645(20170923-131926).jpgNO.4。テキストの実際の長さ、幅、高さを計算します
text.containerFrame = CGRect(x: 0, y: 0, width: 3, height: 6)
3.97
0.918
1.0
ヒントデータは予想とわずかに異なります
NO.5。テキストを中央に配置する方法、これはこのセクションの最も重要なコンテンツです。
func rendererTextNode(_ node:SCNNode){ let text = node.geometry as! SCNText let m1 = SCNMaterial() m1.diffuse.contents = UIColor.red let m2 = SCNMaterial() m2.diffuse.contents = UIColor.green let m3 = SCNMaterial() m3.diffuse.contents = UIColor.blue text.materials = [m1,m2,m3] }
IMG_0647(20170923-133215).jpg IMG_0648(20170923-133229).jpgNO.6テキスト配置モードコンテナが消えると、テキストは非表示になります。このとき、隠し部分を設定するプロパティがあります。
重要なポイントについてお話しさせていただきます。このプロパティを設定するには、パッケージモードを有効にする必要があります。
let min = text.boundingBox.min let max = text.boundingBox.max let width = max.x - min.x let height = max.y - min.y let length = max.z - min.z
IMG_0649(20170923-135850).jpg アライメントモード
kCAAlignmentNaturalのデフォルト
kCAAlignmentJustifiedストレッチ
kCAAlignmentLeftは左揃えです
kCAAlignmentRightは右揃えになります
kCAAlignmentCenterを中心に
text.truncationMode = kCATruncationNone
非表示モードを設定する
text.truncationMode = kCATruncationEnd
オプション
kCATruncationStart
kCATruncationEnd
kCATruncationMiddle
kCATruncationNone
このセクションの内容は、最初にここで共有されます。皆さんの幸せな時間をお祈りします。