jsk-ros-pkg / jsk_model_tools

JSK model utilities
https://github.com/jsk-ros-pkg/jsk_model_tools
BSD 3-Clause "New" or "Revised" License
6 stars 29 forks source link

VRMLから変換したeusモデルが暗い #59

Closed mmurooka closed 9 years ago

mmurooka commented 10 years ago

(他のロボットでは未確認ですが)HRP2のeusモデルがrbrainのものに比べて暗い感じがします. irtviewerをキャプチャしたロボットの図が見づらくて直したいので,何かヒントを頂けたら作業してみようと思います.

k-okada commented 10 years ago

make cube しても暗いかな? simplerobotは暗いかな. HRP2オンリーの話ならコンバートですね. その場合,HRP2だけでしょうか?PR2など(ちょっと経路が違うロボット)も暗いでしょうか? GLでdiffuse/ambientとか色々セットしている部分があると思うけど,そこの値を替えたらいいともいます. その部分だけコピペして貼りつけていてください.

2014-09-14 21:25 GMT+09:00 Masaki Murooka notifications@github.com:

(他のロボットでは未確認ですが)HRP2のeusモデルがrbrainのものに比べて暗い感じがします. irtviewerをキャプチャしたロボットの図が見づらくて直したいので,何かヒントを頂けたら作業してみようと思います.

— Reply to this email directly or view it on GitHub https://github.com/jsk-ros-pkg/jsk_model_tools/issues/59.

mmurooka commented 10 years ago

make-cubeはirteus,rbrainで同じようでした. PR2は少しだけrbrainの方が暗い気がしなくもないですが,HRP2ほどではないです. 変換の問題のような気がします.

screenshot_from_2014-09-17 12 04 36 screenshot_from_2014-09-17 12 06 00

SampleRobotはrbrainでは変換されていないようですが,irteusでは暗いように見えます screenshot_from_2014-09-17 12 13 18

snozawa commented 10 years ago

PR2では色が適切なようにみえるので、 vrml=>collada=>euslisp の経路をたどっているロボットの色が暗いようですね。

YoheiKakiuchi commented 10 years ago

返事遅くなりましたが、eusのデフォルトのlightが暗いのが根本原因かと思います。 https://github.com/euslisp/EusLisp/blob/master/lisp/opengl/src/glview.l#L191-L205

メッシュの変換自体は、diffuse/ambientはもとのメッシュの値をそのまま変換し表示しようとしています。 明るく見えるメッシュは、もともと diffuse == ambient になっていたりするものです。

内部的な話だと、pickviewは以下のようにlightの設定を上書きしています。

  (:gllight 
   (&key (light_ambient (float-vector 0.1 0.1 0.1 1.0))
         (light_diffuse (float-vector 1.0 1.0 1.0 1.0))
         (light_specular (float-vector 0.1 0.1 0.1 1.0))
         (light0_position (float-vector 4000.0 3000.0 2000.0 0.0))
         (light1_position (float-vector -4000.0 -2000.0 0.0 0.0))
         (light2_position (float-vector -2000.0 -2000.0 8000.0 0.0))
         (light1_scale 0.7) (light2_scale 0.4))
    (let ()
      (glLightfv GL_LIGHT0 GL_AMBIENT light_ambient)
      (glLightfv GL_LIGHT0 GL_DIFFUSE light_diffuse)
      (glLightfv GL_LIGHT0 GL_SPECULAR light_specular)
      (glLightfv GL_LIGHT0 GL_POSITION light0_position)

      (glLightfv GL_LIGHT1 GL_AMBIENT (scale light1_scale light_ambient))
      (glLightfv GL_LIGHT1 GL_DIFFUSE (scale light1_scale light_diffuse))
      (glLightfv GL_LIGHT1 GL_SPECULAR (scale light1_scale light_specular))
      (glLightfv GL_LIGHT1 GL_POSITION light1_position)

      (glLightfv GL_LIGHT2 GL_AMBIENT (scale light2_scale light_ambient))
      (glLightfv GL_LIGHT2 GL_DIFFUSE (scale light2_scale light_diffuse))
      (glLightfv GL_LIGHT2 GL_SPECULAR (scale light2_scale light_specular))
      (glLightfv GL_LIGHT2 GL_POSITION light2_position))
    )
k-okada commented 10 years ago

https://github.com/euslisp/EusLisp/blob/master/lisp/opengl/src/glview.l#L41 たりのデフォルト値を変えるといいのかな?

2014-09-17 14:50 GMT+09:00 Yohei Kakiuchi notifications@github.com:

返事遅くなりましたが、eusのデフォルトのlightが暗いのが根本原因かと思います。

https://github.com/euslisp/EusLisp/blob/master/lisp/opengl/src/glview.l#L191-L205

メッシュの変換自体は、diffuse/ambientはもとのメッシュの値をそのまま変換し表示しようとしています。 明るく見えるメッシュは、もともと

内部的な話だと、pickviewは以下のようにlightの設定を上書きしています。

(:gllight (&key (light_ambient (float-vector 0.1 0.1 0.1 1.0)) (light_diffuse (float-vector 1.0 1.0 1.0 1.0)) (light_specular (float-vector 0.1 0.1 0.1 1.0)) (light0_position (float-vector 4000.0 3000.0 2000.0 0.0)) (light1_position (float-vector -4000.0 -2000.0 0.0 0.0)) (light2_position (float-vector -2000.0 -2000.0 8000.0 0.0)) (light1_scale 0.7) (light2_scale 0.4)) (let () (glLightfv GL_LIGHT0 GL_AMBIENT light_ambient) (glLightfv GL_LIGHT0 GL_DIFFUSE light_diffuse) (glLightfv GL_LIGHT0 GL_SPECULAR light_specular) (glLightfv GL_LIGHT0 GL_POSITION light0_position)

  (glLightfv GL_LIGHT1 GL_AMBIENT (scale light1_scale light_ambient))
  (glLightfv GL_LIGHT1 GL_DIFFUSE (scale light1_scale light_diffuse))
  (glLightfv GL_LIGHT1 GL_SPECULAR (scale light1_scale light_specular))
  (glLightfv GL_LIGHT1 GL_POSITION light1_position)

  (glLightfv GL_LIGHT2 GL_AMBIENT (scale light2_scale light_ambient))
  (glLightfv GL_LIGHT2 GL_DIFFUSE (scale light2_scale light_diffuse))
  (glLightfv GL_LIGHT2 GL_SPECULAR (scale light2_scale light_specular))
  (glLightfv GL_LIGHT2 GL_POSITION light2_position))
)

— Reply to this email directly or view it on GitHub https://github.com/jsk-ros-pkg/jsk_model_tools/issues/59#issuecomment-55851671 .

mmurooka commented 9 years ago

メモ.

(dolist (l (list gl:*light0* gl:*light1* gl:*light2*))
  (warn "~a ~a~%~a ~a~%~a ~a~%~a ~a~%"
        :ambient (send l :ambient)
        :diffuse (send l :diffuse)
        :specular (send l :specular)
        :position (send l :position)))

;; irteus
:ambient #f(0.2 0.2 0.2 1.0)
:diffuse #f(0.6 0.6 0.6 1.0)
:specular #f(0.4 0.4 0.4 1.0)
:position #f(1.0 2.0 1.5 0.0)
:ambient #f(0.1 0.1 0.1 1.0)
:diffuse #f(0.2 0.2 0.2 1.0)
:specular #f(0.4 0.4 0.4 1.0)
:position #f(-1.0 -2.0 0.0 0.0)
:ambient #f(0.1 0.1 0.1 1.0)
:diffuse #f(0.2 0.2 0.2 1.0)
:specular #f(0.4 0.4 0.4 1.0)
:position #f(-1.0 -2.0 -1.0 0.0)

;; rbrain
:ambient #f(0.2 0.2 0.2 0.0)
:diffuse #f(0.5 0.5 0.5 0.0)
:specular #f(0.3 0.3 0.3 0.0)
:position #f(0.0 0.0 1.0 0.0)
:ambient #f(0.3 0.3 0.3 1.0)
:diffuse #f(0.6 0.1 0.1 0.8)
:specular #f(0.3 0.3 0.3 1.0)
:position #f(5000.0 1000.0 7000.0 1.0)
:ambient #f(0.3 0.3 0.3 1.0)
:diffuse #f(0.1 0.1 0.7 0.0)
:specular #f(0.3 0.3 0.3 1.0)
:position #f(-15000.0 0.0 2000.0 1.0)
mmurooka commented 9 years ago

