Tag: 场景套件

父节点旋转期间,SceneKit子节点位置未更改

我试图在SceneKit中重新编码摄像头pipe理。 为此,我使用UIPanGestureRecognizer围绕一个物体(在这种情况下围绕场景的中心)旋转相机。 接下来,我得到不同的比例或长度来确定在相机所在的虚拟球体的轴(X,Y,Z)上添加的angular度(cameraOrbit in code)。 我的问题是,我使用相机的位置来确定在球体上添加的angular度。 但是这个位置是不变的。 当我改变球体旋转时,子节点相机的位置永远不会更新。 那么angular度不会改变。 import SceneKit import UIKit class SceneManager { private let scene: SCNScene private let view: SCNView private let camera: SCNNode private let cameraOrbit: SCNNode private let cameraRadius: Float init(view: SCNView, assetFolder: String, sceneName: String, cameraName: String, backgroundColor: UIColor) { self.view = view self.scene = SCNScene(named: (assetFolder + […]

如何用SwiftdebuggingSceneKit中的自定义几何

我正在尝试学习如何在SceneKit中创build自定义几何。 不过,我试图做一个三angular形,它没有显示任何东西。 我不知道如何debugging。 有没有办法找出三angular形是否有效? 我只是不知道从哪里开始。 有关参考,有关的操场代码如下。 请注意,它是针对Swift 4编写的,但Swift 3和Swift 4之间的变化非常小,以至于在Swift 3中编译它是微不足道的。 import UIKit import SceneKit let points = [ SCNVector3Make(0, 0, 0), SCNVector3Make(0, 10, 0), SCNVector3Make(10, 0, 0), ] let indices = [ 0,2,1, ] let vertexSource = SCNGeometrySource(vertices: points) let element = SCNGeometryElement(indices: indices, primitiveType: .triangles) let geo = SCNGeometry(sources: [vertexSource], elements: [element])

在3D中增加一条线?

参照这个问题 使用SceneKit在两点之间画一条线 我正在3D中绘制一条线,并希望通过使用此代码使其更厚 func renderer(aRenderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: NSTimeInterval) { //Makes the lines thicker glLineWidth(20) } 但它不工作,iOS 8.2。 有另一种方法吗? 更新 从文档 https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNSceneRendererDelegate_Protocol/index.html#//apple_ref/occ/intfm/SCNSceneRendererDelegate/renderer:updateAtTime : 我没有添加SCNSceneRendererDelegate和一个有效的线宽,但仍然无法获得线宽增加。

Scenekit PhysicEngine跟随滚动球

我想跟随苹果的SceneKit中的旋转球体。 我向相机添加了一个LookAt Constraint,当球体向下落下时,球体向下移动,但是如果球体滚开,相机将停留在当前位置。 我希望凸轮像第三人称射击者那样跟随这个球体,距离它有一段预定的距离。 如果我把凸轮做成球体的一个小球,凸轮就会在球滚动的时候围绕它旋转。 任何想法如何我可以跟随与凸轮球?

SceneKit相机,如何补偿欧拉规则(方向)的变化

也许这是一个math问题,但我希望有人能帮助我理解我将如何弥补我的相机的方向的变化。 我想要做的是能够使用类似游戏的控件来移动我的相机。 我有WSAD键设置为分别向前,向后,向左和向右移动相机。 我通过改变摄像机节点的位置vector的值来做到这一点。 我也有左右上下箭头键映射到转动和倾斜相机。 我通过调整摄像机节点的欧拉规则(俯仰和偏航)来做到这一点。 事情运作良好,直到我用左右箭头打开相机。 在按下W之后,将照相机朝向它所面向的方向移动,然后向其施加偏航。 这种行为对我来说是有道理的,但我无法弄清楚为了弥补我所应用的偏航,我需要对位置vector进行调整。 我是否需要通过新变换以某种方式乘以我的位置向量? 或者更好的是,有一些其他的财产,如枢轴,我可以改变,这样我可以保持我的位置代码相同? 感谢任何指针。 这里更新的是我正在使用的代码: public func displayTimerDidFire(timer: MyCustomDisplayTimer!) { if timer === cameraMoveTimer { var cameraTransform = cameraNode.transform var x = CGFloat(0.0) var y = CGFloat(0.0) var z = CGFloat(0.0) var step : CGFloat = 10.0 if moveUpKeyDown { y += step } if moveDownKeyDown { […]

SceneKit剔除飞机

我在SCNView中有一个SCNScene渲染。 我有一些在场景中呈现/移动的* .dae模型。 我有一个透明的立方体,当我的一个模型落在它后面时,我希望模型不被渲染,因为此刻立方体是透明的,可以通过立方体看到它。 是否有任何属性/设置/着色器可以应用到透明立方体,以便它后面的任何东西都不被渲染? 例: 我的眼睛是绿色的圆点,立方体是蓝色的方形,我的模型是红色的圆圈,然而,立方体隐藏的圆圈部分是紫色的……这实际上是隐形的。 蓝色的广场也是不可见的。 这个开发者有一个遮挡着色器,它可以做我需要的,但它是Unity: https : //youtu.be/MK3D91kCKzM 亲切的问候 克里斯

iOS的SceneKit霓虹灯发光

一直在看Scenekit的照明,而我现在可以应用一个照明节点来点亮一些东西,我正在寻找一种方法来从一个对象内部点亮。 举一个例子,想像一下霓虹灯,或者一个灯泡,将光线投射到其他物体上。 任何想法如何实现这一目标? 非常感谢。