【问题标题】:Illuminate a rotating sphere from a specific point in xcode从xcode中的特定点照亮旋转球体
【发布时间】:2020-01-24 21:27:25
【问题描述】:

我已经开始开发一个应用程序,基本想法是显示一个用户可以旋转的球体。导入球体的 .dae 文件没有问题。 当我在场景图中添加任何类型的照明(全方位、区域、定向等)时,运行我的应用程序后,灯光只会照亮球体的一个特定部分并随球体旋转。 我希望能够旋转我的球体并让光线停留在特定的位置,这样我就可以产生与太阳和地球相似的效果。当球体旋转时,只有朝向太阳/光线的区域才会被照亮。

let scene = SCNScene(named: "art.scnassets/untitled")!

    let cameraNode = SCNNode()
    cameraNode.camera = SCNCamera()
    cameraNode.position = SCNVector3(x:0, y:0, z: 100)
    scene.rootNode.addChildNode(cameraNode)

    let sceneView = self.view as! SCNView
    sceneView.scene = scene
    sceneView.showsStatistics = true
    sceneView.backgroundColor = UIColor.white
    sceneView.allowsCameraControl = true

【问题讨论】:

  • 您是否为此使用SceneKit?我正要添加那个标签,但你真的没有这么说。 (如果你是,也许你应该自己添加它?就我个人而言,我认为应该添加 5 个标签而 2 会这样做,但在这种情况下,[iOS] 和 [swift] 真的不会命中那些专注于所涉及的实际框架的那些。如果你不知道这一点,SceneKit 是 Apple 的 3d 图形框架,可能会做你想做的事。
  • 好点,是的,我正在使用 SceneKit。
  • 您只是在使用默认的相机控件吗?在这种情况下,您将旋转整个场景而不仅仅是球体。
  • 默认相机控件是什么意思?我包含了我到目前为止编写的代码。

标签: ios swift scenekit


【解决方案1】:

您可能正在将灯光节点添加为球体的子节点,因此当球体旋转时,灯光也会随之旋转。 尝试将灯光添加到球体的父节点,以使灯光保持在同一位置,因为您将仅随球体旋转,而不随灯光旋转。

【讨论】:

  • 好的,有道理。我的球体没有父节点,我尝试创建一个父节点并将球体添加为子节点,但我无法将 SCNScene(我的球体是)作为子节点添加到父节点(无法转换类型的值'SCNScene' 到预期的参数类型'SCNNode')
  • 您可以将您的节点从场景中取出,使其保持不变,然后将其添加到父节点。让它像这样让常量:``` let mySphere = SCNScene(named: "art.scnassets/sceneName.scn")?.rootNode.childNode(withName: "sphere", recursive: false)``` 然后你可以像这样将它添加到父节点:parentNode.addChildNode(mySphere) 然后你将把你的光添加到同一个父节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
相关资源
最近更新 更多