[choreonoid-users-ja 00241] Re: VisionSensorで得られるPointCloudのRGB明るさ

中岡 慎一郎 s.nakaoka @ aist.go.jp
2017年 4月 11日 (火) 11:33:58 JST


升谷先生

> GLVisionSimulatorのプロパティの「ヘッドライト」はtrueになっています.
> 点光源ではなく「平行光線」なので,床面と視線が平行になると床面が暗くな
> るということですね.モデルとしてそうなるのは納得できました.カメラから
> の点光源にするとか,(太陽光のような)上空からの平行光線の方が自然では
> ないでしょうか.

一般的な話としては、3Dのビューアやモデラ等で、3Dモデルの表示にはこのような視線方向の並行光源をデフォルトで用意することが多いです。視線方向であれば少なくとも見ているところは明るく表示されますし、並行光源だと処理が軽くて結果も分かりやすいですから(例えて言えば、透視投影に対する正射影投影のようなものでしょうか。)

上方からの光源については、シーンビューについてはデフォルトで設定しています。設定ダイアログの「ワールドライト」がそれにあたります。ただしGLVisionSimulatorItemのシミュレーションではこれは引き継がれないようになっています。そこが分かりにくかったかもしれません。

いずれにしても、デフォルトの光源は簡単に使えるようにするための簡易的なものですので、それ以上のものが必要でしたら、モデル(シーン)に明示的に光源を設定するということになります。

> 「追加のライト」もtrueになっています.「モデルに含まれる光源」は,どこ
> にどのように記述すればいいのでしょうか?

例えばサンプルのTankJoystick.cnoidというプロジェクトでは、戦車型のロボットの砲身方向にライトをつけています。モデルファイルはtank.wrlというファイルで、ここに"SpotLightDevice"というノードを記述しています。このような記述でモデルにライトを含めることができます。ただしこれはロボットの「デバイス」として含めたい場合で、その場合On/Offとかを制御できたりします。

単に光源として含めればよいのであれば、例えば通常のVRMLのノードとしてもDirectionalLight、PointLight、SpotLightといった光源のノードが定義されていますので、それに従って記述していただければOKです。
http://tecfa.unige.ch/guides/vrml/vrml97/spec/part1/nodesRef.html

> ファイル→読み込み→OpenHRPモデルファイルで,添付していただいた
> 「DownLight.wrl」を読み込むと,床面が明るくなりました.このように別に
> 光源を定義するファイルが必要ということですね?

ここではそうしましたが、例えば環境モデルに予め組み込んでおくという手もあるかと思います。

あとは今後光源のみを追加するためのLightingItemみたいなアイテムも追加しようと思います。

> 「DownLight.wrl」の導入によって,シーンビューの見え方も変化しました.
> しかし,カメラのヘッドライトはシーンビューの見え方には関係ないようです.
> また,シーンビューには全体を明るくするような光源も設定されているようで
> す.

シーンビューについては、上述のようにデフォルトで「ワールドライト」がオンになっていて、これが「全体を明るくする光源」に相当するかと思います。こちらはシーンビューの設定ダイアログで無効化できます。ヘッドライトについても同様に「ヘッドライト」というチェックで無効化できます。

> そういう仕様なのかもしれませんが,シーンビューとGLVisionSimulatorの見
> え方が一致していないと混乱します.

これについてはご指摘のとおりで、シーンビューとビジョンシミュレータで設定を共有するための仕組みを今後考えたいと思います。

On 04/10/17 17:37, MASUTANI Yasuhiro wrote:
> 中岡様,
> 
> 大阪電通大の升谷です.
> 
> 返信ありがとうございます.
> 
> On Mon, 10 Apr 2017 15:18:06 +0900,
> 中岡 慎一郎 <s.nakaoka @ aist.go.jp> wrote:
>>
>>> カメラの方向によって環境の物体の明るさが変わるというのは,どのようなモ
>>> デルが想定されているのでしょうか?
>>
>> 実はデフォルトで、常に視線の方向に向けた並行光源となる「ヘッドライト」
>> なるものが使われるようになっています。これはGLVisionSimulatorアイテ
>> ムの「ヘッドライト」プロパティのtrue/falseで切り替えができます。
> 
> GLVisionSimulatorのプロパティの「ヘッドライト」はtrueになっています.
> 点光源ではなく「平行光線」なので,床面と視線が平行になると床面が暗くな
> るということですね.モデルとしてそうなるのは納得できました.カメラから
> の点光源にするとか,(太陽光のような)上空からの平行光線の方が自然では
> ないでしょうか.
> 
>> ヘッドライト以外の光源は、同アイテムの「追加のライト」がtrueになって
>> いると、モデルに含まれる光源はビジョンシミュレーションでも使用されま
>> す。ただし特にモデルに記述していなければ、通常はシーンに含まれる光源
>> はありません。あるいはロボットモデルがライトを搭載していても、上方か
>> ら下方に向けて照らす光源がなければ(そのようにライトを向けなければ)、
>> 床の表面は暗くなってしまいます。
> 
> 「追加のライト」もtrueになっています.「モデルに含まれる光源」は,どこ
> にどのように記述すればいいのでしょうか?
> 
>> そこで添付のような光源のモデルファイルを記述し、「ファイル」ー「イン
>> ポート」ー「VRML」で、シーンアイテムとしてWorld以下に読み込んでみて
>> ください。このアイテムのチェックを入れると、まずシーンビュー上のモデ
>> ル表示で床が明るくなるかと思います。
>>
>> そして、GLVisionSimulatorアイテムの「全てのシーンオブジェクト」を
>> trueにして、シミュレーションを行なって下さい。するとこの光源が有効と
>> なって、計測結果においても床が明るくなるかと思います。
> 
> ファイル→読み込み→OpenHRPモデルファイルで,添付していただいた
> 「DownLight.wrl」を読み込むと,床面が明るくなりました.このように別に
> 光源を定義するファイルが必要ということですね?
> 
> 「DownLight.wrl」の導入によって,シーンビューの見え方も変化しました.
> しかし,カメラのヘッドライトはシーンビューの見え方には関係ないようです.
> また,シーンビューには全体を明るくするような光源も設定されているようで
> す.
> 
> そういう仕様なのかもしれませんが,シーンビューとGLVisionSimulatorの見
> え方が一致していないと混乱します.
> 

-- 
中岡 慎一郎 <s.nakaoka @ aist.go.jp>
産業技術総合研究所 知能システム研究部門
ヒューマノイド研究グループ





choreonoid-users-ja メーリングリストの案内