- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将一个简单的文本标签放在一个(希望是所有类型的)内置 SCNGeometry 形状上,因为它们在屏幕上移动。我最接近成功的是通过 .firstMaterial.diffuse.contents 将带有 CATextLayer 的 CALayer 添加到 SCNBox,如 described in this thread .
但是,文本永远不可读。使用高度为1.0的SCNBox:当layer.frame和textLayer.fontSize的大小为1.0时,文本不会出现;随着框架和字体大小的增加(不是框),文本出现 Blob ,如下图所示;当非常大时,文本显示为波浪线。
以下代码是生成形状的方法的一部分:
var geometry:SCNGeometry
let layer = CALayer()
layer.frame = CGRect(x: 0, y: 0, width: 4, height: 4)
layer.backgroundColor = UIColor.white.cgColor
var textLayer = CATextLayer()
textLayer.frame = layer.bounds
textLayer.fontSize = layer.bounds.size.height
textLayer.string = "Matilda"
textLayer.alignmentMode = kCAAlignmentLeft
textLayer.foregroundColor = UIColor.black.cgColor
textLayer.display()
layer.addSublayer(textLayer)
let geometry = SCNBox(width: 1.0,
height: 1.0,
length: 3.0,
chamferRadius: 0.0)
geometry.firstMaterial?.locksAmbientWithDiffuse = true
geometry.firstMaterial?.diffuse.contents = layer
let geometryNode = SCNNode(geometry: geometry)
geometryNode.position = SCNVector3(x: 0.0, y: 0.0, z: 0.0)
scnScene.rootNode.addChildNode(geometryNode)
最佳答案
正如 David R. 所指出的,盒子大小的单位与框架大小的单位不同。
将框架调整为(并优化 SCNBox 大小)后它起作用了:
layer.frame = CGRect(x: 0, y: 0, width: 200, height: 50)
关于swift - 在 SceneKit 中,将文本标签放在 SCNGeometry 或 SCNBox 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459451/
我正在尝试旋转我使用滑动手势 创建的SCNBox。例如,当我向右滑动时,盒子应该在 Y 轴 上旋转 90 度,当我向左滑动时,盒子应该旋转 -90 度。为此,我一直在使用节点的 SCNAction.r
我是 iOS 开发的新手,我被难住了。我正在尝试使用 SceneKit 渲染一个立方体,每个面都有不同的颜色。 这是我目前所得到的: func sceneSetup() { // 1
我正在试验 SceneKit 并尝试用它制作迷宫风格的游戏。但是,其中一个问题是当您在一个盒子( pipe 、球体等)内移动时,盒子的投影会消失。 我已经多次阅读文档,但我要么没有匹配正确的措辞,要么
我正在使用 Apple 的 ARKit 制作 AR 应用程序,我想制作盒子的线框轮廓。代码中描述并显示在图片中的那个在盒子的每个面上绘制斜边。它还隐藏了盒子另一侧的角。 Scene Kit 中有没有办
我有一个长矩形框和两个要连接的 SCNVector3 形式的点。有没有一种简单的方法可以将框的起点设置为一个点,将框的终点设置为另一个点? 最佳答案 将 SCNBox 放在两个 anchor 的中点。
我有一个简单的 ARKit 应用程序。当用户触摸屏幕时 override func touchesBegan(_ touches: Set, with event: UIEvent?) { g
我最近开始了 IOS 应用程序开发,目前致力于构建 Arkit 应用程序。 我有一个类型为“SCNBox”的对象,我也有 SCNNode,其定义如下: var planeGeometry: SCNBo
我正在使用 Scene Kit 并创建了一个 SCNBox。在盒子的正面,我想要它,所以如果正面的左侧被点击,就会出现“A”,如果正面的右侧被点击,就会出现“B”。我怎样才能做到这一点。我检查了堆栈,
我有一个 SCNBox 对象通过 SCNNode 添加到 SCNScene 中...... let box:SCNBox = SCNBox(width: 4, height: 4, length: 4
我尝试使用 SceneKit 创建一个虚拟房间并放入一个盒子。此外,我还创建了一个带有相机的单独节点,名为“cameraOrbitNode”(相机位于房间的墙壁和盒子之间)。主要目标是在房间内的盒子周
我正在尝试将一个简单的文本标签放在一个(希望是所有类型的)内置 SCNGeometry 形状上,因为它们在屏幕上移动。我最接近成功的是通过 .firstMaterial.diffuse.content
修改后的问题: 我不明白为什么白色节点在它是盒子或球体时居中,但在它是文本时却不居中。您可以注释/取消注释 whiteGeometry 变量以查看每个不同几何图形的显示方式。我原本以为我必须通过确定框
这段代码摘录(场景、相机、灯光等。从代码中截取)在 iOS 模拟器上以 Swift 运行: let boxNode = SCNNode() // Create a box bo
SCNBox 是否可以为 Material 使用不同的颜色,然后覆盖颗粒状纹理?净效果使您可以有效地创建无限数量的不同颜色的纹理,而仅使用单个图像。 SceneKit 可以做到这一点吗? 这个问题不同
我是一名优秀的程序员,十分优秀!