SceneKit:更改 SceneKit 文本的 pivot/axis
SceneKit: Changing the pivot/axis of SceneKit text
我通过使用 Interface Builder 将 3D 文本拖到场景中创建了这个 SceneKit 文本。
它是这样创建的:
轴在左下方。有没有办法使用界面生成器使轴在该文本上居中?
不在场景编辑器中。
在代码中,您可以通过检查边界框更改节点的枢轴以匹配其几何图形的中心点。例如:
func centerPivot(for node: SCNNode) {
var min = SCNVector3Zero
var max = SCNVector3Zero
node.getBoundingBoxMin(&min, max: &max)
node.pivot = SCNMatrix4MakeTranslation(
min.x + (max.x - min.x)/2,
min.y + (max.y - min.y)/2,
min.z + (max.z - min.z)/2
)
}
更新 swift 4
let min = node.boundingBox.min
let max = node.boundingBox.max
node.pivot = SCNMatrix4MakeTranslation(
min.x + (max.x - min.x)/2,
min.y + (max.y - min.y)/2,
min.z + (max.z - min.z)/2
)
我通过使用 Interface Builder 将 3D 文本拖到场景中创建了这个 SceneKit 文本。
它是这样创建的:
轴在左下方。有没有办法使用界面生成器使轴在该文本上居中?
不在场景编辑器中。
在代码中,您可以通过检查边界框更改节点的枢轴以匹配其几何图形的中心点。例如:
func centerPivot(for node: SCNNode) {
var min = SCNVector3Zero
var max = SCNVector3Zero
node.getBoundingBoxMin(&min, max: &max)
node.pivot = SCNMatrix4MakeTranslation(
min.x + (max.x - min.x)/2,
min.y + (max.y - min.y)/2,
min.z + (max.z - min.z)/2
)
}
更新 swift 4
let min = node.boundingBox.min
let max = node.boundingBox.max
node.pivot = SCNMatrix4MakeTranslation(
min.x + (max.x - min.x)/2,
min.y + (max.y - min.y)/2,
min.z + (max.z - min.z)/2
)