ARKitで光を当てるときはひとつよりも複数が良い
今日新しい発見をしたので忘れない様にメモしておく。
困ってたこと
ARKitで配置した3Dオブジェクトにomniタイプ(電球の光)のSCNLightを設定して、光を当てたときに影が強すぎると感じていた。
具体的にはこんな感じ。
しかし、影が強すぎるからといって光を当てないと、のっぺりした様に見えリアルさが欠けてしまう。
具体的にはこんな感じ。
そんなときはライトを組み合わせよう!
ARKit(SceneKit)では複数SCNLightを配置できるらしく、ambientタイプ(全ての面を一定に照らす光)とomniタイプのSCNLightを配置するといい感じになった。
具体的にはこんな感じ。
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アプリ開発をしたい方向けに情報をまとめていますので、こちらもご参照ください。
Author And Source
この問題について(ARKitで光を当てるときはひとつよりも複数が良い), 我々は、より多くの情報をここで見つけました https://qiita.com/noby111/items/635e9b903435630fee07著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .