Die Standardschriftart für SCNText
ist 36 point Helvetica, und ein „Punkt“ in der Schriftgröße ist das gleiche wie eine Einheit der Szene Raumes. (Nun, von lokalem Raum für den Knoten, der die SCNText
Geometrie enthält. Aber wenn Sie keinen Maßstabsfaktor für Ihren Knoten festgelegt haben, sind lokale Raumeinheiten die gleichen wie Szenenraumeinheiten.) Das bedeutet, dass sogar ein kurzes Etikett aus zehn Einheiten bestehen kann groß und Hunderte von Einheiten breit.
Es ist typisch SceneKit-Szenen mit kleinerem Umfang zu erstellen - zum Beispiel können einfache Testszenen, wie Sie sie in einem Swift-Spielplatz mit den Standardgrößen SCNBox
, SCNSphere
usw. zusammenstellen, nur 3-4 Einheiten breit sein. (Und wenn Sie SceneKit mit ARKit verwenden, sind Szeneneinheiten Meter, also ist ein Text in 36 "Punkt" -Schriftart die Größe einiger Bürogebäude in der Innenstadt.)
Auch der Ankerpunkt für eine Textgeometrie relativ zu seinem enthaltenden Knoten befindet sich in der unteren linken Ecke des Textes. Setzen Sie all dies zusammen und es ist durchaus möglich, dass riesige Buchstaben über den Rest Ihrer Szene ragen und sich gerade außerhalb der Kameraansicht verstecken.
Beachten Sie, dass, wenn Sie versuchen, dies zu beheben, indem Sie einen viel kleineren Schriftart auf Ihrem SCNText
Einstellung, könnte der Text gezackt und klobig bekommen. Das liegt daran, dass die Eigenschaft flatness
relativ zur Punktgröße des Textes gemessen wird (genauer gesagt, sie wird in einem Koordinatensystem gemessen, in dem eine Einheit == ein Punkt der Textgröße ist). Wenn Sie also eine Schriftgröße wählen, die nach Bildschirm-/Druckstandards winzig sein soll, müssen Sie die entsprechend verkleinern, um in Ihren Buchstaben immer noch glatte Kurven zu erhalten.
Alternativ können Sie auch die Schriftgrößen und die Ebenheit belassen. Setzen Sie stattdessen einen scale
Faktor auf den Knoten, der die Textgeometrie enthält, oder setzen Sie den Knoten pivot
auf eine Transformationsmatrix, die den Inhalt verkleinert. Wenn Sie beispielsweise einen Skalierungsfaktor von 1/72 einstellen, entspricht eine Einheit des Szenenraums einem "Zoll" (72 Punkte) der Texthöhe - abhängig von den anderen Größen in Ihrer Szene Es ist einfacher, an Schriftgrößen zu denken, als an 2D.
Können Sie bitte Ihre Frage klären und auch hinzufügen, wie Sie die Funktion aufrufen und den Text hinzufügen – ColdSteel
Könnten Sie bitte erläutern, was die erwarteten und tatsächlichen Ergebnisse sind? – mnuages
Nur eine Vermutung, da Ihre Frage ziemlich vage darüber ist, was eigentlich schief läuft ... aber seien Sie sich bewusst, dass die "Punkte" in Ihrer Schriftgröße die gleichen sind wie die Einheiten Ihres 3D-Koordinatenraums. Die [Standardschriftart ist 36 pt] (https://developer.apple.com/reference/scenekit/scntext/1523273-font), wenn also der Rest Ihrer Szene nur etwa 3-4 Einheiten breit ist, könnte das passieren seien Sie riesige Buchstaben nur außerhalb der Kamera. – rickster