SCNLighのspotLightについて

展示室クリエーターの最後の仕上げをしているんだけど、以下の問題に突き当たってしばらく停滞してた。

一つの作品にスポットライトを当てて、より視覚効果をあげようとしたんだけど、アプリを作り込んでいる時は問題なく点灯し、「おお、いいじゃん」って満足してた。
最終テストの段階で、多数のスポットライトを点灯すると、挙動がおかしいことに気づいた。
具体的には、新たにスポットライトを作って点灯しても点灯しなかったり、点灯しても他の点灯しているはずのスポットライトが消灯したりする。
挙動に規則性があるとバグも見つけやすいんだけど、一定しないし、プログラムを見直してもどうしても原因がわからず…

ライト関係にたとえば個数に何か制約があるのかとネットで調べてもそれらしいことは何もわからず、ただ、ポイントライトは処理への負荷が大きいという記事があった。まあ、確かに処理がいる機能だとは思う。
もしそうだとすると、アプリの面白さがだいぶ減じてしまうな。最大59枚の作品を仮想展示室に掲示できるけど、ほとんどがスポットライトを当てることができないということか。数枚の掲示の時の機能に限られる。

で、何箇所でおかしくなるかシミュレーターと実機で確認してみた。
環境光の種類で違ってくる。
環境光(.omni)→ スポットライト3個を超えると挙動がおかしくなる。
環境光(.ambient)→ スポットライト7個を超えると挙動がおかしくなる。

.omniにすると立体感が出て使っていたんだけど、.ambientにすると画面がのっぺりした感じになってしまうんだよね。
はいはい、そこは現場合わせ。できないものをグダグダ考えても前に進まないので、プログラム的に切り替えることにした。

スポットライトを使わない時 → 環境光(.omni)
スポットライト1〜3個 → 環境光(.omni)
スポットライト4〜7個 → 環境光(.ambient)
スポットライトは最大7個までの制限をつける。

自分的にはかなり残念だけど、仕方なし。ハード・ソフトの進展を待つしかないか。
他に原因があるのならごめんなさいだな。

Author: muusophia

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です