Help us understand the problem. What is going on with this article?

ARKitで光を当てるときはひとつよりも複数が良い

More than 1 year has passed since last update.

今日新しい発見をしたので忘れない様にメモしておく。

困ってたこと

ARKitで配置した3Dオブジェクトにomniタイプ(電球の光)のSCNLightを設定して、光を当てたときに影が強すぎると感じていた。
具体的にはこんな感じ。

IMG_0304.png

しかし、影が強すぎるからといって光を当てないと、のっぺりした様に見えリアルさが欠けてしまう。
具体的にはこんな感じ。

IMG_0303.png

そんなときはライトを組み合わせよう!

ARKit(SceneKit)では複数SCNLightを配置できるらしく、ambientタイプ(全ての面を一定に照らす光)とomniタイプのSCNLightを配置するといい感じになった。
具体的にはこんな感じ。

IMG_0302.png

omniタイプのSCNLightは位置によって影のつき方が変わるためpositionをちゃんと設定しないといけないが、ambientタイプのSCNLightはどこに配置しても光の当たり方は変わらないので自分はrootNodeのプロパティに設定してしまっている。

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set the view's delegate
        sceneView.delegate = self

        // Show statistics such as fps and timing information
        sceneView.showsStatistics = true

        // Create a new scene
        let scene = SCNScene()

        // Set the scene to the view
        sceneView.scene = scene

        // Setup Omni Light
        let omniLight = SCNLight()
        omniLight.type = .omni
        omniLight.intensity = 0
        omniLight.temperature = 0
        omniLight.castsShadow = true

        let omniLightNode = SCNNode()
        omniLightNode.light = omniLight
        omniLightNode.position = SCNVector3(0,10,1)
        sceneView.scene.rootNode.addChildNode(omniLightNode)

        // Setup Ambient Light
        let ambientLight = SCNLight()
        ambientLight.type = .ambient
        ambientLight.intensity = 0
        ambientLight.temperature = 0
        sceneView.scene.rootNode.light = ambientLight
    }

SceneKitを使ってARアプリ開発をしたい方向けに情報をまとめていますので、こちらもご参照ください。

noby111
ARKitを使って個人アプリ開発をしています。 最近はFIDOを勉強しています。
https://portfolio-e3de3.firebaseapp.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした