gpt4 book ai didi

ios - 如何在 SceneKit 的 sceneView 中正确地为阴影添加定向光?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:17 26 4
gpt4 key购买 nike

我正在学习 ARKit。我在增强现实场景中放置虚拟对象并在这些问题上苦苦挣扎!

I am using this demo project from github

1- 如何在 SceneKit 的 SceneView 中为所有(单独的)节点仅添加一个定向光并随相机位置移动定向光?这样我添加的阴影也可以随着光线的方向移动。

如果我翻译对象阴影正常工作。但是如果我现在旋转物体,阴影不应该在计划中移动。它们在移动,因为光在固定位置。

2- 只有在我只在平面上添加一个对象的情况下,阴影才会看起来不错。但是,如果我添加两个或更多对象,则会在 SceneView 中添加更多定向灯。现在每个物体都有不止一个阴影。我希望它只限制一个影子。

enter image description here enter image description here

我在 sceneKit 编辑器中添加了光影平面。 (不是以编程方式)。这是我的 scenekit 编辑器的屏幕截图。

enter image description here enter image description here

3- 我已阅读并确认仅当我将方向光属性设置为 deffered 时才会添加阴影。但在这种情况下,如果我调用从 sceneView 的根节点中删除所有节点,应用程序就会崩溃。我的删除节点代码是。

self.sceneView.scene.rootNode.enumerateChildNodes { (node, stop) -> Void in
node.removeFromParentNode()
print("removed ", node.name as Any)
}

您可以观看我的应用程序视频以获得更多许可。 Apps video, How it is working now

我的要求是只为每个对象添加一个阴影。当我旋转和平移对象时,阴影应该看起来很真实。

我也尝试过从花瓶的 scn 文件中删除光,并添加一个单独的 light.scn 文件,其中只有光。在sceneView中添加了这两个(花瓶和灯)节点。但是没有影子出现。

最佳答案

  1. 方向光仅从着色器中解释它们的方向(从 Xcode 中的节点发出的一个浅红色矢量)。光的位置在哪里并不重要。定向光通常用于模拟太阳光。

  2. 我实现了一个类似的项目,所以这是我的尝试。当我初始化 SCNScene 时,我从一个单独的 SCN 文件向场景添加了一个定向光。我的设置:

    • castsShadow: true
    • mode: deferred(如果我从场景中移除我的对象,我的应用程序不会崩溃:/)

实际上这就是让它在我的项目中工作。关于您的飞机的一件事:我认为您没有在飞机上禁用 castsShadow。因此用户可以看到飞机。

编辑:我可以重现崩溃。移除定向光时确实会发生这种情况。这就是为什么应用程序没有在我的项目中崩溃。所以你可以像我一样做,例如在 viewDidLoad() 中添加定向光。

关于ios - 如何在 SceneKit 的 sceneView 中正确地为阴影添加定向光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com