首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RealityKit仅显示暗图像

RealityKit仅显示暗图像
EN

Stack Overflow用户
提问于 2019-07-11 17:50:26
回答 2查看 878关注 0票数 3

我正在开发一个带有ARKit 3和RealityKit的iOS应用程序。我想在包含图像的房间内创建虚拟的2d平面。因此我使用了

Adding a material to a ModelEntity programmatically

但不是近乎白色的图像会显示得非常暗,几乎是黑色。我也尝试过UnlitMaterial。它确实创造了一个更好的结果,但图像仍然是黑暗的。此问题在JPEG和PNG文件中仍然存在。

在使用SceneKit的早期版本中,我通过以下方式解决了类似的问题

代码语言:javascript
复制
sceneView.automaticallyUpdatesLighting = true
sceneView.autoenablesDefaultLighting = true

我猜图像确实通过这段代码照亮了自己。

如何在RealityKit中解决这个问题?

可能相关:https://forums.developer.apple.com/thread/119265

EN

回答 2

Stack Overflow用户

发布于 2019-10-15 17:31:29

您可以使用Reality Composer中每个.rcproject都包含的ARView自动照明功能。试试下面这段简单的iOS代码,看看它是如何工作的:

代码语言:javascript
复制
import ARKit
import RealityKit

class GameViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()

        arView.cameraMode = ARView.CameraMode.ar

        arView.renderOptions = [.disableMotionBlur,
                                .disableDepthOfField]

        arView.automaticallyConfigureSession = true

        var material = SimpleMaterial()
        material.tintColor = UIColor.yellow
        material.baseColor = try! MaterialColorParameter.texture(
                                          TextureResource.load(named: "yourImg.jpg"))
        material.roughness = MaterialScalarParameter(floatLiteral: 0.1)
        material.metallic = MaterialScalarParameter(floatLiteral: 1.0)

        let sceneElement = try! Experience.loadBox()
        sceneElement.scale = SIMD3<Float>(x: 0.5, y: 0.5, z: 0.5)
        sceneElement.position = SIMD3<Float>(x: 1, y: 0.5, z: 0)

        let mesh: MeshResource = .generateSphere(radius: 1.0)
        let component = ModelComponent(mesh: mesh,
                                 materials: [material])

        sceneElement.components.set(component)
        arView.scene.anchors.append(sceneElement)
    }
}

或者尝试类似的macOS代码:

代码语言:javascript
复制
import AppKit
import RealityKit

class GameViewController: NSViewController {

    @IBOutlet var arView: ARView!

    override func awakeFromNib() {

        arView.debugOptions = [.showStatistics,
                               .showPhysics]

        arView.environment.background = .color(ARView.Environment.Color.black)

        var material = SimpleMaterial()    
        material.tintColor = NSColor.yellow
        material.baseColor = try! MaterialColorParameter.texture(
                                          TextureResource.load(named: "yourImg.jpg"))
        material.roughness = MaterialScalarParameter(floatLiteral: 0.1)
        material.metallic = MaterialScalarParameter(floatLiteral: 1.0)           

        let sceneElement = try! TwoScenes.loadSecondScene()
        sceneElement.scale = SIMD3<Float>(x: 0.5, y: 0.5, z: 0.5)
        sceneElement.position = SIMD3<Float>(x: 1, y: 0.5, z: 0)

        let mesh: MeshResource = .generateSphere(radius: 1.0)
        let component = ModelComponent(mesh: mesh,
                                  materials: [material])

        sceneElement.components.set(component)
        arView.scene.anchors.append(sceneElement)
    }
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-30 21:02:45

代码语言:javascript
复制
 let img = UIImage(named: ouputSrc, in: Bundle(path: resourcePath), compatibleWith: nil)
                
  var myMaterial = UnlitMaterial()
  myMaterial.baseColor = try! .texture(.load(named: ouputSrc, in: Bundle(path: resourcePath)))
  myMaterial.tintColor = UIColor.white.withAlphaComponent(1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56986428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档