sceneKit-SCNTextが詳細に説明されています



Scenekit Scntext Explained Detail



このセクションの学習目標

1. 2D / 3Dファイルを作成するにはどうすればよいですか?
2.テキストを縦にレイアウトする方法
3.テキストの6つの面を別々にマッピングする方法(実際には、3つの面のみ)
4.テキストの幅と高さの合計を計算するにはどうすればよいですか?
5.テキストを座標系の中央に配置する方法



始めましょう!行く

NO.1テキストモデルを作成する



1594482-4a974c40f6e0f5a8.jpgIMG_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).jpg

NO.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).jpg

NO.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).jpg

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

このセクションの内容は、最初にここで共有されます。皆さんの幸せな時間をお祈りします。