English 中文(简体)
现实 Kit: Incorrect Consequences with Directional Light
原标题:RealityKit: Incorrect Shadows with Directional Light

我在<代码>RealityKit和DirectionalLight上存在阴影问题。

在对我的。 与此有关的问题,I 下载了Xcode Project,其中介绍了RealityKit中的灯基础。 它非常简单。

该样本项目中使用的一个实例是<代码>DirectionalLight,这对像太阳这样的照明非常有益。

我在阅读过程中研究了<代码>DirectionalLight的选项,并增加了一个外面面:

https://i.stack.imgur.com/OouoD.png” rel=“nofollow noreferer”>“Xcode

这里要指出:

private func addDirectionalLight() {
        let directionalLight = DirectionalLight()
        directionalLight.light.intensity = 100000
        directionalLight.shadow?.maximumDistance = 5
        directionalLight.shadow?.depthBias = 1
        directionalLight.look(at: [0, 0, 0], from: [-50, 20, 0], relativeTo: nil)
        
        addLight(directionalLight)
    }

I made the intensity of it pretty high so you can easily see the light (white part) vs the shadows (non-white part).

我随后去了我自己的项目。

我想建立一个方向灯光灯,以达到与太阳相近的效果。 我认为,这样做是容易的。 我只想看抽样项目是如何做的,并作调整。

...... 我尝试建立我自己的照明设施如下:

let directionalLight = DirectionalLight()
        directionalLight.light.intensity = 100000
        directionalLight.shadow?.maximumDistance = 3
        directionalLight.look(at: [0, 0, 0], from: [0, 100, 1200], relativeTo: nil)
        // directionalLight.orientation = simd_quatf(angle: .pi/2, axis: [0, 1, 0])
        
        lightAnchor.addChild(directionalLight)

www.un.org/spanish/ga/president

适用于物体的结果:

https://i.stack.imgur.com/aaw0u.jpg” rel=“nofollow noreferer”>“Xcode

你们是否注意到什么? 我在此盘旋。 如同灯光一样,它适用于每个物体,而不考虑另一个物体在那里的事实。

在现实生活中,除了目前存在的阴影之外,还将从山顶上排出一个阴影。 查看第一个图像并预示其是第二张照片中最大的圆柱。 是的,灯塔击中的后部有阴影,但ALSO在飞机上却有阴影。

我极为混淆。

我所认为的唯一一点是,第一个图像具有一个规模,即光电中心的面积大约为3米宽......而我的第二个形象则大得多。 该箱宽150米。

但是,这不应影响照明、正确吗? 我不认为应该这样做。 我的<代码>DirectionalLight状况不佳? 我不理解它会怎样做,因为它打上了盒子和圈子。

我只想像第一个形象那样的阴影,但出于某种原因,我无法做到这一点。

我确实需要这方面的一些帮助。 如果有人能的话,那将是令人吃惊的。

此外,《美好前景日》:

<>strong>EDIT 1/2:

我改用了我的实际模式(仅是一大美元Z,第一个照片只是使用实例片)和照明法。

let directionalLight = DirectionalLight()
        directionalLight.light.intensity = 10000
        directionalLight.shadow?.depthBias = 0.5
        directionalLight.shadow?.maximumDistance = 3
        directionalLight.orientation = simd_quatf(angle: -.pi/5, axis: [1, 0, 0])
        
        lightAnchor.addChild(directionalLight)

由此可见:

“Xcode>>>

它看着哪一种 we。 我已尝试研究这些文件,但我仍然不理解我为什么不享有这一权利。

<EDIT 2/2:

我发现了另一个与<代码>有关的有趣财产。 PerspectiveCamera。

在认为我模式的较大层面对缺乏影子产生了影响之后,我将模型缩小了相当大的规模。

这实际上部分解决了这一问题。 我现在可以看到我模式中某些部分的阴影:

https://i.stack.imgur.com/kloob.jpg” rel=“nofollow noreferer”>“Xcode<>>>>

I then moved the PerspectiveCamera that I created back from the model a bit:

“Aeckshot>

你们必须在这里仔细研究。 对比两种照片。 在变化非常清楚的情况下,我循环了模式的一个特定部分。 阴影已经移动,甚至消失。

在我修改<代码>OfViewInDegrees时,情况也是如此。

这是非常奇怪的行为。 为什么照相机会根本影响阴影? 招标环境? 任何解决办法?

我确实没有想法要做什么,我担心。 尤其是因为我要将照相机(或模型)在外移动和循环。 我也想谈谈<代码>DirectionalLight的立场。

问题回答

Shadows in iOS RealityKit

利用该法典制造阴影。 “RealityKit”的影子质量不会受到批评。 这些阴影难以与基谢基特的影子相比较,比玛雅或电影4D等3D作者工具的影子少得多。 不幸的是,RealityKit为定制影子提供了很少的选择。

import SwiftUI
import RealityKit

struct ContentView : View {
    var body: some View {
        ARViewContainer().ignoresSafeArea()
    }
}

“entergram

struct ARViewContainer : UIViewRepresentable {

    let arView = ARView(frame: .zero)
    let cube = ModelEntity(mesh: .generateBox(size: 1))
    let ball = ModelEntity(mesh: .generateSphere(radius: 0.3))
    let mat = SimpleMaterial(color: .gray, roughness: 1, isMetallic: false)
    
    init() {
        cube.model?.materials = [mat]
        ball.model?.materials = [mat]
    }        
    func makeUIView(context: Context) -> ARView {
        arView.cameraMode = .nonAR
        ball.position.y = 0.55
        
        let sun = DirectionalLight()
        sun.orientation = simd_quatf(angle: -.pi/4, axis: [1, 1.2, 0])
        sun.light.intensity = 12_000
        sun.shadow = DirectionalLightComponent.Shadow()
        sun.shadow?.maximumDistance = 3
        sun.shadow?.depthBias = 0.5
                
        let anchor = AnchorEntity()
        anchor.orientation = simd_quatf(angle: .pi/3, axis: [1, 0, 0])
        anchor.addChild(sun)
        anchor.addChild(cube)
        anchor.addChild(ball)
        arView.scene.anchors.append(anchor)
        return arView
    }
    func updateUIView(_ view: ARView, context: Context) { }
}




相关问题
How to change out-of-focus text selection color in Xcode?

Okay, I ll bite. I ve got really pleasant code/window colors set up in Xcode. Ordinarily, my selection color is very visible. When I am doing a project search and iterating through the results, ...

Iphone NSTimer Issue

Hi I am new to objective c. I am trying to make an app for iphone. I have a button on my view, and the click on which the function playSound is called. This is working properly. It does plays the ...

Include a .txt file in a .h in C++?

I have a number of places where I need to re-use some template code. Many classes need these items In a .h could I do something like: #include <xxx.txt> and place all of this code in the ....

Iterating over string/strlen with umlauted characters

This is a follow-up to my previous question . I succeeded in implementing the algorithm for checking umlauted characters. The next problem comes from iterating over all characters in a string. I do ...

Xcode open two editor windows with same file

Is it possible to open the same file in two separate windows in Xcode. I can open a file in one window and the same file in the main Xcode editor window, but I wanted two separate fulltime editor ...

Forcing code signing refresh in Xcode

In our environment, we share resources across multiple projects and platforms. When building for iPhone, only a subset of those resources are needed. Since that subset is still considerable, we have ...

热门标签