- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 SwiftUI 框架内的“SCNView”中有一个“SCNCylinder”。我的目标是围绕不同的轴并以不同的角度旋转圆柱体。我有两个(某种意义上的)按钮,它们接受用户的 180° 或 90° 输入。我想在不同的轴上旋转它们。我想将圆柱体围绕“SCNVector3(1,0,0)”旋转 180°,并围绕“SCNVector3(0,0,1)”旋转 90°。我已经制作了一个能够做到这一点的 Playground 。真正的问题是用相同的方法进行多次旋转。假设用户先点击 180°,然后点击 90°,我希望圆柱体执行相同的操作。但目前它可以旋转 180°,但当用户点击 90° 按钮时,它会随机旋转。
这是我的代码:
struct ContentView: View {
@State var rotationAngle: Angle = .degrees(0)
@State var rotationAngle2: Angle = .degrees(0)
var body: some View {
VStack{
HStack{
Text("180°").onTapGesture {
self.rotationAngle = .degrees(180)
}
Divider()
Text("90°").onTapGesture {
self.rotationAngle2 = .degrees(90)
}
}
SceneKitView(radius: 0.02, height: 2, angle: $rotationAngle, angle2: $rotationAngle2)
.position(x: 225.0, y: 175)
.frame(width: 300, height: 300, alignment: .center)
}
}
}
struct SceneKitView: UIViewRepresentable {
@Binding var angle: Angle
@Binding var angle2 : Angle
let cylindernode: SCNNode
init(radius: CGFloat, height: CGFloat, angle: Binding<Angle>, angle2: Binding<Angle>) {
let cylinder = SCNCylinder(radius: radius, height: height)
cylinder.firstMaterial?.diffuse.contents = UIColor.green
self.cylindernode = SCNNode(geometry: cylinder)
self.cylindernode.position = SCNVector3(0, 0, 0)
cylindernode.pivot = SCNMatrix4MakeTranslation(0, -1, 0)
self._angle = angle
self._angle2 = angle2
}
func makeUIView(context: UIViewRepresentableContext<SceneKitView>) -> SCNView {
let sceneView = SCNView()
sceneView.scene = SCNScene()
sceneView.autoenablesDefaultLighting = true
sceneView.allowsCameraControl = true
sceneView.scene?.rootNode.addChildNode(cylindernode)
return sceneView
}
func updateUIView(_ sceneView: SCNView, context: UIViewRepresentableContext<SceneKitView>) {
let rotation = SCNAction.rotate(by: CGFloat(angle.radians), around: SCNVector3(1, 0, 0), duration: 3)
let rotation2 = SCNAction.rotate(by: CGFloat(angle2.radians), around: SCNVector3(0, 0, 1), duration: 3)
print(angle.degrees)
print(angle2.degrees)
cylindernode.runAction(rotation)
cylindernode.runAction(rotation2)
}
}
请帮我解决这个问题。
最佳答案
我不确定如果你在同一个节点上运行两次会发生什么,但你可以通过这些函数“控制”你的动画:
例如
1.) 如果您希望动画并行运行
cylindernode.runAction(SCNAction.group([rotation, rotation2]))
2.) 如果您希望动画按顺序运行
cylindernode.runAction[SCNAction.sequence([rotation, rotation2]))
关于ios - 如何围绕多个轴并以不同角度旋转 SCNNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59343169/
我的场景中有一系列(平面)节点,我需要它们始终面向相机。 如何调整变换/旋转以使其正常工作? 另外,我在哪里进行计算? 目前我正在尝试在 SCNSceneRendererDelegate render
我正在构建一个应用程序,它使用 Scenekit 根据从数据库返回的信息显示场景。我创建了一个带有类 func 的自定义类,它创建了一个包含所有需要绘制的 SCNNode 并将其返回到我的 SCNVi
我想从动画 SCNNode 获取当前节点位置我知道 presentationNode 并且我尝试从那里提取位置形式,但没有运气 这是我的代码 SCNNode * pelvis = [_unit chi
我正在使用 Swift 和 ARKit。我可以使用 ARSCNFaceGeometry、ARFaceTrackingConfiguration 等成功显示和更新面部网格。头部没有移动(它看起来向用户)
我有一个适用于 iOS 的 sceneKit 应用程序。我有一个连接到 SCNNode 的 SCNPhysicsBody。我将 .physicsBody 设置为 nil,对 SCNNode 进行一些更
我有一个 SCNNode 的子类“ExSCNNode”,用于向 SCNNode 添加更多属性和行为。 class ExSCNNode : SCNNode { ... } 我用 ExSCNNode 构建
我正在尝试将 SCNLight 添加到 SceneKit 中的 SCNSphere (SCNNode)。它的效果令人惊叹,唯一的问题是 SCNLight 所连接的源球体是完全黑色的,因为作为源,它根本
因此,我能够在 anchor 位置放置一个框节点。现在,如何旋转场景中的 SCNNode? 我正在尝试修改节点的变换和 eulerAngles,但它们没有任何效果: func renderer(_ r
有人知道如何将 SCNMaterial 转换为表面而不改变 SCNMaterial 包含图像的方向吗? 我想创建包含图像的 ARKit SCNNode,然后将其转换为表面,因为我想在所选位置的表面区域
我正在研究 ARKit 和图像检测。现在我有一个应用程序可以检测图像并将平面放置在屏幕上检测到的对象所在的位置。 我怎样才能在飞机上添加一个像按钮一样的可点击元素。我想在每个检测到的对象上都有一个点击
我正在通过编写一个游戏来学习 SceneKit,在这个游戏中你飞过小行星场躲避物体。最初,我通过移动/旋转相机来做到这一点,但我意识到在某些时候我会用完坐标空间,最好将所有对象移向相机(并在我完成后处
我正在处理枢轴和位置已更改的子节点。我发现了很多SCNNode转换主题,但似乎没有一个能代表我的情况。 我有六个球:(不能发布超过 2 个链接,图片位于 i.stack.imgur.com/v3Lc4
我正在使用 Apple 的 SceneKit 并拥有自定义 .dae 资源。我已将资源转换为 .scn 文件。我正在从 .scn 文件中按名称获取 SCNNode。将 SCNNode 作为子节点放置在
我有以下情况。一个 SCNView,其中显示了一座桥的 .scn。在屏幕的左侧,您可以看到桥梁的视觉表示。 我想做以下事情。 在“模型浏览器”左侧选择一项 缩放到所选项目并聚焦 在提供的屏幕截图上。你
我在 SwiftUI 框架内的“SCNView”中有一个“SCNCylinder”。我的目标是围绕不同的轴并以不同的角度旋转圆柱体。我有两个(某种意义上的)按钮,它们接受用户的 180° 或 90°
我试图通过将其枢轴点设置为任何角来旋转 block ,但似乎设置枢轴点实际上重新定位了节点,使该点保持在原来的位置...... 例如 SCNBox *box = [SCNBox boxWithWidt
假设我有 2 个 SCNNodes node1 和 node2。 我希望 node1 的位置为 node1.position = SCNVector3(0, 0, 0) 我希望 node2 的位置为
我正在使用下面的代码创建一个盒子放置在我的 AR 场景中: let box = SCNBox(width: side, height: side, length: side, chamferRadiu
问题: 我试图让一个节点看着手机,无论手机的方向如何,节点的顶部始终指向手机的北极。假设节点位于中心,手机从 (0, 0, 10) 开始,并假设节点具有类似于手机的矩形几何形状。我希望该矩形的顶部始终
我有一个 scnnode,我使用 UIPanGestureRecognizer 围绕它的 Y 轴旋转。这很好,但我想对化身应用惯性,以便在用户抬起手指后它会一直旋转(并减速),有点像 ScrollVi
我是一名优秀的程序员,十分优秀!