享受SCNText上的alignmentMode选项.谷歌搜索周围看起来像alignmentMode和containerFrame有问题.我发现的替代方案建议使用获取边界框功能来查找文本大小,然后相应地手动调整.很棒,除了我不能让功能工作.当我试图得到两个向量时,我得到一个错误:
'SCNVector3'无法转换为'UnsafeMutablePointer <SCNVector3>'
我在几何和节点上得到了它.代码示例如下
func setCounterValue(counterValue:Int) {
var v1 = SCNVector3(x: 0,y: 0,z: 0)
var v2 = SCNVector3(x: 0,y: 0,z: 0)
_counterValue = counterValue
let newText = SCNText(string: String(format: "%06d", counterValue), extrusionDepth:sDepth)
newText.font = UIFont (name: "Arial", size: 3)
newText.firstMaterial!.diffuse.contents = UIColor.whiteColor()
newText.firstMaterial!.specular.contents = UIColor.whiteColor()
newText.getBoundingBoxMin(v1, max: v2)
_textNode = SCNNode(geometry: newText)
_textNode.getBoundingBoxMin(v1, max: v2)
}
Run Code Online (Sandbox Code Playgroud)
任何建议都非常感谢.
当我运行此SceneKit代码时:
let txt = SCNText(string: "Hello", extrusionDepth: 0.2)
let textNode = SCNNode(geometry: txt)
scene.rootNode.addChildNode(textNode)
Run Code Online (Sandbox Code Playgroud)
我得到非常有棱角的文字:
似乎不管字体如何都可以这样做,并且它在设备上的行为与在模拟器中的行为相同。
这是上下文中的代码:
// create a new scene
let scene = SCNScene()
// create and add a camera to the scene
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
scene.rootNode.addChildNode(cameraNode)
// place the camera
cameraNode.position = SCNVector3(x: 10, y: 0, z: 75)
// create and add a light to the scene
let lightNode = SCNNode()
lightNode.light = SCNLight()
lightNode.light!.type = SCNLightTypeOmni
lightNode.position = SCNVector3(x: 0, y: 10, …
Run Code Online (Sandbox Code Playgroud) 我试图在下面的代码中使文本字符串(SCNText)适合框(SCNBox).框的大小看起来正确,但文本不在框的右侧中心.任何想法或解决方案?谢谢
let geoText = SCNText(string: "Hello", extrusionDepth: 1.0)
geoText.font = UIFont (name: "Arial", size: 8)
geoText.firstMaterial!.diffuse.contents = UIColor.red
let textNode = SCNNode(geometry: geoText)
let (minVec, maxVec) = textNode.boundingBox
scnScene.rootNode.addChildNode(textNode)
let w = CGFloat(maxVec.x - minVec.x)
let h = CGFloat(maxVec.y - minVec.y)
let d = CGFloat(maxVec.z - minVec.z)
let geoBox = SCNBox(width: w, height: h, length: d, chamferRadius: 0)
geoBox.firstMaterial!.diffuse.contents = UIColor.green.withAlphaComponent(0.5)
scnScene.rootNode.addChildNode(boxNode)
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了一个新的字符串图像(没有SCNBox节点)与debugOptions showBoundingBoxes看到它的边界框
解决方案1:
从vdugnist的回答中,我为任何想要测试的人创建了一个游乐场代码:
import UIKit
import SceneKit
import PlaygroundSupport
var sceneView = SCNView(frame: CGRect(x: 0, y: …
Run Code Online (Sandbox Code Playgroud) 所以我在我的 SCN 场景中放置了一个 3D 文本节点,我想稍后在我的应用程序中更改 Text 属性的值
SceneKit 检查器
以上是我如何更改检查器中文本的值,但有没有办法以编程方式进行更改?谢谢你
我正在尝试在 ARKit 的语音气泡中创建一个带有简单文本的报价生成器。
我可以用文本显示语音气泡,但文本始终从中间开始并溢出到语音气泡之外。
任何帮助让它在语音气泡的左上角对齐并包裹在语音气泡内的帮助将不胜感激。
结果
课程
class SpeechBubbleNode: SCNNode {
private let textNode = TextNode()
var string: String? {
didSet {
textNode.string = string
}
}
override init() {
super.init()
// Speech Bubble
let plane = SCNPlane(width: 200.0, height: 100.0)
plane.cornerRadius = 4.0
plane.firstMaterial?.isDoubleSided = true
geometry = plane
// Text Node
textNode.position = SCNVector3(position.x, position.y, position.z + 1.0)
// textNode.position = convertPosition(SCNVector3(0.0, 0.0, 1.0), to: textNode)
// textNode.position = SCNVector3(0.0, 0.0, position.z + 1.0)
addChildNode(textNode)
}
required init?(coder …
Run Code Online (Sandbox Code Playgroud) 如何在 SCNtext 中插入背景(例如“讲话泡泡”或矩形)?具体来说,如果我插入“Hello World”作为 SCNText(显然然后作为场景中的 SCNNode),那么我怎样才能只为该文本添加背景?它会是一个 UIimage,它将作为 SCNNode 插入“Hello World”中的相同位置?(请记住,SceneKit 中没有任何作为 SCNNode 背景的东西)
我正在阅读陀螺仪并将SCNText
几何形状的弦更改为陀螺仪的偏航值.这种变化发生在陀螺仪处理器内部,每1/30秒调用一次.在SCNText
几何与Interface Builder中创建.
我正在使用此代码来检索对文本的引用:
SCNNode *textNode = [scene.rootNode childNodeWithName:@"yawText" recursively:YES];
self.text = [textNode geometry];
//self.txt is declared as @property (strong, nonatomic) SCNText *text;
Run Code Online (Sandbox Code Playgroud)
稍后在陀螺仪手柄上我这样做:
CGFloat yaw = convertToDegrees(attitude.yaw);
[weakSelfText setString:[NSString stringWithFormat:@"%.1f", yaw]];
NSLog(@"yaw = %1f", yaw);
// I had to declare weakSelfText outside the gyro handler
// because Xcode was complaining
// weakSelfText is declared like this
// __weak typeof(self.text) weakSelfText = self.text;
Run Code Online (Sandbox Code Playgroud)
NSLog
正确打印值但是没有变化SCNText
.
是的,我试图更改主线程上的文本.没变.