irteusのlightの設定は以下でやっているようです. https://github.com/euslisp/jskeus/blob/master/irteus/irtviewer.l#L96-L113 // Issue切るリポジトリ大外れでした.

rbrainと同じ値に書き換えたらさらにダークになってしまった.どうしてでしょう.. screenshot_from_2014-09-24 12 27 38

k-okada commented 9 years ago

diffuse がおかしいですよね.何でこうなっているのかね.三方向からRGBを照射して白く見せる,みたいな事をしたかったのかな?  @fkanehiro さん.なにかご存知だったりしますか?

mmurooka commented 9 years ago

lightのパラメータを以下のように手動で調整してHRP2が明るく表示されるようにしたのですが, 今度はPR2が明るすぎるように思います. (このスレッドの上の方に現状でのキャプチャがあります.)

やはり,ビューア側ではなくロボットモデル側の問題かもしれない気がしてきています.

     (setq gl::*light0* 
           (instance gl::lightsource :create 0
                     :ambient (float-vector 0.4 0.4 0.4 0.0)
                     :diffuse (float-vector 1.0 1.0 1.0 1.0)
                     :specular (float-vector 0.3 0.3 0.3 0.0)
                     :position (float-vector 0.0 0.0 1.0 0.0)))
     (setq gl::*light1*
           (instance gl::lightsource :create 1
                     :ambient (float-vector 0.5 0.5 0.5 1.0)
                     :diffuse (float-vector 1.0 1.0 1.0 1.0)
                     :specular (float-vector 0.5 0.5 0.5 1.0)
                     :position (float-vector 500.0 1000.0 700.0 1.0)))
     (setq  gl::*light2*
            (instance gl::lightsource :create 2
                      :ambient (float-vector 0.5 0.5 0.5 1.0)
                      :diffuse (float-vector 1.0 1.0 1.0 1.0)
                      :specular (float-vector 0.5 0.5 0.5 1.0)
                      :position (float-vector -500.0 0.0 200.0 1.0)))

screenshot_from_2014-09-24 13 31 36

garaemon commented 9 years ago

euslibのモデルをirteusに変換して、それらが同じように表示されるなら、vrmlとかの変換でどこかミスっている気がします

2014年9月24日水曜日、Masaki Murookanotifications@github.comさんは書きました:

lightのパラメータを以下のように手動で調整してHRP2が明るく表示されるようにしたのですが, 今度はPR2が明るすぎるように思います. (このスレッドの上の方に現状でのキャプチャがあります.)

やはり,ビューア側ではなくロボットモデル側の問題かもしれない気がしてきています.

 (setq gl::*light0*
       (instance gl::lightsource :create 0
                 :ambient (float-vector 0.4 0.4 0.4 0.0)
                 :diffuse (float-vector 1.0 1.0 1.0 1.0)
                 :specular (float-vector 0.3 0.3 0.3 0.0)
                 :position (float-vector 0.0 0.0 1.0 0.0)))
 (setq gl::*light1*
       (instance gl::lightsource :create 1
                 :ambient (float-vector 0.5 0.5 0.5 1.0)
                 :diffuse (float-vector 1.0 1.0 1.0 1.0)
                 :specular (float-vector 0.5 0.5 0.5 1.0)
                 :position (float-vector 500.0 1000.0 700.0 1.0)))
 (setq  gl::*light2*
        (instance gl::lightsource :create 2
                  :ambient (float-vector 0.5 0.5 0.5 1.0)
                  :diffuse (float-vector 1.0 1.0 1.0 1.0)
                  :specular (float-vector 0.5 0.5 0.5 1.0)
                  :position (float-vector -500.0 0.0 200.0 1.0)))

[image: screenshot_from_2014-09-24 13 31 36] https://cloud.githubusercontent.com/assets/6636600/4383486/b98cc072-43a3-11e4-88da-100a5fcaed4e.png

— Reply to this email directly or view it on GitHub https://github.com/jsk-ros-pkg/jsk_model_tools/issues/59#issuecomment-56623827 .

from iPhone